2727#include <linux/mmc/sdio_func.h>
2828#include <linux/mmc/card.h>
2929#include <linux/mmc/host.h>
30- #include <linux/platform_device.h>
31- #include <linux/platform_data/brcmfmac-sdio.h>
3230#include <linux/pm_runtime.h>
3331#include <linux/suspend.h>
3432#include <linux/errno.h>
4644#include "bus.h"
4745#include "debug.h"
4846#include "sdio.h"
49- #include "of.h"
5047#include "core.h"
5148#include "common.h"
5249
@@ -106,18 +103,18 @@ static void brcmf_sdiod_dummy_irqhandler(struct sdio_func *func)
106103
107104int brcmf_sdiod_intr_register (struct brcmf_sdio_dev * sdiodev )
108105{
106+ struct brcmfmac_sdio_platform_data * pdata ;
109107 int ret = 0 ;
110108 u8 data ;
111109 u32 addr , gpiocontrol ;
112110 unsigned long flags ;
113111
114- if ((sdiodev -> pdata ) && (sdiodev -> pdata -> oob_irq_supported )) {
112+ pdata = sdiodev -> pdata ;
113+ if ((pdata ) && (pdata -> oob_irq_supported )) {
115114 brcmf_dbg (SDIO , "Enter, register OOB IRQ %d\n" ,
116- sdiodev -> pdata -> oob_irq_nr );
117- ret = request_irq (sdiodev -> pdata -> oob_irq_nr ,
118- brcmf_sdiod_oob_irqhandler ,
119- sdiodev -> pdata -> oob_irq_flags ,
120- "brcmf_oob_intr" ,
115+ pdata -> oob_irq_nr );
116+ ret = request_irq (pdata -> oob_irq_nr , brcmf_sdiod_oob_irqhandler ,
117+ pdata -> oob_irq_flags , "brcmf_oob_intr" ,
121118 & sdiodev -> func [1 ]-> dev );
122119 if (ret != 0 ) {
123120 brcmf_err ("request_irq failed %d\n" , ret );
@@ -129,7 +126,7 @@ int brcmf_sdiod_intr_register(struct brcmf_sdio_dev *sdiodev)
129126 sdiodev -> irq_en = true;
130127 spin_unlock_irqrestore (& sdiodev -> irq_en_lock , flags );
131128
132- ret = enable_irq_wake (sdiodev -> pdata -> oob_irq_nr );
129+ ret = enable_irq_wake (pdata -> oob_irq_nr );
133130 if (ret != 0 ) {
134131 brcmf_err ("enable_irq_wake failed %d\n" , ret );
135132 return ret ;
@@ -158,7 +155,7 @@ int brcmf_sdiod_intr_register(struct brcmf_sdio_dev *sdiodev)
158155
159156 /* redirect, configure and enable io for interrupt signal */
160157 data = SDIO_SEPINT_MASK | SDIO_SEPINT_OE ;
161- if (sdiodev -> pdata -> oob_irq_flags & IRQF_TRIGGER_HIGH )
158+ if (pdata -> oob_irq_flags & IRQF_TRIGGER_HIGH )
162159 data |= SDIO_SEPINT_ACT_HI ;
163160 brcmf_sdiod_regwb (sdiodev , SDIO_CCCR_BRCM_SEPINT , data , & ret );
164161
@@ -176,9 +173,12 @@ int brcmf_sdiod_intr_register(struct brcmf_sdio_dev *sdiodev)
176173
177174int brcmf_sdiod_intr_unregister (struct brcmf_sdio_dev * sdiodev )
178175{
176+ struct brcmfmac_sdio_platform_data * pdata ;
177+
179178 brcmf_dbg (SDIO , "Entering\n" );
180179
181- if ((sdiodev -> pdata ) && (sdiodev -> pdata -> oob_irq_supported )) {
180+ pdata = sdiodev -> pdata ;
181+ if ((pdata ) && (pdata -> oob_irq_supported )) {
182182 sdio_claim_host (sdiodev -> func [1 ]);
183183 brcmf_sdiod_regwb (sdiodev , SDIO_CCCR_BRCM_SEPINT , 0 , NULL );
184184 brcmf_sdiod_regwb (sdiodev , SDIO_CCCR_IENx , 0 , NULL );
@@ -187,11 +187,10 @@ int brcmf_sdiod_intr_unregister(struct brcmf_sdio_dev *sdiodev)
187187 if (sdiodev -> oob_irq_requested ) {
188188 sdiodev -> oob_irq_requested = false;
189189 if (sdiodev -> irq_wake ) {
190- disable_irq_wake (sdiodev -> pdata -> oob_irq_nr );
190+ disable_irq_wake (pdata -> oob_irq_nr );
191191 sdiodev -> irq_wake = false;
192192 }
193- free_irq (sdiodev -> pdata -> oob_irq_nr ,
194- & sdiodev -> func [1 ]-> dev );
193+ free_irq (pdata -> oob_irq_nr , & sdiodev -> func [1 ]-> dev );
195194 sdiodev -> irq_en = false;
196195 }
197196 } else {
@@ -1103,8 +1102,6 @@ static const struct sdio_device_id brcmf_sdmmc_ids[] = {
11031102};
11041103MODULE_DEVICE_TABLE (sdio , brcmf_sdmmc_ids );
11051104
1106- static struct brcmfmac_sdio_platform_data * brcmfmac_sdio_pdata ;
1107-
11081105
11091106static void brcmf_sdiod_acpi_set_power_manageable (struct device * dev ,
11101107 int val )
@@ -1167,10 +1164,7 @@ static int brcmf_ops_sdio_probe(struct sdio_func *func,
11671164 dev_set_drvdata (& func -> dev , bus_if );
11681165 dev_set_drvdata (& sdiodev -> func [1 ]-> dev , bus_if );
11691166 sdiodev -> dev = & sdiodev -> func [1 ]-> dev ;
1170- sdiodev -> pdata = brcmfmac_sdio_pdata ;
1171-
1172- if (!sdiodev -> pdata )
1173- brcmf_of_probe (sdiodev );
1167+ sdiodev -> pdata = brcmf_get_module_param (sdiodev -> dev );
11741168
11751169#ifdef CONFIG_PM_SLEEP
11761170 /* wowl can be supported when KEEP_POWER is true and (WAKE_SDIO_IRQ
@@ -1296,7 +1290,7 @@ static const struct dev_pm_ops brcmf_sdio_pm_ops = {
12961290static struct sdio_driver brcmf_sdmmc_driver = {
12971291 .probe = brcmf_ops_sdio_probe ,
12981292 .remove = brcmf_ops_sdio_remove ,
1299- .name = BRCMFMAC_SDIO_PDATA_NAME ,
1293+ .name = KBUILD_MODNAME ,
13001294 .id_table = brcmf_sdmmc_ids ,
13011295 .drv = {
13021296 .owner = THIS_MODULE ,
@@ -1306,37 +1300,6 @@ static struct sdio_driver brcmf_sdmmc_driver = {
13061300 },
13071301};
13081302
1309- static int __init brcmf_sdio_pd_probe (struct platform_device * pdev )
1310- {
1311- brcmf_dbg (SDIO , "Enter\n" );
1312-
1313- brcmfmac_sdio_pdata = dev_get_platdata (& pdev -> dev );
1314-
1315- if (brcmfmac_sdio_pdata -> power_on )
1316- brcmfmac_sdio_pdata -> power_on ();
1317-
1318- return 0 ;
1319- }
1320-
1321- static int brcmf_sdio_pd_remove (struct platform_device * pdev )
1322- {
1323- brcmf_dbg (SDIO , "Enter\n" );
1324-
1325- if (brcmfmac_sdio_pdata -> power_off )
1326- brcmfmac_sdio_pdata -> power_off ();
1327-
1328- sdio_unregister_driver (& brcmf_sdmmc_driver );
1329-
1330- return 0 ;
1331- }
1332-
1333- static struct platform_driver brcmf_sdio_pd = {
1334- .remove = brcmf_sdio_pd_remove ,
1335- .driver = {
1336- .name = BRCMFMAC_SDIO_PDATA_NAME ,
1337- }
1338- };
1339-
13401303void brcmf_sdio_register (void )
13411304{
13421305 int ret ;
@@ -1350,19 +1313,6 @@ void brcmf_sdio_exit(void)
13501313{
13511314 brcmf_dbg (SDIO , "Enter\n" );
13521315
1353- if (brcmfmac_sdio_pdata )
1354- platform_driver_unregister (& brcmf_sdio_pd );
1355- else
1356- sdio_unregister_driver (& brcmf_sdmmc_driver );
1316+ sdio_unregister_driver (& brcmf_sdmmc_driver );
13571317}
13581318
1359- void __init brcmf_sdio_init (void )
1360- {
1361- int ret ;
1362-
1363- brcmf_dbg (SDIO , "Enter\n" );
1364-
1365- ret = platform_driver_probe (& brcmf_sdio_pd , brcmf_sdio_pd_probe );
1366- if (ret == - ENODEV )
1367- brcmf_dbg (SDIO , "No platform data available.\n" );
1368- }
0 commit comments