summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/pcmcia/startup.c
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/pcmcia/startup.c')
-rw-r--r--mdk-stage1/pcmcia/startup.c290
1 files changed, 145 insertions, 145 deletions
diff --git a/mdk-stage1/pcmcia/startup.c b/mdk-stage1/pcmcia/startup.c
index 4112a439c..e9004484a 100644
--- a/mdk-stage1/pcmcia/startup.c
+++ b/mdk-stage1/pcmcia/startup.c
@@ -1,7 +1,7 @@
/*
* Startup tool for non statically mapped PCMCIA sockets
*
- * (C) 2005 Dominik Brodowski <linux@brodo.de>
+ * (C) 2005 Dominik Brodowski <linux@brodo.de>
*
* The initial developer of the original code is David A. Hinds
* <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
@@ -42,149 +42,149 @@ enum {
static const char *resource_files[MAX_RESOURCE_FILES] = {
- [RESOURCE_MEM] = "available_resources_mem",
- [RESOURCE_IO] = "available_resources_io",
+ [RESOURCE_MEM] = "available_resources_mem",
+ [RESOURCE_IO] = "available_resources_io",
};
#define PATH_TO_SOCKET "/sys/class/pcmcia_socket/"
static int add_available_resource(unsigned int socket_no, unsigned int type,
- unsigned int action,
- unsigned long start, unsigned long end)
+ unsigned int action,
+ unsigned long start, unsigned long end)
{
- char file[SYSFS_PATH_MAX];
- char content[SYSFS_PATH_MAX];
- struct sysfs_attribute *attr;
- int ret;
- size_t len;
+ char file[SYSFS_PATH_MAX];
+ char content[SYSFS_PATH_MAX];
+ struct sysfs_attribute *attr;
+ int ret;
+ size_t len;
- if (type >= MAX_RESOURCE_FILES)
- return -EINVAL;
+ if (type >= MAX_RESOURCE_FILES)
+ return -EINVAL;
- if (end <= start)
- return -EINVAL;
+ if (end <= start)
+ return -EINVAL;
- dprintf("%d %d %d 0x%lx 0x%lx\n", socket_no, type, action, start, end);
+ dprintf("%d %d %d 0x%lx 0x%lx\n", socket_no, type, action, start, end);
- snprintf(file, SYSFS_PATH_MAX, PATH_TO_SOCKET "pcmcia_socket%u/%s",
- socket_no, resource_files[type]);
+ snprintf(file, SYSFS_PATH_MAX, PATH_TO_SOCKET "pcmcia_socket%u/%s",
+ socket_no, resource_files[type]);
- switch(action) {
- case ADD_MANAGED_RESOURCE:
- len = snprintf(content, SYSFS_PATH_MAX,
- "0x%08lx - 0x%08lx", start, end);
- break;
+ switch(action) {
+ case ADD_MANAGED_RESOURCE:
+ len = snprintf(content, SYSFS_PATH_MAX,
+ "0x%08lx - 0x%08lx", start, end);
+ break;
- case REMOVE_MANAGED_RESOURCE:
- len = snprintf(content, SYSFS_PATH_MAX,
- "- 0x%08lx - 0x%08lx", start, end);
- break;
+ case REMOVE_MANAGED_RESOURCE:
+ len = snprintf(content, SYSFS_PATH_MAX,
+ "- 0x%08lx - 0x%08lx", start, end);
+ break;
- default:
- return -EINVAL;
- }
+ default:
+ return -EINVAL;
+ }
- dprintf("content is %s\n", content);
+ dprintf("content is %s\n", content);
- dprintf("file is %s\n", file);
+ dprintf("file is %s\n", file);
- attr = sysfs_open_attribute(file);
- if (!attr)
- return -ENODEV;
+ attr = sysfs_open_attribute(file);
+ if (!attr)
+ return -ENODEV;
- dprintf("open, len %d\n", len);
+ dprintf("open, len %d\n", len);
- ret = sysfs_write_attribute(attr, content, len);
+ ret = sysfs_write_attribute(attr, content, len);
- dprintf("ret is %d\n", ret);
+ dprintf("ret is %d\n", ret);
- sysfs_close_attribute(attr);
+ sysfs_close_attribute(attr);
- return (ret);
+ return (ret);
}
static int setup_done(unsigned int socket_no)
{
- int ret;
- char file[SYSFS_PATH_MAX];
- struct sysfs_attribute *attr;
+ int ret;
+ char file[SYSFS_PATH_MAX];
+ struct sysfs_attribute *attr;
- snprintf(file, SYSFS_PATH_MAX, PATH_TO_SOCKET
- "pcmcia_socket%u/available_resources_setup_done",
- socket_no);
+ snprintf(file, SYSFS_PATH_MAX, PATH_TO_SOCKET
+ "pcmcia_socket%u/available_resources_setup_done",
+ socket_no);
- attr = sysfs_open_attribute(file);
- if (!attr)
- return -ENODEV;
+ attr = sysfs_open_attribute(file);
+ if (!attr)
+ return -ENODEV;
- ret = sysfs_write_attribute(attr, "42", 2);
+ ret = sysfs_write_attribute(attr, "42", 2);
- sysfs_close_attribute(attr);
+ sysfs_close_attribute(attr);
- return (ret);
+ return (ret);
}
static int disallow_irq(unsigned int socket_no, unsigned int irq)
{
- char file[SYSFS_PATH_MAX];
- char content[SYSFS_PATH_MAX];
- struct sysfs_attribute *attr;
- unsigned int mask = 0xfff;
- unsigned int new_mask;
- int ret;
- size_t len;
-
- if (irq >= 32)
- return -EINVAL;
-
- len = snprintf(file, SYSFS_PATH_MAX, PATH_TO_SOCKET
- "pcmcia_socket%u/card_irq_mask",
- socket_no);
- dprintf("file is %s\n", file);
-
- attr = sysfs_open_attribute(file);
- if (!attr)
- return -ENODEV;
-
- dprintf("open, len %d\n", len);
-
- ret = sysfs_read_attribute(attr);
- if (ret) {
- ret = -EINVAL;
- goto out;
- }
+ char file[SYSFS_PATH_MAX];
+ char content[SYSFS_PATH_MAX];
+ struct sysfs_attribute *attr;
+ unsigned int mask = 0xfff;
+ unsigned int new_mask;
+ int ret;
+ size_t len;
- if (!attr->value || (attr->len < 6)) {
- ret = -EIO;
- goto out;
- }
+ if (irq >= 32)
+ return -EINVAL;
+
+ len = snprintf(file, SYSFS_PATH_MAX, PATH_TO_SOCKET
+ "pcmcia_socket%u/card_irq_mask",
+ socket_no);
+ dprintf("file is %s\n", file);
+
+ attr = sysfs_open_attribute(file);
+ if (!attr)
+ return -ENODEV;
+
+ dprintf("open, len %d\n", len);
+
+ ret = sysfs_read_attribute(attr);
+ if (ret) {
+ ret = -EINVAL;
+ goto out;
+ }
- ret = sscanf(attr->value, "0x%x\n", &mask);
+ if (!attr->value || (attr->len < 6)) {
+ ret = -EIO;
+ goto out;
+ }
- new_mask = 1 << irq;
+ ret = sscanf(attr->value, "0x%x\n", &mask);
- mask &= ~new_mask;
+ new_mask = 1 << irq;
- len = snprintf(content, SYSFS_PATH_MAX, "0x%04x", mask);
+ mask &= ~new_mask;
- dprintf("content is %s\n", content);
+ len = snprintf(content, SYSFS_PATH_MAX, "0x%04x", mask);
- ret = sysfs_write_attribute(attr, content, len);
+ dprintf("content is %s\n", content);
+
+ ret = sysfs_write_attribute(attr, content, len);
out:
- sysfs_close_attribute(attr);
+ sysfs_close_attribute(attr);
- return (ret);
+ return (ret);
}
static void load_config(void)
{
if (chdir(configpath) != 0) {
- syslog(LOG_ERR, "chdir to %s failed: %m", configpath);
- exit(EXIT_FAILURE);
+ syslog(LOG_ERR, "chdir to %s failed: %m", configpath);
+ exit(EXIT_FAILURE);
}
parse_configfile("config.opts");
return;
@@ -196,76 +196,76 @@ static void adjust_resources(unsigned int socket_no)
adjust_list_t *al;
for (al = root_adjust; al; al = al->next) {
- switch (al->adj.Resource) {
- case RES_MEMORY_RANGE:
- add_available_resource(socket_no, RESOURCE_MEM,
- al->adj.Action,
- al->adj.resource.memory.Base,
- al->adj.resource.memory.Base +
- al->adj.resource.memory.Size - 1);
- break;
- case RES_IO_RANGE:
- add_available_resource(socket_no, RESOURCE_IO,
- al->adj.Action,
- al->adj.resource.io.BasePort,
- al->adj.resource.io.BasePort +
- al->adj.resource.io.NumPorts - 1);
- break;
- case RES_IRQ:
- if(al->adj.Action == REMOVE_MANAGED_RESOURCE)
- disallow_irq(socket_no, al->adj.resource.irq.IRQ);
- break;
- }
+ switch (al->adj.Resource) {
+ case RES_MEMORY_RANGE:
+ add_available_resource(socket_no, RESOURCE_MEM,
+ al->adj.Action,
+ al->adj.resource.memory.Base,
+ al->adj.resource.memory.Base +
+ al->adj.resource.memory.Size - 1);
+ break;
+ case RES_IO_RANGE:
+ add_available_resource(socket_no, RESOURCE_IO,
+ al->adj.Action,
+ al->adj.resource.io.BasePort,
+ al->adj.resource.io.BasePort +
+ al->adj.resource.io.NumPorts - 1);
+ break;
+ case RES_IRQ:
+ if(al->adj.Action == REMOVE_MANAGED_RESOURCE)
+ disallow_irq(socket_no, al->adj.resource.irq.IRQ);
+ break;
+ }
}
}
/* mdk-stage1
int main(int argc, char *argv[])
{
- char *socket_no;
- unsigned long socket, i;
- unsigned int all_sockets = 0;
-
-
- if ((socket_no = getenv("SOCKET_NO"))) {
- socket = strtoul(socket_no, NULL, 0);
- } else if (argc == 2) {
- socket = strtoul(argv[1], NULL, 0);
- } else if (argc == 1) {
- socket = 0;
- all_sockets = 1;
- } else {
- return -EINVAL;
- }
+ char *socket_no;
+ unsigned long socket, i;
+ unsigned int all_sockets = 0;
- load_config();
- for (i = 0; i < MAX_SOCKS; i++) {
- if ((socket != i) && (!all_sockets))
- continue;
+ if ((socket_no = getenv("SOCKET_NO"))) {
+ socket = strtoul(socket_no, NULL, 0);
+ } else if (argc == 2) {
+ socket = strtoul(argv[1], NULL, 0);
+ } else if (argc == 1) {
+ socket = 0;
+ all_sockets = 1;
+ } else {
+ return -EINVAL;
+ }
- adjust_resources(i);
- setup_done(i);
- }
+ load_config();
- return 0;
+ for (i = 0; i < MAX_SOCKS; i++) {
+ if ((socket != i) && (!all_sockets))
+ continue;
+
+ adjust_resources(i);
+ setup_done(i);
+ }
+
+ return 0;
}
*/
void pcmcia_socket_startup(int socket_no) {
- unsigned long i;
- unsigned int all_sockets = 0;
+ unsigned long i;
+ unsigned int all_sockets = 0;
if (socket_no == -1)
- all_sockets = 1;
+ all_sockets = 1;
- load_config();
+ load_config();
- for (i = 0; i < MAX_SOCKS; i++) {
- if ((socket_no != i) && (!all_sockets))
- continue;
+ for (i = 0; i < MAX_SOCKS; i++) {
+ if ((socket_no != i) && (!all_sockets))
+ continue;
- adjust_resources(i);
- setup_done(i);
- }
+ adjust_resources(i);
+ setup_done(i);
+ }
}