/* $FreeBSD$ */ #define SPIBUS_IVAR(d) (struct spibus_ivar *) device_get_ivars(d) #define SPIBUS_SOFTC(d) (struct spibus_softc *) device_get_softc(d) struct spibus_softc { device_t dev; }; struct spibus_ivar { uint32_t cs; }; enum { SPIBUS_IVAR_CS /* chip select that we're on */ }; #define SPIBUS_ACCESSOR(A, B, T) \ __inline static int \ spibus_get_ ## A(device_t dev, T *t) \ { \ return BUS_READ_IVAR(device_get_parent(dev), dev, \ SPIBUS_IVAR_ ## B, (uintptr_t *) t); \ } SPIBUS_ACCESSOR(cs, CS, uint32_t)