2009年2月8日 星期日

memory map access method

HWIO_OUTM(MDDI_CAMIF_CFG,
HWIO_FMSK(MDDI_CAMIF_CFG, CAM_SEL) |
HWIO_FMSK(MDDI_CAMIF_CFG, CAM_PCLK_SRC_SEL) |
HWIO_FMSK(MDDI_CAMIF_CFG, CAM_PCLK_INVERT) |
HWIO_FMSK(MDDI_CAMIF_CFG, EXT_CAM_HSYNC_POL_SEL) |
HWIO_FMSK(MDDI_CAMIF_CFG, EXT_CAM_VSYNC_POL_SEL) |
HWIO_FMSK(MDDI_CAMIF_CFG, MDDI_CLK_CHICKEN_BIT),
1 << HWIO_SHFT(MDDI_CAMIF_CFG, CAM_SEL) |
3 << HWIO_SHFT(MDDI_CAMIF_CFG, CAM_PCLK_SRC_SEL) |
0 << HWIO_SHFT(MDDI_CAMIF_CFG, CAM_PCLK_INVERT) |
0 << HWIO_SHFT(MDDI_CAMIF_CFG, EXT_CAM_HSYNC_POL_SEL) |
0 << HWIO_SHFT(MDDI_CAMIF_CFG, EXT_CAM_VSYNC_POL_SEL) |
0 << HWIO_SHFT(MDDI_CAMIF_CFG, MDDI_CLK_CHICKEN_BIT))


#define out_dword(addr, val) \
(*((unsigned long *)(addr)) = ((unsigned long)(val)))

#define out_dword_masked_ns(io, mask, val, current_reg_content) \
((void) out_dword(io, ((current_reg_content & (uint32_t)(~(mask))) | \
((uint32_t)((val) & (mask))))))

#define __inpdw(port) (*((uint32_t *) (port)))
#define in_dword_masked(addr, mask) (__inpdw(addr) & (uint32_t)mask)

#define HWIO_MDDI_CAMIF_CFG_ADDR MSM_MDC_BASE
#define HWIO_MDDI_CAMIF_CFG_RMSK 0x1fffff
#define HWIO_MDDI_CAMIF_CFG_IN \
in_dword_masked(HWIO_MDDI_CAMIF_CFG_ADDR, HWIO_MDDI_CAMIF_CFG_RMSK)

#define HWIO_MDDI_CAMIF_CFG_OUTM(m,v) \
out_dword_masked_ns(HWIO_MDDI_CAMIF_CFG_ADDR,\
m, v, HWIO_MDDI_CAMIF_CFG_IN);
#define __msmhwio_outm(hwiosym, mask, val) HWIO_##hwiosym##_OUTM(mask, val)
#define HWIO_OUTM(hwiosym, mask, val) __msmhwio_outm(hwiosym, mask, val)

#define HWIO_MDDI_CAMIF_CFG_CAM_SEL_BMSK 0x2
#define HWIO_MDDI_CAMIF_CFG_CAM_PCLK_SRC_SEL_BMSK 0x60000
#define HWIO_MDDI_CAMIF_CFG_CAM_PCLK_INVERT_BMSK 0x80000
#define HWIO_MDDI_CAMIF_CFG_CAM_PAD_REG_SW_RESET_BMSK 0x100000

#define HWIO_MDDI_CAMIF_CFG_EXT_CAM_HSYNC_POL_SEL_BMSK 0x10000
#define HWIO_MDDI_CAMIF_CFG_EXT_CAM_VSYNC_POL_SEL_BMSK 0x8000
#define HWIO_MDDI_CAMIF_CFG_MDDI_CLK_CHICKEN_BIT_BMSK 0x80

#define HWIO_MDDI_CAMIF_CFG_CAM_SEL_SHFT 0x1
#define HWIO_MDDI_CAMIF_CFG_CAM_PCLK_SRC_SEL_SHFT 0x11
#define HWIO_MDDI_CAMIF_CFG_CAM_PCLK_INVERT_SHFT 0x13
#define HWIO_MDDI_CAMIF_CFG_CAM_PAD_REG_SW_RESET_SHFT 0x14

#define HWIO_MDDI_CAMIF_CFG_EXT_CAM_HSYNC_POL_SEL_SHFT 0x10
#define HWIO_MDDI_CAMIF_CFG_EXT_CAM_VSYNC_POL_SEL_SHFT 0xF
#define HWIO_MDDI_CAMIF_CFG_MDDI_CLK_CHICKEN_BIT_SHFT 0x7

#define __msmhwio_shft(hwio_regsym, hwio_fldsym) \
HWIO_##hwio_regsym##_##hwio_fldsym##_SHFT
#define HWIO_SHFT(hwio_regsym, hwio_fldsym) \
__msmhwio_shft(hwio_regsym, hwio_fldsym)

#define __msmhwio_fmsk(hwio_regsym, hwio_fldsym) \
HWIO_##hwio_regsym##_##hwio_fldsym##_BMSK

#define HWIO_FMSK(hwio_regsym, hwio_fldsym) \
__msmhwio_fmsk(hwio_regsym, hwio_fldsym)

沒有留言: