mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
pcmcia: simplify Status, ExtStatus register access
The Status (CISREG_CCSR) and ExtStatus (CISREG_ESR) registers were only accessed to enable audio output for some drivers and IRQ for serial_cs.c. The former also required setting config_req_t.Attributes to CONF_ENABLE_SPKR; the latter can be simplified to setting this field to CONF_ENABLE_ESR. CC: [email protected] CC: [email protected] CC: [email protected] CC: [email protected] Tested-by: Wolfram Sang <[email protected]> Signed-off-by: Dominik Brodowski <[email protected]>
This commit is contained in:
parent
1a4a046030
commit
fc30110103
16 changed files with 38 additions and 53 deletions
|
|
@ -36,7 +36,7 @@ typedef struct config_t {
|
|||
unsigned int Attributes;
|
||||
unsigned int IntType;
|
||||
unsigned int ConfigBase;
|
||||
unsigned char Status, Option, ExtStatus;
|
||||
unsigned char Option;
|
||||
unsigned int CardValues;
|
||||
|
||||
struct resource io[MAX_IO_WIN]; /* io ports */
|
||||
|
|
|
|||
|
|
@ -441,6 +441,8 @@ int pcmcia_request_configuration(struct pcmcia_device *p_dev,
|
|||
struct pcmcia_socket *s = p_dev->socket;
|
||||
config_t *c;
|
||||
pccard_io_map iomap;
|
||||
unsigned char status = 0;
|
||||
unsigned char ext_status = 0;
|
||||
|
||||
if (!(s->state & SOCKET_PRESENT))
|
||||
return -ENODEV;
|
||||
|
|
@ -476,12 +478,21 @@ int pcmcia_request_configuration(struct pcmcia_device *p_dev,
|
|||
s->socket.flags |= SS_ZVCARD | SS_IOCARD;
|
||||
if (req->Attributes & CONF_ENABLE_DMA)
|
||||
s->socket.flags |= SS_DMA_MODE;
|
||||
if (req->Attributes & CONF_ENABLE_SPKR)
|
||||
if (req->Attributes & CONF_ENABLE_SPKR) {
|
||||
s->socket.flags |= SS_SPKR_ENA;
|
||||
status = CCSR_AUDIO_ENA;
|
||||
if (!(req->Present & PRESENT_STATUS))
|
||||
dev_warn(&p_dev->dev, "speaker requested, but "
|
||||
"PRESENT_STATUS not set!\n");
|
||||
}
|
||||
if (req->Attributes & CONF_ENABLE_IRQ)
|
||||
s->socket.io_irq = s->pcmcia_irq;
|
||||
else
|
||||
s->socket.io_irq = 0;
|
||||
if (req->Attributes & CONF_ENABLE_ESR) {
|
||||
req->Present |= PRESENT_EXT_STATUS;
|
||||
ext_status = ESR_REQ_ATTN_ENA;
|
||||
}
|
||||
s->ops->set_socket(s, &s->socket);
|
||||
s->lock_count++;
|
||||
|
||||
|
|
@ -513,14 +524,13 @@ int pcmcia_request_configuration(struct pcmcia_device *p_dev,
|
|||
pcmcia_write_cis_mem(s, 1, (base + CISREG_COR)>>1, 1, &c->Option);
|
||||
mdelay(40);
|
||||
}
|
||||
if (req->Present & PRESENT_STATUS) {
|
||||
c->Status = req->Status;
|
||||
pcmcia_write_cis_mem(s, 1, (base + CISREG_CCSR)>>1, 1, &c->Status);
|
||||
}
|
||||
if (req->Present & PRESENT_EXT_STATUS) {
|
||||
c->ExtStatus = req->ExtStatus;
|
||||
pcmcia_write_cis_mem(s, 1, (base + CISREG_ESR)>>1, 1, &c->ExtStatus);
|
||||
}
|
||||
if (req->Present & PRESENT_STATUS)
|
||||
pcmcia_write_cis_mem(s, 1, (base + CISREG_CCSR)>>1, 1, &status);
|
||||
|
||||
if (req->Present & PRESENT_EXT_STATUS)
|
||||
pcmcia_write_cis_mem(s, 1, (base + CISREG_ESR)>>1, 1,
|
||||
&ext_status);
|
||||
|
||||
if (req->Present & PRESENT_IOBASE_0) {
|
||||
u8 b = c->io[0].start & 0xff;
|
||||
pcmcia_write_cis_mem(s, 1, (base + CISREG_IOBASE_0)>>1, 1, &b);
|
||||
|
|
|
|||
Loading…
Reference in a new issue