move 3g's io resource to board
authorCMY <cmy@rock-chips.com>
Sun, 1 Apr 2012 03:35:55 +0000 (11:35 +0800)
committerCMY <cmy@rock-chips.com>
Sun, 1 Apr 2012 03:35:55 +0000 (11:35 +0800)
arch/arm/mach-rk30/board-rk30-sdk.c
arch/arm/plat-rk/include/plat/board.h
drivers/misc/rk29_modem/modem_rockchip_demo.c
drivers/misc/rk29_modem/rk29_modem.h

index ac76af17aab26297bfe352d18cd8985925f02be3..18d4693b483a9c7eead2093461f178ad2430d51a 100755 (executable)
@@ -449,6 +449,35 @@ static struct platform_device rk29_device_backlight = {
 
 #endif
 
+#ifdef CONFIG_RK29_SUPPORT_MODEM
+
+#define RK30_MODEM_POWER        RK30_PIN4_PD1
+#define RK30_MODEM_POWER_IOMUX  rk29_mux_api_set(GPIO4D1_SMCDATA9_TRACEDATA9_NAME, GPIO4D_GPIO4D1)
+
+static int rk30_modem_io_init(void)
+{
+    printk("%s\n", __FUNCTION__);
+    RK30_MODEM_POWER_IOMUX;
+
+       return 0;
+}
+
+static struct rk29_io_t rk30_modem_io = {
+    .io_addr    = RK30_MODEM_POWER,
+    .enable     = GPIO_HIGH,
+    .disable    = GPIO_LOW,
+    .io_init    = rk30_modem_io_init,
+};
+
+static struct platform_device rk30_device_modem = {
+       .name   = "rk30_modem",
+       .id     = -1,
+       .dev    = {
+               .platform_data  = &rk30_modem_io,
+       }
+};
+#endif
+
 /*MMA8452 gsensor*/
 #if defined (CONFIG_GS_MMA8452)
 #define MMA8452_INT_PIN   RK30_PIN4_PC0
@@ -965,6 +994,9 @@ static struct platform_device *devices[] __initdata = {
 #ifdef CONFIG_BT
     &rk29sdk_rfkill,
 #endif
+#ifdef CONFIG_RK29_SUPPORT_MODEM
+    &rk30_device_modem,
+#endif
 };
 
 // i2c
index 42d7da899755c326b7b3e59f482ed436e124f9f3..bb34d0ba5a990400d85c1fc168f6a8e1d07c631e 100755 (executable)
@@ -32,6 +32,13 @@ struct rk29_bl_info {
        unsigned int delay_ms;  /* in milliseconds */
 };
 
+struct rk29_io_t {
+    unsigned long io_addr;
+    unsigned long enable;
+    unsigned long disable;
+    int (*io_init)(void);
+};
+
 struct rk29lcd_info {
        u32 lcd_id;
        u32 txd_pin;
index 47e65cfda89043b4a1bafa692d55f83f0cf9e976..0a3d5e239e8791cdeefa8a163fc16048cdd910d2 100644 (file)
 \r
 #include "rk29_modem.h"\r
 \r
-static struct rk29_io_t demo_io_power = {\r
-    .io_addr    = RK30_PIN4_PD1, //RK29_PIN6_PB1, \r
-    .enable     = GPIO_HIGH,\r
-    .disable    = GPIO_LOW,\r
-};\r
+static int rk30_modem_probe(struct platform_device *pdev);\r
 \r
 static struct platform_driver demo_platform_driver = {\r
-       .driver         = {\r
-               .name           = "rk29_demo",\r
-       },
+    .probe  = rk30_modem_probe,\r
+    .driver = {\r
+        .name   = "rk30_modem",\r
+    },\r
 };\r
 \r
 static struct rk29_modem_t demo_driver = {\r
     .driver         = &demo_platform_driver,\r
-    .modem_power    = &demo_io_power,\r
+    .modem_power    = NULL,//&demo_io_power,\r
     .ap_ready       = NULL,\r
     .bp_wakeup_ap   = NULL,\r
     .status         = MODEM_ENABLE,\r
@@ -52,6 +49,18 @@ static struct rk29_modem_t demo_driver = {
     .wakeup         = NULL,\r
 };\r
 \r
+static int rk30_modem_probe(struct platform_device *pdev)\r
+{\r
+    int ret = 0;\r
+    struct rk29_io_t *rk29_io_info = pdev->dev.platform_data;\r
+\r
+    printk("%s\n", __FUNCTION__);\r
+    demo_driver.modem_power = rk29_io_info;\r
+    demo_driver.modem_power->io_init();\r
+\r
+    return 0;\r
+}\r
+\r
 static int __init demo_init(void)\r
 {\r
     printk("%s[%d]: %s\n", __FILE__, __LINE__, __FUNCTION__);\r
@@ -70,7 +79,7 @@ static void __exit demo_exit(void)
 module_init(demo_init);\r
 module_exit(demo_exit);\r
 \r
-MODULE_AUTHOR("lintao lintao@rock-chips.com");\r
+MODULE_AUTHOR("lintao lintao@rock-chips.com, cmy@rock-chips.com");\r
 MODULE_DESCRIPTION("ROCKCHIP modem driver");\r
 MODULE_LICENSE("GPL");\r
 \r
index 0e5f402ca7c84b893e17acfb087467b356c4c2d1..09516ec342b2bbba2723f742a807aee299921126 100644 (file)
@@ -1,4 +1,5 @@
 #include <linux/platform_device.h>\r
+#include <mach/board.h>\r
 \r
 /* Modem states */\r
 #define MODEM_DISABLE       0\r
@@ -7,12 +8,6 @@
 #define MODEM_WAKEUP        3\r
 #define MODEM_MAX_STATUS    4\r
 \r
-struct rk29_io_t {\r
-    unsigned long io_addr;\r
-    unsigned long enable;\r
-    unsigned long disable;\r
-};\r
-\r
 struct rk29_irq_t {\r
     unsigned long irq_addr;\r
     unsigned long irq_trigger;\r