Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 352560
b: refs/heads/master
c: afb43e6
h: refs/heads/master
v: v3
  • Loading branch information
Luciano Coelho committed Feb 8, 2013
1 parent 2447415 commit b9d1134
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 14 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3a0a8d961e20132272887d9826738ce9b4d818f7
refs/heads/master: afb43e6d88e587441c960a5d214d2c698d076c9c
3 changes: 2 additions & 1 deletion trunk/drivers/net/wireless/ti/wl12xx/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1703,7 +1703,8 @@ static struct ieee80211_sta_ht_cap wl12xx_ht_cap = {
static int wl12xx_setup(struct wl1271 *wl)
{
struct wl12xx_priv *priv = wl->priv;
struct wl12xx_platform_data *pdata = wl->pdev->dev.platform_data;
struct wlcore_platdev_data *pdev_data = wl->pdev->dev.platform_data;
struct wl12xx_platform_data *pdata = pdev_data->pdata;

wl->rtable = wl12xx_rtable;
wl->num_tx_desc = WL12XX_NUM_TX_DESCRIPTORS;
Expand Down
5 changes: 3 additions & 2 deletions trunk/drivers/net/wireless/ti/wlcore/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -5966,7 +5966,8 @@ static void wlcore_nvs_cb(const struct firmware *fw, void *context)
{
struct wl1271 *wl = context;
struct platform_device *pdev = wl->pdev;
struct wl12xx_platform_data *pdata = pdev->dev.platform_data;
struct wlcore_platdev_data *pdev_data = pdev->dev.platform_data;
struct wl12xx_platform_data *pdata = pdev_data->pdata;
unsigned long irqflags;
int ret;

Expand Down Expand Up @@ -5995,7 +5996,7 @@ static void wlcore_nvs_cb(const struct firmware *fw, void *context)

wl->irq = platform_get_irq(pdev, 0);
wl->platform_quirks = pdata->platform_quirks;
wl->if_ops = pdata->ops;
wl->if_ops = pdev_data->if_ops;

if (wl->platform_quirks & WL12XX_PLATFORM_QUIRK_EDGE_IRQ)
irqflags = IRQF_TRIGGER_RISING;
Expand Down
22 changes: 17 additions & 5 deletions trunk/drivers/net/wireless/ti/wlcore/sdio.c
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,7 @@ static int wl1271_probe(struct sdio_func *func,
const struct sdio_device_id *id)
{
struct wl12xx_platform_data *wlan_data;
struct wlcore_platdev_data *pdev_data;
struct wl12xx_sdio_glue *glue;
struct resource res[1];
mmc_pm_flag_t mmcflags;
Expand All @@ -228,10 +229,18 @@ static int wl1271_probe(struct sdio_func *func,
if (func->num != 0x02)
return -ENODEV;

pdev_data = kzalloc(sizeof(*pdev_data), GFP_KERNEL);
if (!pdev_data) {
dev_err(&func->dev, "can't allocate platdev_data\n");
goto out;
}

pdev_data->if_ops = &sdio_ops;

glue = kzalloc(sizeof(*glue), GFP_KERNEL);
if (!glue) {
dev_err(&func->dev, "can't allocate glue\n");
goto out;
goto out_free_pdev_data;
}

glue->dev = &func->dev;
Expand All @@ -256,8 +265,6 @@ static int wl1271_probe(struct sdio_func *func,
if (mmcflags & MMC_PM_KEEP_POWER)
wlan_data->pwr_in_suspend = true;

wlan_data->ops = &sdio_ops;

sdio_set_drvdata(func, glue);

/* Tell PM core that we don't need the card to be powered now */
Expand Down Expand Up @@ -295,8 +302,10 @@ static int wl1271_probe(struct sdio_func *func,
goto out_dev_put;
}

ret = platform_device_add_data(glue->core, wlan_data,
sizeof(*wlan_data));
pdev_data->pdata = wlan_data;

ret = platform_device_add_data(glue->core, pdev_data,
sizeof(*pdev_data));
if (ret) {
dev_err(glue->dev, "can't add platform data\n");
goto out_dev_put;
Expand All @@ -315,6 +324,9 @@ static int wl1271_probe(struct sdio_func *func,
out_free_glue:
kfree(glue);

out_free_pdev_data:
kfree(pdev_data);

out:
return ret;
}
Expand Down
20 changes: 17 additions & 3 deletions trunk/drivers/net/wireless/ti/wlcore/spi.c
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,7 @@ static int wl1271_probe(struct spi_device *spi)
{
struct wl12xx_spi_glue *glue;
struct wl12xx_platform_data *pdata;
struct wlcore_platdev_data *pdev_data;
struct resource res[1];
int ret = -ENOMEM;

Expand All @@ -337,12 +338,18 @@ static int wl1271_probe(struct spi_device *spi)
return -ENODEV;
}

pdata->ops = &spi_ops;
pdev_data = kzalloc(sizeof(*pdev_data), GFP_KERNEL);
if (!pdev_data) {
dev_err(&spi->dev, "can't allocate platdev_data\n");
goto out;
}

pdev_data->if_ops = &spi_ops;

glue = kzalloc(sizeof(*glue), GFP_KERNEL);
if (!glue) {
dev_err(&spi->dev, "can't allocate glue\n");
goto out;
goto out_free_pdev_data;
}

glue->dev = &spi->dev;
Expand Down Expand Up @@ -380,7 +387,10 @@ static int wl1271_probe(struct spi_device *spi)
goto out_dev_put;
}

ret = platform_device_add_data(glue->core, pdata, sizeof(*pdata));
pdev_data->pdata = pdata;

ret = platform_device_add_data(glue->core, pdev_data,
sizeof(*pdev_data));
if (ret) {
dev_err(glue->dev, "can't add platform data\n");
goto out_dev_put;
Expand All @@ -399,6 +409,10 @@ static int wl1271_probe(struct spi_device *spi)

out_free_glue:
kfree(glue);

out_free_pdev_data:
kfree(pdev_data);

out:
return ret;
}
Expand Down
5 changes: 5 additions & 0 deletions trunk/drivers/net/wireless/ti/wlcore/wlcore_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,11 @@ struct wl1271_if_operations {
void (*set_block_size) (struct device *child, unsigned int blksz);
};

struct wlcore_platdev_data {
struct wl12xx_platform_data *pdata;
struct wl1271_if_operations *if_ops;
};

#define MAX_NUM_KEYS 14
#define MAX_KEY_SIZE 32

Expand Down
2 changes: 0 additions & 2 deletions trunk/include/linux/wl12xx.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,6 @@ struct wl12xx_platform_data {
int board_tcxo_clock;
unsigned long platform_quirks;
bool pwr_in_suspend;

struct wl1271_if_operations *ops;
};

/* Platform does not support level trigger interrupts */
Expand Down

0 comments on commit b9d1134

Please sign in to comment.