#include <sys/param.h>
#include <sys/systm.h>
#include <sys/device.h>
#define _I2C_PRIVATE
#include <dev/i2c/i2cvar.h>
#include <dev/ofw/openfirm.h>
#include <arch/macppc/dev/maci2cvar.h>
void
maciic_scan(struct device *self, struct i2cbus_attach_args *iba, void *aux)
{
int iba_node = *(int *)aux;
struct i2c_attach_args ia;
char name[32];
u_int32_t reg;
int node;
for (node = OF_child(iba_node); node; node = OF_peer(node)) {
if (OF_getprop(node, "reg", ®, sizeof reg) != sizeof reg &&
OF_getprop(node, "i2c-address", ®, sizeof reg) != sizeof reg)
continue;
bzero(&ia, sizeof ia);
ia.ia_tag = iba->iba_tag;
ia.ia_addr = (reg >> 1);
ia.ia_cookie = &node;
bzero(name, sizeof name);
if (OF_getprop(node, "compatible", &name,
sizeof name) && name[0])
ia.ia_name = name;
if (ia.ia_name == NULL &&
OF_getprop(node, "name", &name,
sizeof name) && name[0]) {
if (strcmp(name, "cereal") == 0)
continue;
ia.ia_name = name;
}
if (strcmp(name, "deq") == 0 || strcmp(name, "tas3004") == 0)
continue;
if (ia.ia_name)
config_found(self, &ia, iic_print);
}
}