version 1.1.1.1, 2007/10/16 09:41:05 |
version 1.9, 2007/12/21 17:38:56 |
|
|
#define _SYS_DEVICE_H |
#define _SYS_DEVICE_H |
#include <sys/types.h> |
#include <sys/types.h> |
|
|
#define DVNAMELEN 8 |
#define DVNAMELEN 10 |
|
|
struct device { |
struct device { |
// char dv_name[DVNAMELEN]; /* device name up to 7 chars */ |
// char dv_name[DVNAMELEN]; /* device name up to 7 chars */ |
|
|
uint32_t dr_ddsize; /* size of xxx_dd (devdata) */ |
uint32_t dr_ddsize; /* size of xxx_dd (devdata) */ |
int (*dr_attach)(struct device *self, uint32_t loc, uint8_t flags); /* attach subroutine */ |
int (*dr_attach)(struct device *self, uint32_t loc, uint8_t flags); /* attach subroutine */ |
int (*dr_detach)(struct device *self); /* detach subroutine */ |
int (*dr_detach)(struct device *self); /* detach subroutine */ |
// void (*dr_interrupt)(struct device *self); /* intr handler */ |
void (*dr_interrupt)(struct device *self); /* intr handler */ |
}; |
}; |
|
|
|
|
|
|
/* |
/* |
* Associate actual driver with device name. |
* Associate actual driver with device name. |
*/ |
*/ |
char di_dname[DVNAMELEN]; /* device name */ |
char *di_dname; /* device name */ |
struct driver *di_driverp; /* pointer to driver */ |
struct driver *di_driverp; /* pointer to driver */ |
int8_t di_ninstances; /* number of already created devices; for dv_minor */ |
int8_t di_ninstances; /* number of already created devices; for dv_minor */ |
}; |
}; |
|
|
|
|
struct attachinfo { |
struct attachinfo { |
/* |
/* |
* Attach hint. Describes where to attach particular device. |
* Attach hint. Describes where to attach particular device. |
* "child" at "parent" 0 loc 0x16000000 flags 0x00 |
* "child" at "parent" 0 loc 0x16000000 intrno 4 flags 0x00 |
*/ |
*/ |
char ai_cname[DVNAMELEN]; /* child device name */ |
char *ai_cname; /* child device name */ |
char ai_pname[DVNAMELEN]; /* parent device name */ |
char *ai_pname; /* parent device name */ |
uint8_t ai_pminor; /* parent minor */ |
uint8_t ai_pminor; /* parent minor */ |
uint32_t ai_locator; /* location on parent (0 - default) */ |
uint32_t ai_locator; /* location on parent (0 - default) */ |
// uint8_t ai_intrno; /* interrupt line */ |
int8_t ai_intrno; /* interrupt line (XXX on IRQ Controller) */ |
uint8_t ai_flags; /* flags passed to dr_attach() */ |
uint8_t ai_flags; /* flags passed to dr_attach() */ |
}; |
}; |
|
|
|
|
|
|
#define ATTACH(x) devlist[x].dv_parent |
|
#define AT = |
|
#define PARENT(y) &devlist[y] |
|
|
|
#endif /* _SYS_DEVICE_H */ |
#endif /* _SYS_DEVICE_H */ |
|
|