Commit d250a4810402ec68f64802b66340a0e70c61cbd3
Committed by
Dominik Brodowski
1 parent
598736c556
Exists in
master
and in
4 other branches
[PATCH] yenta: do power-up only after socket is configured
Power-up the card only after the socket is configured. power-down in the old place. The point is not to power-up the card before the interrupt routing is set up correctly. Signed-off-by: Daniel Ritz <daniel.ritz@gmx.ch> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Showing 1 changed file with 8 additions and 1 deletions Side-by-side Diff
drivers/pcmcia/yenta_socket.c
| ... | ... | @@ -287,7 +287,10 @@ |
| 287 | 287 | struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket); |
| 288 | 288 | u16 bridge; |
| 289 | 289 | |
| 290 | - yenta_set_power(socket, state); | |
| 290 | + /* if powering down: do it immediately */ | |
| 291 | + if (state->Vcc == 0) | |
| 292 | + yenta_set_power(socket, state); | |
| 293 | + | |
| 291 | 294 | socket->io_irq = state->io_irq; |
| 292 | 295 | bridge = config_readw(socket, CB_BRIDGE_CONTROL) & ~(CB_BRIDGE_CRST | CB_BRIDGE_INTR); |
| 293 | 296 | if (cb_readl(socket, CB_SOCKET_STATE) & CB_CBCARD) { |
| ... | ... | @@ -339,6 +342,10 @@ |
| 339 | 342 | /* Socket event mask: get card insert/remove events.. */ |
| 340 | 343 | cb_writel(socket, CB_SOCKET_EVENT, -1); |
| 341 | 344 | cb_writel(socket, CB_SOCKET_MASK, CB_CDMASK); |
| 345 | + | |
| 346 | + /* if powering up: do it as the last step when the socket is configured */ | |
| 347 | + if (state->Vcc != 0) | |
| 348 | + yenta_set_power(socket, state); | |
| 342 | 349 | return 0; |
| 343 | 350 | } |
| 344 | 351 |