|
@@ -309,74 +309,6 @@ int pcmcia_get_window(struct pcmcia_socket *s, window_handle_t *handle,
|
|
|
EXPORT_SYMBOL(pcmcia_get_window);
|
|
|
|
|
|
|
|
|
-/** pccard_get_status
|
|
|
- *
|
|
|
- * Get the current socket state bits. We don't support the latched
|
|
|
- * SocketState yet: I haven't seen any point for it.
|
|
|
- */
|
|
|
-
|
|
|
-int pccard_get_status(struct pcmcia_socket *s, struct pcmcia_device *p_dev,
|
|
|
- cs_status_t *status)
|
|
|
-{
|
|
|
- config_t *c;
|
|
|
- int val;
|
|
|
-
|
|
|
- s->ops->get_status(s, &val);
|
|
|
- status->CardState = status->SocketState = 0;
|
|
|
- status->CardState |= (val & SS_DETECT) ? CS_EVENT_CARD_DETECT : 0;
|
|
|
- status->CardState |= (val & SS_CARDBUS) ? CS_EVENT_CB_DETECT : 0;
|
|
|
- status->CardState |= (val & SS_3VCARD) ? CS_EVENT_3VCARD : 0;
|
|
|
- status->CardState |= (val & SS_XVCARD) ? CS_EVENT_XVCARD : 0;
|
|
|
- if (s->state & SOCKET_SUSPEND)
|
|
|
- status->CardState |= CS_EVENT_PM_SUSPEND;
|
|
|
- if (!(s->state & SOCKET_PRESENT))
|
|
|
- return CS_NO_CARD;
|
|
|
-
|
|
|
- c = (p_dev) ? p_dev->function_config : NULL;
|
|
|
-
|
|
|
- if ((c != NULL) && (c->state & CONFIG_LOCKED) &&
|
|
|
- (c->IntType & (INT_MEMORY_AND_IO | INT_ZOOMED_VIDEO))) {
|
|
|
- u_char reg;
|
|
|
- if (c->CardValues & PRESENT_PIN_REPLACE) {
|
|
|
- pcmcia_read_cis_mem(s, 1, (c->ConfigBase+CISREG_PRR)>>1, 1, ®);
|
|
|
- status->CardState |=
|
|
|
- (reg & PRR_WP_STATUS) ? CS_EVENT_WRITE_PROTECT : 0;
|
|
|
- status->CardState |=
|
|
|
- (reg & PRR_READY_STATUS) ? CS_EVENT_READY_CHANGE : 0;
|
|
|
- status->CardState |=
|
|
|
- (reg & PRR_BVD2_STATUS) ? CS_EVENT_BATTERY_LOW : 0;
|
|
|
- status->CardState |=
|
|
|
- (reg & PRR_BVD1_STATUS) ? CS_EVENT_BATTERY_DEAD : 0;
|
|
|
- } else {
|
|
|
- /* No PRR? Then assume we're always ready */
|
|
|
- status->CardState |= CS_EVENT_READY_CHANGE;
|
|
|
- }
|
|
|
- if (c->CardValues & PRESENT_EXT_STATUS) {
|
|
|
- pcmcia_read_cis_mem(s, 1, (c->ConfigBase+CISREG_ESR)>>1, 1, ®);
|
|
|
- status->CardState |=
|
|
|
- (reg & ESR_REQ_ATTN) ? CS_EVENT_REQUEST_ATTENTION : 0;
|
|
|
- }
|
|
|
- return CS_SUCCESS;
|
|
|
- }
|
|
|
- status->CardState |=
|
|
|
- (val & SS_WRPROT) ? CS_EVENT_WRITE_PROTECT : 0;
|
|
|
- status->CardState |=
|
|
|
- (val & SS_BATDEAD) ? CS_EVENT_BATTERY_DEAD : 0;
|
|
|
- status->CardState |=
|
|
|
- (val & SS_BATWARN) ? CS_EVENT_BATTERY_LOW : 0;
|
|
|
- status->CardState |=
|
|
|
- (val & SS_READY) ? CS_EVENT_READY_CHANGE : 0;
|
|
|
- return CS_SUCCESS;
|
|
|
-} /* pccard_get_status */
|
|
|
-
|
|
|
-int pcmcia_get_status(struct pcmcia_device *p_dev, cs_status_t *status)
|
|
|
-{
|
|
|
- return pccard_get_status(p_dev->socket, p_dev, status);
|
|
|
-}
|
|
|
-EXPORT_SYMBOL(pcmcia_get_status);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
/** pcmcia_get_mem_page
|
|
|
*
|
|
|
* Change the card address of an already open memory window.
|