summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2002-07-22 06:46:10 +0000
committerimp <imp@FreeBSD.org>2002-07-22 06:46:10 +0000
commit2442eb4eddf7def948501cf76d5fa2eab08df870 (patch)
tree6c8157b3de31e1f4ac84cf47d28edb2982fdc1be
parente73489bbe4deeedc62a5f34ecf84e42439a6dd86 (diff)
downloadFreeBSD-src-2442eb4eddf7def948501cf76d5fa2eab08df870.zip
FreeBSD-src-2442eb4eddf7def948501cf76d5fa2eab08df870.tar.gz
Copy manufacturer and version string into the kernel, and copy it to
the slot info. This brings OLDCARD's API much closer to NEWCARD and will allow moving more information into the kernel from pccard.conf for common drivers (ed).
-rw-r--r--sys/pccard/cardinfo.h6
-rw-r--r--sys/pccard/pccard.c2
-rw-r--r--sys/pccard/slot.h4
3 files changed, 10 insertions, 2 deletions
diff --git a/sys/pccard/cardinfo.h b/sys/pccard/cardinfo.h
index 11bd730..173f27c 100644
--- a/sys/pccard/cardinfo.h
+++ b/sys/pccard/cardinfo.h
@@ -133,6 +133,8 @@ struct io_desc {
/*
* Device descriptor for allocation of driver.
*/
+#define DEV_MISC_LEN 36
+#define DEV_MAX_CIS_LEN 40
struct dev_desc {
char name[16]; /* Driver name */
int unit; /* Driver unit number */
@@ -142,7 +144,9 @@ struct dev_desc {
int iosize; /* Length of I/O ports */
int irqmask; /* Interrupt number(s) to allocate */
int flags; /* Device flags */
- uint8_t misc[116]; /* For any random info */
+ uint8_t misc[DEV_MISC_LEN]; /* For any random info */
+ uint8_t manufstr[DEV_MAX_CIS_LEN];
+ uint8_t versstr[DEV_MAX_CIS_LEN];
uint32_t manufacturer; /* Manufacturer ID */
uint32_t product; /* Product ID */
uint32_t prodext; /* Product ID (extended) */
diff --git a/sys/pccard/pccard.c b/sys/pccard/pccard.c
index 6e51a78..b145317 100644
--- a/sys/pccard/pccard.c
+++ b/sys/pccard/pccard.c
@@ -224,6 +224,8 @@ allocate_driver(struct slot *slt, struct dev_desc *desc)
devi->running = 1;
devi->slt = slt;
bcopy(desc->misc, devi->misc, sizeof(desc->misc));
+ strcpy(devi->manufstr, desc->manufstr);
+ strcpy(devi->versstr, desc->versstr);
devi->manufacturer = desc->manufacturer;
devi->product = desc->product;
devi->prodext = desc->prodext;
diff --git a/sys/pccard/slot.h b/sys/pccard/slot.h
index 9f40ae4..f797451 100644
--- a/sys/pccard/slot.h
+++ b/sys/pccard/slot.h
@@ -88,7 +88,9 @@ struct slot_ctrl {
struct pccard_devinfo {
uint8_t name[128];
int running; /* Current state of driver */
- uint8_t misc[116]; /* For any random info */
+ uint8_t misc[DEV_MISC_LEN]; /* For any random info */
+ uint8_t manufstr[DEV_MAX_CIS_LEN];
+ uint8_t versstr[DEV_MAX_CIS_LEN];
uint32_t manufacturer; /* Manufacturer ID */
uint32_t product; /* Product ID */
uint32_t prodext; /* Product ID (extended) */
OpenPOWER on IntegriCloud