I'd suggested that this be driven off a global quirk like u_int fdt_quirks; #define FDT_QUIRK_8BIT_IIC_ADDR 1 ...
if (fdt_quirks & FDT_QUIRK_8BIT_IIC_ADDR) dinfo->opd_dinfo.addr = paddr; else dinfo->opd_dinfo.addr = paddr << 1; And the platform code, whatever that means, would set it when it "knows" this is the case. Warner On Thu, Nov 5, 2015 at 12:56 PM, Nathan Whitehorn <nwhiteh...@freebsd.org> wrote: > I'm not sure this is the best way to do this: we have AIM systems that use > FDT, for example. Can we make it a quirk in the host-bus driver? Or do a > run-time check to see if the root node has MacRISC in its compatible > property? > -Nathan > > On 11/04/15 14:46, Andreas Tobler wrote: > >> Author: andreast >> Date: Wed Nov 4 22:46:30 2015 >> New Revision: 290373 >> URL: https://svnweb.freebsd.org/changeset/base/290373 >> >> Log: >> Add a compile time switch to distinguish between 7-bit and 8-bit I2C >> address >> usage. The comment in the code should explain the situation. >> Discussed with: ian@ >> >> Modified: >> head/sys/dev/ofw/ofw_iicbus.c >> >> Modified: head/sys/dev/ofw/ofw_iicbus.c >> >> ============================================================================== >> --- head/sys/dev/ofw/ofw_iicbus.c Wed Nov 4 19:09:42 2015 >> (r290372) >> +++ head/sys/dev/ofw/ofw_iicbus.c Wed Nov 4 22:46:30 2015 >> (r290373) >> @@ -148,10 +148,16 @@ ofw_iicbus_attach(device_t dev) >> if (dinfo == NULL) >> continue; >> /* >> - * OFW uses 7-bit I2C address format (see ePAPR), >> - * but system expect 8-bit. >> + * FreeBSD drivers expect I2C addresses to be expressed as >> + * 8-bit values. Apple OFW data contains 8-bit values, >> but >> + * Linux FDT data contains 7-bit values, so shift them up >> to >> + * 8-bit format. >> */ >> +#ifdef AIM >> + dinfo->opd_dinfo.addr = paddr; >> +#else >> dinfo->opd_dinfo.addr = paddr << 1; >> +#endif >> if (ofw_bus_gen_setup_devinfo(&dinfo->opd_obdinfo, child) >> != >> 0) { >> free(dinfo, M_DEVBUF); >> >> > > _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"