drivers: i2c: nordic: move to new DT API

Keep existing per-instance Kconfig options around.

Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
This commit is contained in:
Martí Bolívar 2020-04-16 09:40:22 -07:00 committed by Carles Cufí
commit 11fbc0b2fa
2 changed files with 23 additions and 24 deletions

View file

@ -242,17 +242,17 @@ static int twi_nrfx_pm_control(struct device *dev, u32_t ctrl_command,
: bitrate == 250000 ? NRF_TWI_FREQ_250K \
: bitrate == I2C_BITRATE_FAST ? NRF_TWI_FREQ_400K \
: I2C_NRFX_TWI_INVALID_FREQUENCY)
#define I2C(idx) DT_NODELABEL(i2c##idx)
#define I2C_FREQUENCY(idx) \
I2C_NRFX_TWI_FREQUENCY(DT_PROP(I2C(idx), clock_frequency))
#define I2C_NRFX_TWI_DEVICE(idx) \
BUILD_ASSERT( \
I2C_NRFX_TWI_FREQUENCY( \
DT_NORDIC_NRF_TWI_I2C_##idx##_CLOCK_FREQUENCY) \
!= I2C_NRFX_TWI_INVALID_FREQUENCY, \
BUILD_ASSERT(I2C_FREQUENCY(idx) != \
I2C_NRFX_TWI_INVALID_FREQUENCY, \
"Wrong I2C " #idx " frequency setting in dts"); \
static int twi_##idx##_init(struct device *dev) \
{ \
IRQ_CONNECT(DT_NORDIC_NRF_TWI_I2C_##idx##_IRQ_0, \
DT_NORDIC_NRF_TWI_I2C_##idx##_IRQ_0_PRIORITY, \
IRQ_CONNECT(DT_IRQN(I2C(idx)), DT_IRQ(I2C(idx), priority), \
nrfx_isr, nrfx_twi_##idx##_irq_handler, 0); \
return init_twi(dev); \
} \
@ -265,14 +265,13 @@ static int twi_nrfx_pm_control(struct device *dev, u32_t ctrl_command,
static const struct i2c_nrfx_twi_config twi_##idx##z_config = { \
.twi = NRFX_TWI_INSTANCE(idx), \
.config = { \
.scl = DT_NORDIC_NRF_TWI_I2C_##idx##_SCL_PIN, \
.sda = DT_NORDIC_NRF_TWI_I2C_##idx##_SDA_PIN, \
.frequency = I2C_NRFX_TWI_FREQUENCY( \
DT_NORDIC_NRF_TWI_I2C_##idx##_CLOCK_FREQUENCY) \
.scl = DT_PROP(I2C(idx), scl_pin), \
.sda = DT_PROP(I2C(idx), sda_pin), \
.frequency = I2C_FREQUENCY(idx), \
} \
}; \
DEVICE_DEFINE(twi_##idx, \
DT_NORDIC_NRF_TWI_I2C_##idx##_LABEL, \
DT_LABEL(I2C(idx)), \
twi_##idx##_init, \
twi_nrfx_pm_control, \
&twi_##idx##_data, \

View file

@ -217,16 +217,17 @@ static int twim_nrfx_pm_control(struct device *dev, u32_t ctrl_command,
: bitrate == I2C_BITRATE_FAST ? NRF_TWIM_FREQ_400K \
: I2C_NRFX_TWIM_INVALID_FREQUENCY)
#define I2C(idx) DT_NODELABEL(i2c##idx)
#define I2C_FREQUENCY(idx) \
I2C_NRFX_TWIM_FREQUENCY(DT_PROP(I2C(idx), clock_frequency))
#define I2C_NRFX_TWIM_DEVICE(idx) \
BUILD_ASSERT( \
I2C_NRFX_TWIM_FREQUENCY( \
DT_NORDIC_NRF_TWIM_I2C_##idx##_CLOCK_FREQUENCY) \
!= I2C_NRFX_TWIM_INVALID_FREQUENCY, \
BUILD_ASSERT(I2C_FREQUENCY(idx) != \
I2C_NRFX_TWIM_INVALID_FREQUENCY, \
"Wrong I2C " #idx " frequency setting in dts"); \
static int twim_##idx##_init(struct device *dev) \
{ \
IRQ_CONNECT(DT_NORDIC_NRF_TWIM_I2C_##idx##_IRQ_0, \
DT_NORDIC_NRF_TWIM_I2C_##idx##_IRQ_0_PRIORITY, \
IRQ_CONNECT(DT_IRQN(I2C(idx)), DT_IRQ(I2C(idx), priority), \
nrfx_isr, nrfx_twim_##idx##_irq_handler, 0); \
return init_twim(dev); \
} \
@ -239,14 +240,13 @@ static int twim_nrfx_pm_control(struct device *dev, u32_t ctrl_command,
static const struct i2c_nrfx_twim_config twim_##idx##z_config = { \
.twim = NRFX_TWIM_INSTANCE(idx), \
.config = { \
.scl = DT_NORDIC_NRF_TWIM_I2C_##idx##_SCL_PIN, \
.sda = DT_NORDIC_NRF_TWIM_I2C_##idx##_SDA_PIN, \
.frequency = I2C_NRFX_TWIM_FREQUENCY( \
DT_NORDIC_NRF_TWIM_I2C_##idx##_CLOCK_FREQUENCY)\
.scl = DT_PROP(I2C(idx), scl_pin), \
.sda = DT_PROP(I2C(idx), sda_pin), \
.frequency = I2C_FREQUENCY(idx), \
} \
}; \
DEVICE_DEFINE(twim_##idx, \
DT_NORDIC_NRF_TWIM_I2C_##idx##_LABEL, \
DT_LABEL(I2C(idx)), \
twim_##idx##_init, \
twim_nrfx_pm_control, \
&twim_##idx##_data, \