rk30:add rk30_mux_api_get function for iomux

This commit is contained in:
lw
2012-03-24 10:02:27 +08:00
parent d74bc51fba
commit ac28c779ec
2 changed files with 23 additions and 2 deletions

View File

@@ -829,5 +829,6 @@ struct mux_config {
extern int __init rk30_iomux_init(void);
extern void rk30_mux_api_set(char *name, unsigned int mode);
extern int rk30_mux_api_get(char *name);
#endif

View File

@@ -240,8 +240,7 @@ void rk30_mux_set(struct mux_config *cfg)
int regValue = 0;
int mask;
mask = ((1<<(cfg->interleave))-1)<<cfg->offset << 16;
//regValue = readl(cfg->mux_reg);
mask = (((1<<(cfg->interleave))-1)<<cfg->offset) << 16;
regValue |= mask;
regValue |=(cfg->mode<<cfg->offset);
#ifdef IOMUX_DBG
@@ -373,3 +372,24 @@ void rk30_mux_api_set(char *name, unsigned int mode)
}
EXPORT_SYMBOL(rk30_mux_api_set);
int rk30_mux_api_get(char *name)
{
int i,ret=0;
if (!name) {
return -1;
}
for(i=0;i<ARRAY_SIZE(rk30_muxs);i++)
{
if (!strcmp(rk30_muxs[i].name, name))
{
ret = readl(rk30_muxs[i].mux_reg);
ret = (ret >> rk30_muxs[i].offset) &((1<<(rk30_muxs[i].interleave))-1);
return ret;
}
}
return -1;
}
EXPORT_SYMBOL(rk30_mux_api_get);