#ifndef __ASM_POWERPC_MPC5121_H__
#define __ASM_POWERPC_MPC5121_H__
struct mpc512x_reset_module {
u32 rcwlr;
u32 rcwhr;
u32 reserved1;
u32 reserved2;
u32 rsr;
u32 rmr;
u32 rpr;
u32 rcr;
u32 rcer;
};
struct mpc512x_ccm {
u32 spmr;
u32 sccr1;
u32 sccr2;
u32 scfr1;
u32 scfr2;
u32 scfr2s;
u32 bcr;
u32 psc_ccr[12];
u32 spccr;
u32 cccr;
u32 dccr;
u32 mscan_ccr[4];
u32 out_ccr[4];
u32 rsv0[2];
u32 scfr3;
u32 rsv1[3];
u32 spll_lock_cnt;
u8 res[0x6c];
};
struct mpc512x_lpc {
u32 cs_cfg[8];
u32 cs_ctrl;
u32 cs_status;
u32 burst_ctrl;
u32 deadcycle_ctrl;
u32 holdcycle_ctrl;
u32 alt;
};
int mpc512x_cs_config(unsigned int cs, u32 val);
struct mpc512x_lpbfifo {
u32 pkt_size;
u32 start_addr;
u32 ctrl;
u32 enable;
u32 reserved1;
u32 status;
u32 bytes_done;
u32 emb_sc;
u32 emb_pc;
u32 reserved2[7];
u32 data_word;
u32 fifo_status;
u32 fifo_ctrl;
u32 fifo_alarm;
};
#define MPC512X_SCLPC_START (1 << 31)
#define MPC512X_SCLPC_CS(x) (((x) & 0x7) << 24)
#define MPC512X_SCLPC_FLUSH (1 << 17)
#define MPC512X_SCLPC_READ (1 << 16)
#define MPC512X_SCLPC_DAI (1 << 8)
#define MPC512X_SCLPC_BPT(x) ((x) & 0x3f)
#define MPC512X_SCLPC_RESET (1 << 24)
#define MPC512X_SCLPC_FIFO_RESET (1 << 16)
#define MPC512X_SCLPC_ABORT_INT_ENABLE (1 << 9)
#define MPC512X_SCLPC_NORM_INT_ENABLE (1 << 8)
#define MPC512X_SCLPC_ENABLE (1 << 0)
#define MPC512X_SCLPC_SUCCESS (1 << 24)
#define MPC512X_SCLPC_FIFO_CTRL(x) (((x) & 0x7) << 24)
#define MPC512X_SCLPC_FIFO_ALARM(x) ((x) & 0x3ff)
enum lpb_dev_portsize {
LPB_DEV_PORTSIZE_UNDEFINED = 0,
LPB_DEV_PORTSIZE_1_BYTE = 1,
LPB_DEV_PORTSIZE_2_BYTES = 2,
LPB_DEV_PORTSIZE_4_BYTES = 4,
LPB_DEV_PORTSIZE_8_BYTES = 8
};
enum mpc512x_lpbfifo_req_dir {
MPC512X_LPBFIFO_REQ_DIR_READ,
MPC512X_LPBFIFO_REQ_DIR_WRITE
};
struct mpc512x_lpbfifo_request {
phys_addr_t dev_phys_addr;
void *ram_virt_addr;
u32 size;
enum lpb_dev_portsize portsize;
enum mpc512x_lpbfifo_req_dir dir;
void (*callback)(struct mpc512x_lpbfifo_request *);
};
int mpc512x_lpbfifo_submit(struct mpc512x_lpbfifo_request *req);
#endif