增加 rk2818_mux_api_mode_resume 接口用来恢复最近一次的rk2818_mux_api_set。一些io复用完后,调用该接口进行恢复之前的io 模式
authorroot <root@dxj.(none)>
Thu, 29 Jul 2010 03:24:38 +0000 (11:24 +0800)
committerroot <root@dxj.(none)>
Thu, 29 Jul 2010 03:30:46 +0000 (11:30 +0800)
arch/arm/mach-rk2818/iomux.c

index 954a5e983182426b89181c2087fd359325462b29..e280882121a5826d14a6d6aec2fcf88ac5124d5c 100644 (file)
@@ -117,9 +117,9 @@ void rk2818_mux_api_set(char *name, unsigned int mode)
   int i; 
        for(i=0;i<ARRAY_SIZE(rk2818_muxs);i++)
        {
-               //if(rockchip_muxs[i].name == cfg->name)
                if (!strcmp(rk2818_muxs[i].name, name))
                {
+                   rk2818_muxs[i].premode = rk2818_muxs[i].mode;
                        rk2818_muxs[i].mode = mode;
                        rk2818_mux_set(&rk2818_muxs[i]);        
                        break;                  
@@ -128,18 +128,21 @@ void rk2818_mux_api_set(char *name, unsigned int mode)
 }
 EXPORT_SYMBOL(rk2818_mux_api_set);
 
-unsigned int rk2818_mux_api_get(char *name)
+void rk2818_mux_api_mode_resume(char *name)
 {
     int i; 
        for(i=0;i<ARRAY_SIZE(rk2818_muxs);i++)
        {
-               //if(rockchip_muxs[i].name == cfg->name)
                if (!strcmp(rk2818_muxs[i].name, name))
                {
-                       return rk2818_muxs[i].mode;
+                   if(rk2818_muxs[i].mode != rk2818_muxs[i].premode)
+                   {
+                       rk2818_muxs[i].mode = rk2818_muxs[i].premode;
+                       rk2818_mux_set(&rk2818_muxs[i]);
+                       }
+                       break;
                }
        }
-       return 0xff;
 }
-EXPORT_SYMBOL(rk2818_mux_api_get);
+EXPORT_SYMBOL(rk2818_mux_api_mode_resume);