Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 352224
b: refs/heads/master
c: 2e07d02
h: refs/heads/master
v: v3
  • Loading branch information
Ido Yariv authored and Luciano Coelho committed Dec 11, 2012
1 parent 4a360b6 commit c68584e
Show file tree
Hide file tree
Showing 6 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: 2fd8a3bb49400a4a0fe9d9cd9d49019e7a46403e
refs/heads/master: 2e07d02828759a506b5205b2cff40daa58df5bf7
31 changes: 25 additions & 6 deletions trunk/drivers/net/wireless/ti/wl12xx/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -613,7 +613,7 @@ static int wl127x_prepare_read(struct wl1271 *wl, u32 rx_desc, u32 len)

if (wl->chip.id != CHIP_ID_128X_PG20) {
struct wl1271_acx_mem_map *wl_mem_map = wl->target_mem_map;
struct wl127x_rx_mem_pool_addr rx_mem_addr;
struct wl12xx_priv *priv = wl->priv;

/*
* Choose the block we want to read
Expand All @@ -622,13 +622,13 @@ static int wl127x_prepare_read(struct wl1271 *wl, u32 rx_desc, u32 len)
*/
u32 mem_block = rx_desc & RX_MEM_BLOCK_MASK;

rx_mem_addr.addr = (mem_block << 8) +
priv->rx_mem_addr->addr = (mem_block << 8) +
le32_to_cpu(wl_mem_map->packet_memory_pool_start);

rx_mem_addr.addr_extra = rx_mem_addr.addr + 4;
priv->rx_mem_addr->addr_extra = priv->rx_mem_addr->addr + 4;

ret = wlcore_write(wl, WL1271_SLV_REG_DATA, &rx_mem_addr,
sizeof(rx_mem_addr), false);
ret = wlcore_write(wl, WL1271_SLV_REG_DATA, priv->rx_mem_addr,
sizeof(*priv->rx_mem_addr), false);
if (ret < 0)
return ret;
}
Expand Down Expand Up @@ -1761,6 +1761,10 @@ static int wl12xx_setup(struct wl1271 *wl)
wl1271_error("Invalid tcxo parameter %s", tcxo_param);
}

priv->rx_mem_addr = kmalloc(sizeof(*priv->rx_mem_addr), GFP_KERNEL);
if (!priv->rx_mem_addr)
return -ENOMEM;

return 0;
}

Expand Down Expand Up @@ -1794,6 +1798,21 @@ static int __devinit wl12xx_probe(struct platform_device *pdev)
return ret;
}

static int __devexit wl12xx_remove(struct platform_device *pdev)
{
struct wl1271 *wl = platform_get_drvdata(pdev);
struct wl12xx_priv *priv;

if (!wl)
goto out;
priv = wl->priv;

kfree(priv->rx_mem_addr);

out:
return wlcore_remove(pdev);
}

static const struct platform_device_id wl12xx_id_table[] __devinitconst = {
{ "wl12xx", 0 },
{ } /* Terminating Entry */
Expand All @@ -1802,7 +1821,7 @@ MODULE_DEVICE_TABLE(platform, wl12xx_id_table);

static struct platform_driver wl12xx_driver = {
.probe = wl12xx_probe,
.remove = __devexit_p(wlcore_remove),
.remove = __devexit_p(wl12xx_remove),
.id_table = wl12xx_id_table,
.driver = {
.name = "wl12xx_driver",
Expand Down
2 changes: 2 additions & 0 deletions trunk/drivers/net/wireless/ti/wl12xx/wl12xx.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ struct wl12xx_priv {

int ref_clock;
int tcxo_clock;

struct wl127x_rx_mem_pool_addr *rx_mem_addr;
};

#endif /* __WL12XX_PRIV_H__ */
12 changes: 6 additions & 6 deletions trunk/drivers/net/wireless/ti/wlcore/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -105,23 +105,23 @@ static inline int __must_check wlcore_raw_read32(struct wl1271 *wl, int addr,
{
int ret;

ret = wlcore_raw_read(wl, addr, &wl->buffer_32,
sizeof(wl->buffer_32), false);
ret = wlcore_raw_read(wl, addr, wl->buffer_32,
sizeof(*wl->buffer_32), false);
if (ret < 0)
return ret;

if (val)
*val = le32_to_cpu(wl->buffer_32);
*val = le32_to_cpu(*wl->buffer_32);

return 0;
}

static inline int __must_check wlcore_raw_write32(struct wl1271 *wl, int addr,
u32 val)
{
wl->buffer_32 = cpu_to_le32(val);
return wlcore_raw_write(wl, addr, &wl->buffer_32,
sizeof(wl->buffer_32), false);
*wl->buffer_32 = cpu_to_le32(val);
return wlcore_raw_write(wl, addr, wl->buffer_32,
sizeof(*wl->buffer_32), false);
}

static inline int __must_check wlcore_read(struct wl1271 *wl, int addr,
Expand Down
10 changes: 10 additions & 0 deletions trunk/drivers/net/wireless/ti/wlcore/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -5860,8 +5860,17 @@ struct ieee80211_hw *wlcore_alloc_hw(size_t priv_size, u32 aggr_buf_size,
goto err_fwlog;
}

wl->buffer_32 = kmalloc(sizeof(*wl->buffer_32), GFP_KERNEL);
if (!wl->buffer_32) {
ret = -ENOMEM;
goto err_mbox;
}

return hw;

err_mbox:
kfree(wl->mbox);

err_fwlog:
free_page((unsigned long)wl->fwlog);

Expand Down Expand Up @@ -5900,6 +5909,7 @@ int wlcore_free_hw(struct wl1271 *wl)
device_remove_file(wl->dev, &dev_attr_hw_pg_ver);

device_remove_file(wl->dev, &dev_attr_bt_coex_state);
kfree(wl->buffer_32);
kfree(wl->mbox);
free_page((unsigned long)wl->fwlog);
dev_kfree_skb(wl->dummy_packet);
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/net/wireless/ti/wlcore/wlcore.h
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ struct wl1271 {

struct wl1271_stats stats;

__le32 buffer_32;
__le32 *buffer_32;
u32 buffer_cmd;
u32 buffer_busyword[WL1271_BUSY_WORD_CNT];

Expand Down

0 comments on commit c68584e

Please sign in to comment.