Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/spibus/spibusvar.h
Show All 37 Lines | |||||
#define SPIBUS_MODE_CPOL 2 | #define SPIBUS_MODE_CPOL 2 | ||||
#define SPIBUS_MODE_CPOL_CPHA 3 | #define SPIBUS_MODE_CPOL_CPHA 3 | ||||
struct spibus_ivar | struct spibus_ivar | ||||
{ | { | ||||
uint32_t cs; | uint32_t cs; | ||||
uint32_t mode; | uint32_t mode; | ||||
uint32_t clock; | uint32_t clock; | ||||
uint32_t cs_delay; | |||||
struct resource_list rl; | struct resource_list rl; | ||||
}; | }; | ||||
#define SPIBUS_CS_HIGH (1U << 31) | #define SPIBUS_CS_HIGH (1U << 31) | ||||
enum { | enum { | ||||
SPIBUS_IVAR_CS, /* chip select that we're on */ | SPIBUS_IVAR_CS, /* chip select that we're on */ | ||||
SPIBUS_IVAR_MODE, /* SPI mode (0-3) */ | SPIBUS_IVAR_MODE, /* SPI mode (0-3) */ | ||||
SPIBUS_IVAR_CLOCK, /* maximum clock freq for device */ | SPIBUS_IVAR_CLOCK, /* maximum clock freq for device */ | ||||
SPIBUS_IVAR_CS_DELAY, /* delay in microseconds after toggling chip select */ | |||||
}; | }; | ||||
#define SPIBUS_ACCESSOR(A, B, T) \ | #define SPIBUS_ACCESSOR(A, B, T) \ | ||||
static inline int \ | static inline int \ | ||||
spibus_get_ ## A(device_t dev, T *t) \ | spibus_get_ ## A(device_t dev, T *t) \ | ||||
{ \ | { \ | ||||
return BUS_READ_IVAR(device_get_parent(dev), dev, \ | return BUS_READ_IVAR(device_get_parent(dev), dev, \ | ||||
SPIBUS_IVAR_ ## B, (uintptr_t *) t); \ | SPIBUS_IVAR_ ## B, (uintptr_t *) t); \ | ||||
} \ | } \ | ||||
static inline int \ | static inline int \ | ||||
spibus_set_ ## A(device_t dev, T t) \ | spibus_set_ ## A(device_t dev, T t) \ | ||||
{ \ | { \ | ||||
return BUS_WRITE_IVAR(device_get_parent(dev), dev, \ | return BUS_WRITE_IVAR(device_get_parent(dev), dev, \ | ||||
SPIBUS_IVAR_ ## B, (uintptr_t) t); \ | SPIBUS_IVAR_ ## B, (uintptr_t) t); \ | ||||
} | } | ||||
SPIBUS_ACCESSOR(cs, CS, uint32_t) | SPIBUS_ACCESSOR(cs, CS, uint32_t) | ||||
SPIBUS_ACCESSOR(mode, MODE, uint32_t) | SPIBUS_ACCESSOR(mode, MODE, uint32_t) | ||||
SPIBUS_ACCESSOR(clock, CLOCK, uint32_t) | SPIBUS_ACCESSOR(clock, CLOCK, uint32_t) | ||||
SPIBUS_ACCESSOR(cs_delay, CS_DELAY, uint32_t) | |||||
extern driver_t spibus_driver; | extern driver_t spibus_driver; | ||||
extern devclass_t spibus_devclass; | extern devclass_t spibus_devclass; | ||||
extern driver_t ofw_spibus_driver; | extern driver_t ofw_spibus_driver; | ||||
extern devclass_t ofw_spibus_devclass; | extern devclass_t ofw_spibus_devclass; |