SDMMC: add the capabilities and ocr_avail of RK-host
authorxbw <xbw@rock-chips.com>
Tue, 18 Mar 2014 05:40:08 +0000 (13:40 +0800)
committerxbw <xbw@rock-chips.com>
Tue, 18 Mar 2014 05:40:08 +0000 (13:40 +0800)
drivers/mmc/host/rk_sdmmc.c
drivers/mmc/host/rk_sdmmc_of.c
drivers/mmc/host/rk_sdmmc_of.h

index 4e27ed7063981713f182f4f5685c57ba7713e5b9..803a0eafa053e0000484dc8ee9d7610554b1dc60 100755 (executable)
@@ -2405,8 +2405,14 @@ static int dw_mci_init_slot(struct dw_mci *host, unsigned int id)
 
        if (host->pdata->get_ocr)
                mmc->ocr_avail = host->pdata->get_ocr(id);
-       else
-               mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
+       else{
+               //mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
+               mmc->ocr_avail = MMC_VDD_27_28|MMC_VDD_28_29|MMC_VDD_29_30|MMC_VDD_30_31
+                     | MMC_VDD_31_32|MMC_VDD_32_33 | MMC_VDD_33_34 | MMC_VDD_34_35| MMC_VDD_35_36;
+        
+        mmc->ocr_avail |= MMC_VDD_26_27 |MMC_VDD_25_26 |MMC_VDD_24_25 |MMC_VDD_23_24
+                         |MMC_VDD_22_23 |MMC_VDD_21_22 |MMC_VDD_20_21 |MMC_VDD_165_195;
+       }
 
        /*
         * Start with slot power disabled, it will be enabled when a card
@@ -2449,6 +2455,16 @@ static int dw_mci_init_slot(struct dw_mci *host, unsigned int id)
        case 4:
                mmc->caps |= MMC_CAP_4_BIT_DATA;
        }
+       if (of_find_property(host->dev->of_node, "cap-power-off-card", NULL))
+               mmc->caps |= MMC_CAP_POWER_OFF_CARD;
+       if (of_find_property(host->dev->of_node, "cap-sdio-irq", NULL))
+               mmc->caps |= MMC_CAP_SDIO_IRQ;
+       if (of_find_property(host->dev->of_node, "full-pwr-cycle", NULL))
+               mmc->caps2 |= MMC_CAP2_FULL_PWR_CYCLE;
+       if (of_find_property(host->dev->of_node, "keep-power-in-suspend", NULL))
+               mmc->pm_caps |= MMC_PM_KEEP_POWER;
+       if (of_find_property(host->dev->of_node, "enable-sdio-wakeup", NULL))
+               mmc->pm_caps |= MMC_PM_WAKE_SDIO_IRQ;
 
        if (host->pdata->blk_settings) {
                mmc->max_segs = host->pdata->blk_settings->max_segs;
index d4990a3a5fd3f5578318deded06ef5f3da7846ca..7340352e0cdc5a35020861ccf1e4137a4c3ad2d6 100755 (executable)
@@ -34,7 +34,7 @@ void rockchip_mmc_of_probe(struct device_node *np,struct rk_sdmmc_of *rk_mmc_pro
     of_property_read_u32(np, "mmc,int", &rk_mmc_property->mmc_int_type);\r
     of_property_read_u32(np, "mmc,emmc_is_selected", &rk_mmc_property->emmc_is_selected);\r
     of_property_read_u32_array(np, "mmc,use_dma", rk_mmc_property->mmc_dma_is_used,2);\r
-\r
+/*\r
     if((&rk_mmc_property->mmc_dma_is_used[0] == MMC_USE_DMA))\r
     {   \r
            if(rk_mmc_property->mmc_dma_is_used[1] == 0)\r
@@ -50,7 +50,7 @@ void rockchip_mmc_of_probe(struct device_node *np,struct rk_sdmmc_of *rk_mmc_pro
     }else{\r
         mmc_debug(MMC_DBG_WARN,"Device Tree configure mmc drivers to use pio!\n");\r
     }\r
-  \r
+ */ \r
     rockchip_mmc_of_dump(rk_mmc_property);\r
     return ;\r
 \r
index da8b514718565240b5cf5e2de9523034621240d9..1c88d560da13c80ca0f0770337fb35003e925dc0 100755 (executable)
@@ -12,7 +12,6 @@
 #ifndef __RK_SDMMC_OF_H\r
 #define __RK_SDMMC_OF_H\r
 \r
-#include <dt-bindings/mmc/rockchip-sdmmc.h>\r
 #include <linux/of_gpio.h>\r
 #include <linux/of_i2c.h>\r
 #include <linux/types.h>\r