deva
uint8_t bank, vend, chip, deva;
iic_smbus_read_byte(ia->ia_tag, ia->ia_addr, W83795G_DEVICEA, &deva, 0);
if (chip == CHIP_W83795G && deva == DEVICEA_A)
struct deva *d_ahead; /* first attachment, if any */
struct deva **d_app; /* used for tacking on attachments */
TAILQ_ENTRY(deva) d_next; /* list of all instances */
struct deva *d_bsame; /* list on same base */
struct deva *i_atdeva;
TAILQ_HEAD(devatq, deva);
int deva_has_instances(struct deva *, int);
struct deva *deva;
%type <deva> devattach_opt
struct deva *da;
deva_has_instances(struct deva *deva, int unit)
for (i = deva->d_ihead; i != NULL; i = i->i_asame)
struct deva *da;
struct deva *da;
struct deva *da;
struct deva *da;
struct deva *da;
struct deva *iba; /* devbase attachment used */
struct deva *lastiba;
struct deva *iba;
struct deva *iba;
selectbase(struct devbase *d, struct deva *da)
defdevattach(struct deva *deva, struct devbase *dev, struct nvlist *atlist,
if (deva == NULL)
deva = getdevattach(dev->d_name);
if (deva == &errdeva)
if (deva->d_isdef) {
deva->d_name, deva->d_where.w_srcfile, deva->d_where.w_srcline);
deva->d_isdef = 1;
deva->d_has_iattrs = has_iattrs;
deva->d_attrs = attrs;
deva->d_atlist = atlist;
deva->d_devbase = dev;
CFGDBG(3, "deva `%s' defined", deva->d_name);
refattr(deva->d_name);
for (struct deva *da = dev->d_ahead; da; da = da->d_bsame)
*dev->d_app = deva;
dev->d_app = &deva->d_bsame;
struct deva *
static struct deva errdeva;
struct deva *deva;
deva = ht_lookup(devatab, name);
if (deva == NULL) {
deva = ecalloc(1, sizeof *deva);
deva->d_name = name;
deva->d_bsame = NULL;
deva->d_isdef = 0;
deva->d_has_iattrs = 0;
deva->d_devbase = NULL;
deva->d_atlist = NULL;
deva->d_attrs = NULL;
deva->d_ihead = NULL;
deva->d_ipp = &deva->d_ihead;
deva->d_where.w_srcfile = yyfile;
deva->d_where.w_srcline = currentline();
TAILQ_INSERT_TAIL(&alldevas, deva, d_next);
if (ht_insert(devatab, name, deva))
return (deva);
static void selectbase(struct devbase *, struct deva *);
void defdevattach(struct deva *, struct devbase *, struct nvlist *,
struct deva *getdevattach(const char *);