mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 13:11:40 +00:00
pcmcia: move pccard_get_configuration_info to ioctl
With the PCMCIA ioctl being the only remaining user of _get_configuration_info, move the function to pcmcia_ioctl.c Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
This commit is contained in:
parent
ef313e36d8
commit
64f3464251
@ -116,7 +116,6 @@ extern void pccard_sysfs_remove_socket(struct device *dev);
|
||||
extern struct rw_semaphore pcmcia_socket_list_rwsem;
|
||||
extern struct list_head pcmcia_socket_list;
|
||||
int pcmcia_get_window(struct pcmcia_socket *s, window_handle_t *handle, int idx, win_req_t *req);
|
||||
int pccard_get_configuration_info(struct pcmcia_socket *s, struct pcmcia_device *p_dev, config_info_t *config);
|
||||
int pccard_reset_card(struct pcmcia_socket *skt);
|
||||
|
||||
|
||||
|
@ -287,6 +287,78 @@ static int pccard_get_status(struct pcmcia_socket *s,
|
||||
return CS_SUCCESS;
|
||||
} /* pccard_get_status */
|
||||
|
||||
int pccard_get_configuration_info(struct pcmcia_socket *s,
|
||||
struct pcmcia_device *p_dev,
|
||||
config_info_t *config)
|
||||
{
|
||||
config_t *c;
|
||||
|
||||
if (!(s->state & SOCKET_PRESENT))
|
||||
return CS_NO_CARD;
|
||||
|
||||
|
||||
#ifdef CONFIG_CARDBUS
|
||||
if (s->state & SOCKET_CARDBUS) {
|
||||
memset(config, 0, sizeof(config_info_t));
|
||||
config->Vcc = s->socket.Vcc;
|
||||
config->Vpp1 = config->Vpp2 = s->socket.Vpp;
|
||||
config->Option = s->cb_dev->subordinate->number;
|
||||
if (s->state & SOCKET_CARDBUS_CONFIG) {
|
||||
config->Attributes = CONF_VALID_CLIENT;
|
||||
config->IntType = INT_CARDBUS;
|
||||
config->AssignedIRQ = s->irq.AssignedIRQ;
|
||||
if (config->AssignedIRQ)
|
||||
config->Attributes |= CONF_ENABLE_IRQ;
|
||||
if (s->io[0].res) {
|
||||
config->BasePort1 = s->io[0].res->start;
|
||||
config->NumPorts1 = s->io[0].res->end -
|
||||
config->BasePort1 + 1;
|
||||
}
|
||||
}
|
||||
return CS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (p_dev) {
|
||||
c = p_dev->function_config;
|
||||
config->Function = p_dev->func;
|
||||
} else {
|
||||
c = NULL;
|
||||
config->Function = 0;
|
||||
}
|
||||
|
||||
if ((c == NULL) || !(c->state & CONFIG_LOCKED)) {
|
||||
config->Attributes = 0;
|
||||
config->Vcc = s->socket.Vcc;
|
||||
config->Vpp1 = config->Vpp2 = s->socket.Vpp;
|
||||
return CS_SUCCESS;
|
||||
}
|
||||
|
||||
config->Attributes = c->Attributes | CONF_VALID_CLIENT;
|
||||
config->Vcc = s->socket.Vcc;
|
||||
config->Vpp1 = config->Vpp2 = s->socket.Vpp;
|
||||
config->IntType = c->IntType;
|
||||
config->ConfigBase = c->ConfigBase;
|
||||
config->Status = c->Status;
|
||||
config->Pin = c->Pin;
|
||||
config->Copy = c->Copy;
|
||||
config->Option = c->Option;
|
||||
config->ExtStatus = c->ExtStatus;
|
||||
config->Present = config->CardValues = c->CardValues;
|
||||
config->IRQAttributes = c->irq.Attributes;
|
||||
config->AssignedIRQ = s->irq.AssignedIRQ;
|
||||
config->BasePort1 = c->io.BasePort1;
|
||||
config->NumPorts1 = c->io.NumPorts1;
|
||||
config->Attributes1 = c->io.Attributes1;
|
||||
config->BasePort2 = c->io.BasePort2;
|
||||
config->NumPorts2 = c->io.NumPorts2;
|
||||
config->Attributes2 = c->io.Attributes2;
|
||||
config->IOAddrLines = c->io.IOAddrLines;
|
||||
|
||||
return CS_SUCCESS;
|
||||
} /* pccard_get_configuration_info */
|
||||
|
||||
|
||||
/*======================================================================
|
||||
|
||||
These manage a ring buffer of events pending for one user process
|
||||
|
@ -197,85 +197,6 @@ int pcmcia_access_configuration_register(struct pcmcia_device *p_dev,
|
||||
EXPORT_SYMBOL(pcmcia_access_configuration_register);
|
||||
|
||||
|
||||
int pccard_get_configuration_info(struct pcmcia_socket *s,
|
||||
struct pcmcia_device *p_dev,
|
||||
config_info_t *config)
|
||||
{
|
||||
config_t *c;
|
||||
|
||||
if (!(s->state & SOCKET_PRESENT))
|
||||
return CS_NO_CARD;
|
||||
|
||||
|
||||
#ifdef CONFIG_CARDBUS
|
||||
if (s->state & SOCKET_CARDBUS) {
|
||||
memset(config, 0, sizeof(config_info_t));
|
||||
config->Vcc = s->socket.Vcc;
|
||||
config->Vpp1 = config->Vpp2 = s->socket.Vpp;
|
||||
config->Option = s->cb_dev->subordinate->number;
|
||||
if (s->state & SOCKET_CARDBUS_CONFIG) {
|
||||
config->Attributes = CONF_VALID_CLIENT;
|
||||
config->IntType = INT_CARDBUS;
|
||||
config->AssignedIRQ = s->irq.AssignedIRQ;
|
||||
if (config->AssignedIRQ)
|
||||
config->Attributes |= CONF_ENABLE_IRQ;
|
||||
if (s->io[0].res) {
|
||||
config->BasePort1 = s->io[0].res->start;
|
||||
config->NumPorts1 = s->io[0].res->end - config->BasePort1 + 1;
|
||||
}
|
||||
}
|
||||
return CS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (p_dev) {
|
||||
c = p_dev->function_config;
|
||||
config->Function = p_dev->func;
|
||||
} else {
|
||||
c = NULL;
|
||||
config->Function = 0;
|
||||
}
|
||||
|
||||
if ((c == NULL) || !(c->state & CONFIG_LOCKED)) {
|
||||
config->Attributes = 0;
|
||||
config->Vcc = s->socket.Vcc;
|
||||
config->Vpp1 = config->Vpp2 = s->socket.Vpp;
|
||||
return CS_SUCCESS;
|
||||
}
|
||||
|
||||
config->Attributes = c->Attributes | CONF_VALID_CLIENT;
|
||||
config->Vcc = s->socket.Vcc;
|
||||
config->Vpp1 = config->Vpp2 = s->socket.Vpp;
|
||||
config->IntType = c->IntType;
|
||||
config->ConfigBase = c->ConfigBase;
|
||||
config->Status = c->Status;
|
||||
config->Pin = c->Pin;
|
||||
config->Copy = c->Copy;
|
||||
config->Option = c->Option;
|
||||
config->ExtStatus = c->ExtStatus;
|
||||
config->Present = config->CardValues = c->CardValues;
|
||||
config->IRQAttributes = c->irq.Attributes;
|
||||
config->AssignedIRQ = s->irq.AssignedIRQ;
|
||||
config->BasePort1 = c->io.BasePort1;
|
||||
config->NumPorts1 = c->io.NumPorts1;
|
||||
config->Attributes1 = c->io.Attributes1;
|
||||
config->BasePort2 = c->io.BasePort2;
|
||||
config->NumPorts2 = c->io.NumPorts2;
|
||||
config->Attributes2 = c->io.Attributes2;
|
||||
config->IOAddrLines = c->io.IOAddrLines;
|
||||
|
||||
return CS_SUCCESS;
|
||||
} /* pccard_get_configuration_info */
|
||||
|
||||
int pcmcia_get_configuration_info(struct pcmcia_device *p_dev,
|
||||
config_info_t *config)
|
||||
{
|
||||
return pccard_get_configuration_info(p_dev->socket, p_dev,
|
||||
config);
|
||||
}
|
||||
EXPORT_SYMBOL(pcmcia_get_configuration_info);
|
||||
|
||||
|
||||
/** pcmcia_get_window
|
||||
*/
|
||||
int pcmcia_get_window(struct pcmcia_socket *s, window_handle_t *handle,
|
||||
|
@ -372,7 +372,6 @@ enum service {
|
||||
struct pcmcia_socket;
|
||||
|
||||
int pcmcia_access_configuration_register(struct pcmcia_device *p_dev, conf_reg_t *reg);
|
||||
int pcmcia_get_configuration_info(struct pcmcia_device *p_dev, config_info_t *config);
|
||||
int pcmcia_get_mem_page(window_handle_t win, memreq_t *req);
|
||||
int pcmcia_map_mem_page(window_handle_t win, memreq_t *req);
|
||||
int pcmcia_modify_configuration(struct pcmcia_device *p_dev, modconf_t *mod);
|
||||
|
Loading…
Reference in New Issue
Block a user