summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/pcmcia/probe.c
diff options
context:
space:
mode:
authorNicolas Lécureuil <neoclust@mageia.org>2012-11-09 20:44:52 +0000
committerNicolas Lécureuil <neoclust@mageia.org>2012-11-09 20:44:52 +0000
commit820fd62a86a88b3c53d5ebe1939e4dc51cc8bcdc (patch)
treec68a3c36dfae599c50c1f1dcda92113dab70effc /mdk-stage1/pcmcia/probe.c
parent0db2372d5a031bad0f5df98b83f7fb7d648215ed (diff)
downloaddrakx-backup-do-not-use-820fd62a86a88b3c53d5ebe1939e4dc51cc8bcdc.tar
drakx-backup-do-not-use-820fd62a86a88b3c53d5ebe1939e4dc51cc8bcdc.tar.gz
drakx-backup-do-not-use-820fd62a86a88b3c53d5ebe1939e4dc51cc8bcdc.tar.bz2
drakx-backup-do-not-use-820fd62a86a88b3c53d5ebe1939e4dc51cc8bcdc.tar.xz
drakx-backup-do-not-use-820fd62a86a88b3c53d5ebe1939e4dc51cc8bcdc.zip
Do not mix tabs and spaces
Diffstat (limited to 'mdk-stage1/pcmcia/probe.c')
-rw-r--r--mdk-stage1/pcmcia/probe.c313
1 files changed, 209 insertions, 104 deletions
diff --git a/mdk-stage1/pcmcia/probe.c b/mdk-stage1/pcmcia/probe.c
index 240fe3a17..222be6239 100644
--- a/mdk-stage1/pcmcia/probe.c
+++ b/mdk-stage1/pcmcia/probe.c
@@ -12,9 +12,6 @@
*
*
* Code comes from /anonymous@projects.sourceforge.net:/pub/pcmcia-cs/pcmcia-cs-3.1.29.tar.bz2
- *
- * FIXME: resync with latest pcmcia-cs-3.2.8 or with pcmciautils-0.18 (which uses sysfs)
- *
*/
/*======================================================================
@@ -58,15 +55,18 @@
#include <errno.h>
#include <fcntl.h>
+//mdk-stage1// #include <pcmcia/config.h>
#include "log.h"
#include "pcmcia.h"
/*====================================================================*/
+//mdk-stage1// #ifdef CONFIG_PCI
+
typedef struct {
- u_short vendor, device;
- char *modname;
- char *name;
+ u_short vendor, device;
+ char *modname;
+ char *name;
} pci_id_t;
pci_id_t pci_id[] = {
@@ -138,40 +138,79 @@ static int pci_probe(void)
u_int device, vendor, i;
FILE *f;
+//mdk-stage1// if (!module)
log_message("PCMCIA: probing PCI bus..");
if ((f = fopen("/proc/bus/pci/devices", "r")) != NULL) {
- while (fgets(s, 256, f) != NULL) {
- u_int n = strtoul(s+5, NULL, 16);
- vendor = (n >> 16); device = (n & 0xffff);
- if (vendor == 0x1217) {
- driver = "yenta_socket";
- name = "O2 Micro|PCMCIA Controller";
- break;
- }
- for (i = 0; i < PCI_COUNT; i++)
- if ((vendor == pci_id[i].vendor) &&
- (device == pci_id[i].device)) break;
- if (i < PCI_COUNT) {
- name = pci_id[i].name;
- driver = pci_id[i].modname;
- }
- }
+ while (fgets(s, 256, f) != NULL) {
+ u_int n = strtoul(s+5, NULL, 16);
+ vendor = (n >> 16); device = (n & 0xffff);
+ if (vendor == 0x1217) {
+ driver = "yenta_socket";
+ name = "O2 Micro|PCMCIA Controller";
+ break;
+ }
+ for (i = 0; i < PCI_COUNT; i++)
+ if ((vendor == pci_id[i].vendor) &&
+ (device == pci_id[i].device)) break;
+ if (i < PCI_COUNT) {
+ name = pci_id[i].name;
+ driver = pci_id[i].modname;
+ }
+ }
}
+//mdk-stage1// else if ((f = fopen("/proc/pci", "r")) != NULL) {
+//mdk-stage1// while (fgets(s, 256, f) != NULL) {
+//mdk-stage1// t = strstr(s, "Device id=");
+//mdk-stage1// if (t) {
+//mdk-stage1// device = strtoul(t+10, NULL, 16);
+//mdk-stage1// t = strstr(s, "Vendor id=");
+//mdk-stage1// vendor = strtoul(t+10, NULL, 16);
+//mdk-stage1// for (i = 0; i < PCI_COUNT; i++)
+//mdk-stage1// if ((vendor == pci_id[i].vendor) &&
+//mdk-stage1// (device == pci_id[i].device)) break;
+//mdk-stage1// } else
+//mdk-stage1// for (i = 0; i < PCI_COUNT; i++)
+//mdk-stage1// if (strstr(s, pci_id[i].tag) != NULL) break;
+//mdk-stage1// if (i != PCI_COUNT) {
+//mdk-stage1// name = pci_id[i].name;
+//mdk-stage1// break;
+//mdk-stage1// } else {
+//mdk-stage1// t = strstr(s, "CardBus bridge");
+//mdk-stage1// if (t != NULL) {
+//mdk-stage1// name = t + 16;
+//mdk-stage1// t = strchr(s, '(');
+//mdk-stage1// t[-1] = '\0';
+//mdk-stage1// break;
+//mdk-stage1// }
+//mdk-stage1// }
+//mdk-stage1// }
+//mdk-stage1// }
fclose(f);
if (name) {
- log_message("\t%s found, 2 sockets (driver %s).", name, driver);
- return 0;
+//mdk-stage1// if (module)
+//mdk-stage1// printf("i82365\n");
+//mdk-stage1// else
+ log_message("\t%s found, 2 sockets (driver %s).", name, driver);
+ return 0;
} else {
- log_message("\tnot found.");
- return -ENODEV;
+//mdk-stage1// if (!module)
+ log_message("\tnot found.");
+ return -ENODEV;
}
}
+//mdk-stage1// #endif
/*====================================================================*/
+//mdk-stage1// #ifdef CONFIG_ISA
+//mdk-stage1//
+//mdk-stage1// #ifdef __GLIBC__
#include <sys/io.h>
+//mdk-stage1// #else
+//mdk-stage1// #include <asm/io.h>
+//mdk-stage1// #endif
typedef u_short ioaddr_t;
#include "i82365.h"
@@ -212,7 +251,9 @@ int i365_probe(void)
int val, sock, done;
char *name = "i82365sl";
+//mdk-stage1// if (!module)
log_message("PCMCIA: probing for Intel PCIC (ISA)..");
+//mdk-stage1// if (verbose) printf("\n");
sock = done = 0;
if (ioperm(i365_base, 4, 1)) {
@@ -221,35 +262,39 @@ int i365_probe(void)
}
ioperm(0x80, 1, 1);
for (; sock < 2; sock++) {
- val = i365_get(sock, I365_IDENT);
- switch (val) {
- case 0x82:
- name = "i82365sl A step";
- break;
- case 0x83:
- name = "i82365sl B step";
- break;
- case 0x84:
- name = "VLSI 82C146";
- break;
- case 0x88: case 0x89: case 0x8a:
- name = "IBM Clone";
- break;
- case 0x8b: case 0x8c:
- break;
- default:
- done = 1;
- }
- if (done) break;
+ val = i365_get(sock, I365_IDENT);
+//mdk-stage1// if (verbose)
+//mdk-stage1// printf(" ident(%d)=%#2.2x", sock, val);
+ switch (val) {
+ case 0x82:
+ name = "i82365sl A step";
+ break;
+ case 0x83:
+ name = "i82365sl B step";
+ break;
+ case 0x84:
+ name = "VLSI 82C146";
+ break;
+ case 0x88: case 0x89: case 0x8a:
+ name = "IBM Clone";
+ break;
+ case 0x8b: case 0x8c:
+ break;
+ default:
+ done = 1;
+ }
+ if (done) break;
}
+//mdk-stage1// if (verbose) printf("\n ");
if (sock == 0) {
- log_message("\tnot found.");
- return -ENODEV;
+//mdk-stage1// if (!module)
+ log_message("\tnot found.");
+ return -ENODEV;
}
if ((sock == 2) && (strcmp(name, "VLSI 82C146") == 0))
- name = "i82365sl DF";
+ name = "i82365sl DF";
/* Check for Vadem chips */
outb(0x0e, i365_base);
@@ -257,40 +302,49 @@ int i365_probe(void)
i365_bset(0, VG468_MISC, VG468_MISC_VADEMREV);
val = i365_get(0, I365_IDENT);
if (val & I365_IDENT_VADEM) {
- if ((val & 7) < 4)
- name = "Vadem VG-468";
- else
- name = "Vadem VG-469";
- i365_bclr(0, VG468_MISC, VG468_MISC_VADEMREV);
+ if ((val & 7) < 4)
+ name = "Vadem VG-468";
+ else
+ name = "Vadem VG-469";
+ i365_bclr(0, VG468_MISC, VG468_MISC_VADEMREV);
}
/* Check for Cirrus CL-PD67xx chips */
i365_set(0, PD67_CHIP_INFO, 0);
val = i365_get(0, PD67_CHIP_INFO);
if ((val & PD67_INFO_CHIP_ID) == PD67_INFO_CHIP_ID) {
- val = i365_get(0, PD67_CHIP_INFO);
- if ((val & PD67_INFO_CHIP_ID) == 0) {
- if (val & PD67_INFO_SLOTS)
- name = "Cirrus CL-PD672x";
- else {
- name = "Cirrus CL-PD6710";
- sock = 1;
- }
- i365_set(0, PD67_EXT_INDEX, 0xe5);
- if (i365_get(0, PD67_EXT_INDEX) != 0xe5)
- name = "VIA VT83C469";
- }
+ val = i365_get(0, PD67_CHIP_INFO);
+ if ((val & PD67_INFO_CHIP_ID) == 0) {
+ if (val & PD67_INFO_SLOTS)
+ name = "Cirrus CL-PD672x";
+ else {
+ name = "Cirrus CL-PD6710";
+ sock = 1;
+ }
+ i365_set(0, PD67_EXT_INDEX, 0xe5);
+ if (i365_get(0, PD67_EXT_INDEX) != 0xe5)
+ name = "VIA VT83C469";
+ }
}
- printf("\t%s found, %d sockets.\n", name, sock);
+//mdk-stage1// if (module)
+//mdk-stage1// printf("i82365\n");
+//mdk-stage1// else
+ printf("\t%s found, %d sockets.\n", name, sock);
return 0;
} /* i365_probe */
+//mdk-stage1//#endif /* CONFIG_ISA */
+
/*====================================================================*/
+//mdk-stage1//#ifdef CONFIG_ISA
+
#include "tcic.h"
+//mdk-stage1//static ioaddr_t tcic_base = TCIC_BASE;
+
static u_char tcic_getb(ioaddr_t base, u_char reg)
{
u_char val = inb(base+reg);
@@ -344,9 +398,10 @@ int tcic_probe_at(ioaddr_t base)
/* Anything there?? */
for (i = 0; i < 0x10; i += 2)
- if (tcic_getw(base, i) == 0xffff)
- return -1;
+ if (tcic_getw(base, i) == 0xffff)
+ return -1;
+//mdk-stage1// if (!module)
log_message("\tat %#3.3x: ", base); fflush(stdout);
/* Try to reset the chip */
@@ -357,13 +412,13 @@ int tcic_probe_at(ioaddr_t base)
old = tcic_getw(base, TCIC_ADDR);
tcic_setw(base, TCIC_ADDR, 0);
if (tcic_getw(base, TCIC_ADDR) != 0) {
- tcic_setw(base, TCIC_ADDR, old);
- return -2;
+ tcic_setw(base, TCIC_ADDR, old);
+ return -2;
}
tcic_setw(base, TCIC_ADDR, 0xc3a5);
if (tcic_getw(base, TCIC_ADDR) != 0xc3a5)
- return -3;
+ return -3;
return 2;
}
@@ -372,55 +427,105 @@ int tcic_probe(void)
{
int sock, id;
+//mdk-stage1// if (!module)
log_message("PCMCIA: probing for Databook TCIC-2 (ISA).."); fflush(stdout);
if (ioperm(TCIC_BASE, 16, 1)) {
- log_perror("PCMCIA: ioperm");
- return -1;
+ log_perror("PCMCIA: ioperm");
+ return -1;
}
ioperm(0x80, 1, 1);
sock = tcic_probe_at(TCIC_BASE);
if (sock <= 0) {
- log_message("\tnot found.");
- return -ENODEV;
+//mdk-stage1// if (!module)
+ log_message("\tnot found.");
+ return -ENODEV;
}
- id = get_tcic_id(TCIC_BASE);
- switch (id) {
- case TCIC_ID_DB86082:
- log_message("DB86082"); break;
- case TCIC_ID_DB86082A:
- log_message("DB86082A"); break;
- case TCIC_ID_DB86084:
- log_message("DB86084"); break;
- case TCIC_ID_DB86084A:
- log_message("DB86084A"); break;
- case TCIC_ID_DB86072:
- log_message("DB86072"); break;
- case TCIC_ID_DB86184:
- log_message("DB86184"); break;
- case TCIC_ID_DB86082B:
- log_message("DB86082B"); break;
- default:
- log_message("Unknown TCIC-2 ID 0x%02x", id);
- }
- log_message(" found at %#6x, %d sockets.", TCIC_BASE, sock);
+//mdk-stage1// if (module)
+//mdk-stage1// printf("tcic\n");
+//mdk-stage1// else {
+ id = get_tcic_id(TCIC_BASE);
+ switch (id) {
+ case TCIC_ID_DB86082:
+ log_message("DB86082"); break;
+ case TCIC_ID_DB86082A:
+ log_message("DB86082A"); break;
+ case TCIC_ID_DB86084:
+ log_message("DB86084"); break;
+ case TCIC_ID_DB86084A:
+ log_message("DB86084A"); break;
+ case TCIC_ID_DB86072:
+ log_message("DB86072"); break;
+ case TCIC_ID_DB86184:
+ log_message("DB86184"); break;
+ case TCIC_ID_DB86082B:
+ log_message("DB86082B"); break;
+ default:
+ log_message("Unknown TCIC-2 ID 0x%02x", id);
+ }
+ log_message(" found at %#6x, %d sockets.", TCIC_BASE, sock);
+//mdk-stage1// }
return 0;
} /* tcic_probe */
+//mdk-stage1// #endif /* CONFIG_ISA */
+
+//mdk-stage1// /*====================================================================*/
+//mdk-stage1//
+//mdk-stage1// int main(int argc, char *argv[])
+//mdk-stage1// {
+//mdk-stage1// int optch, errflg;
+//mdk-stage1// extern char *optarg;
+//mdk-stage1// int verbose = 0, module = 0;
+//mdk-stage1//
+//mdk-stage1// errflg = 0;
+//mdk-stage1// while ((optch = getopt(argc, argv, "t:vxm")) != -1) {
+//mdk-stage1// switch (optch) {
+//mdk-stage1// #ifdef CONFIG_ISA
+//mdk-stage1// case 't':
+//mdk-stage1// tcic_base = strtoul(optarg, NULL, 0); break;
+//mdk-stage1// #endif
+//mdk-stage1// case 'v':
+//mdk-stage1// verbose = 1; break;
+//mdk-stage1// case 'm':
+//mdk-stage1// module = 1; break;
+//mdk-stage1// default:
+//mdk-stage1// errflg = 1; break;
+//mdk-stage1// }
+//mdk-stage1// }
+//mdk-stage1// if (errflg || (optind < argc)) {
+//mdk-stage1// fprintf(stderr, "usage: %s [-t tcic_base] [-v] [-m]\n", argv[0]);
+//mdk-stage1// exit(EXIT_FAILURE);
+//mdk-stage1// }
+//mdk-stage1//
+//mdk-stage1// #ifdef CONFIG_PCI
+//mdk-stage1// if (pci_probe(verbose, module) == 0)
+//mdk-stage1// exit(EXIT_SUCCESS);
+//mdk-stage1// #endif
+//mdk-stage1// #ifdef CONFIG_ISA
+//mdk-stage1// if (i365_probe(verbose, module) == 0)
+//mdk-stage1// exit(EXIT_SUCCESS);
+//mdk-stage1// else if (tcic_probe(verbose, module, tcic_base) == 0)
+//mdk-stage1// exit(EXIT_SUCCESS);
+//mdk-stage1// #endif
+//mdk-stage1// exit(EXIT_FAILURE);
+//mdk-stage1// return 0;
+//mdk-stage1// }
+
char * pcmcia_probe(void)
{
- if (!pci_probe())
- return driver;
+ if (!pci_probe())
+ return driver;
#if !defined(__x86_64__)
- else if (!i365_probe())
- return "pd6729";
- else if (!tcic_probe())
- return "tcic";
+ else if (!i365_probe())
+ return "pd6729";
+ else if (!tcic_probe())
+ return "tcic";
#endif
- else
- return NULL;
+ else
+ return NULL;
}