aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIdo Yariv <ido@wizery.com>2011-03-01 08:14:40 -0500
committerLuciano Coelho <coelho@ti.com>2011-03-03 09:10:46 -0500
commit393fb560d328cc06e6a5c7b7473901ad724f82e7 (patch)
tree2359a7db27abdd288269db547050eafc210ac5db
parent606ea9fa0b2c01ffafb6beae92ea8e2b1473520b (diff)
wl12xx: Change claiming of the SDIO bus
The SDIO bus is claimed and released for each SDIO transaction. In addition to the few CPU cycles it takes to claim and release the bus, it may also cause undesired side effects such as the MMC host stopping its internal clocks. Since only the wl12xx_sdio driver drives this SDIO card, it is safe to claim the SDIO host once (on power on), and release it only when turning the power off. This patch was inspired by Juuso Oikarinen's (juuso.oikarinen@nokia.com) patch "wl12xx: Change claiming of the (SDIO) bus". Signed-off-by: Ido Yariv <ido@wizery.com> Reviewed-by: Luciano Coelho <coelho@ti.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
-rw-r--r--drivers/net/wireless/wl12xx/sdio.c10
1 files changed, 0 insertions, 10 deletions
diff --git a/drivers/net/wireless/wl12xx/sdio.c b/drivers/net/wireless/wl12xx/sdio.c
index f27e91502631..61fdc9e981bd 100644
--- a/drivers/net/wireless/wl12xx/sdio.c
+++ b/drivers/net/wireless/wl12xx/sdio.c
@@ -107,8 +107,6 @@ static void wl1271_sdio_raw_read(struct wl1271 *wl, int addr, void *buf,
107 int ret; 107 int ret;
108 struct sdio_func *func = wl_to_func(wl); 108 struct sdio_func *func = wl_to_func(wl);
109 109
110 sdio_claim_host(func);
111
112 if (unlikely(addr == HW_ACCESS_ELP_CTRL_REG_ADDR)) { 110 if (unlikely(addr == HW_ACCESS_ELP_CTRL_REG_ADDR)) {
113 ((u8 *)buf)[0] = sdio_f0_readb(func, addr, &ret); 111 ((u8 *)buf)[0] = sdio_f0_readb(func, addr, &ret);
114 wl1271_debug(DEBUG_SDIO, "sdio read 52 addr 0x%x, byte 0x%02x", 112 wl1271_debug(DEBUG_SDIO, "sdio read 52 addr 0x%x, byte 0x%02x",
@@ -124,8 +122,6 @@ static void wl1271_sdio_raw_read(struct wl1271 *wl, int addr, void *buf,
124 wl1271_dump_ascii(DEBUG_SDIO, "data: ", buf, len); 122 wl1271_dump_ascii(DEBUG_SDIO, "data: ", buf, len);
125 } 123 }
126 124
127 sdio_release_host(func);
128
129 if (ret) 125 if (ret)
130 wl1271_error("sdio read failed (%d)", ret); 126 wl1271_error("sdio read failed (%d)", ret);
131} 127}
@@ -136,8 +132,6 @@ static void wl1271_sdio_raw_write(struct wl1271 *wl, int addr, void *buf,
136 int ret; 132 int ret;
137 struct sdio_func *func = wl_to_func(wl); 133 struct sdio_func *func = wl_to_func(wl);
138 134
139 sdio_claim_host(func);
140
141 if (unlikely(addr == HW_ACCESS_ELP_CTRL_REG_ADDR)) { 135 if (unlikely(addr == HW_ACCESS_ELP_CTRL_REG_ADDR)) {
142 sdio_f0_writeb(func, ((u8 *)buf)[0], addr, &ret); 136 sdio_f0_writeb(func, ((u8 *)buf)[0], addr, &ret);
143 wl1271_debug(DEBUG_SDIO, "sdio write 52 addr 0x%x, byte 0x%02x", 137 wl1271_debug(DEBUG_SDIO, "sdio write 52 addr 0x%x, byte 0x%02x",
@@ -153,8 +147,6 @@ static void wl1271_sdio_raw_write(struct wl1271 *wl, int addr, void *buf,
153 ret = sdio_memcpy_toio(func, addr, buf, len); 147 ret = sdio_memcpy_toio(func, addr, buf, len);
154 } 148 }
155 149
156 sdio_release_host(func);
157
158 if (ret) 150 if (ret)
159 wl1271_error("sdio write failed (%d)", ret); 151 wl1271_error("sdio write failed (%d)", ret);
160} 152}
@@ -176,7 +168,6 @@ static int wl1271_sdio_power_on(struct wl1271 *wl)
176 168
177 sdio_claim_host(func); 169 sdio_claim_host(func);
178 sdio_enable_func(func); 170 sdio_enable_func(func);
179 sdio_release_host(func);
180 171
181out: 172out:
182 return ret; 173 return ret;
@@ -187,7 +178,6 @@ static int wl1271_sdio_power_off(struct wl1271 *wl)
187 struct sdio_func *func = wl_to_func(wl); 178 struct sdio_func *func = wl_to_func(wl);
188 int ret; 179 int ret;
189 180
190 sdio_claim_host(func);
191 sdio_disable_func(func); 181 sdio_disable_func(func);
192 sdio_release_host(func); 182 sdio_release_host(func);
193 183