stm32: Fix i2c on stm32g0
Fix the gpio function. Also, add buses found only on stm32g0. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
97a5b39aab
commit
989d0f8097
|
@ -15,14 +15,46 @@ struct i2c_info {
|
||||||
uint8_t scl_pin, sda_pin, function;
|
uint8_t scl_pin, sda_pin, function;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if CONFIG_MACH_STM32F0
|
||||||
|
DECL_ENUMERATION("i2c_bus", "i2c1_PB6_PB7", 0);
|
||||||
|
DECL_CONSTANT_STR("BUS_PINS_i2c1_PB6_PB7", "PB6,PB7");
|
||||||
|
DECL_ENUMERATION("i2c_bus", "i2c1_PF1_PF0", 1);
|
||||||
|
DECL_CONSTANT_STR("BUS_PINS_i2c1_PF1_PF0", "PF1,PF0");
|
||||||
|
DECL_ENUMERATION("i2c_bus", "i2c1_PB8_PB9", 2);
|
||||||
|
DECL_CONSTANT_STR("BUS_PINS_i2c1_PB8_PB9", "PB8,PB9");
|
||||||
|
// Deprecated "i2c1a" style mappings
|
||||||
DECL_ENUMERATION("i2c_bus", "i2c1", 0);
|
DECL_ENUMERATION("i2c_bus", "i2c1", 0);
|
||||||
DECL_CONSTANT_STR("BUS_PINS_i2c1", "PB6,PB7");
|
DECL_CONSTANT_STR("BUS_PINS_i2c1", "PB6,PB7");
|
||||||
DECL_ENUMERATION("i2c_bus", "i2c1a", 1);
|
DECL_ENUMERATION("i2c_bus", "i2c1a", 1);
|
||||||
DECL_CONSTANT_STR("BUS_PINS_i2c1a", "PF1,PF0");
|
DECL_CONSTANT_STR("BUS_PINS_i2c1a", "PF1,PF0");
|
||||||
|
#elif CONFIG_MACH_STM32G0
|
||||||
|
DECL_ENUMERATION("i2c_bus", "i2c1_PB6_PB7", 0);
|
||||||
|
DECL_CONSTANT_STR("BUS_PINS_i2c1_PB6_PB7", "PB6,PB7");
|
||||||
|
DECL_ENUMERATION("i2c_bus", "i2c1_PB8_PB9", 1);
|
||||||
|
DECL_CONSTANT_STR("BUS_PINS_i2c1_PB8_PB9", "PB8,PB9");
|
||||||
|
DECL_ENUMERATION("i2c_bus", "i2c3_PB3_PB4", 2);
|
||||||
|
DECL_CONSTANT_STR("BUS_PINS_i2c3_PB3_PB4", "PB3,PB4");
|
||||||
|
DECL_ENUMERATION("i2c_bus", "i2c2_PB10_PB11", 3);
|
||||||
|
DECL_CONSTANT_STR("BUS_PINS_i2c2_PB10_PB11", "PB10,PB11");
|
||||||
|
DECL_ENUMERATION("i2c_bus", "i2c2_PB13_PB14", 4);
|
||||||
|
DECL_CONSTANT_STR("BUS_PINS_i2c2_PB13_PB14", "PB13,PB14");
|
||||||
|
DECL_ENUMERATION("i2c_bus", "i2c1_PA9_PA10", 5);
|
||||||
|
DECL_CONSTANT_STR("BUS_PINS_i2c1_PA9_PA10", "PA9,PA10");
|
||||||
|
#endif
|
||||||
|
|
||||||
static const struct i2c_info i2c_bus[] = {
|
static const struct i2c_info i2c_bus[] = {
|
||||||
|
#if CONFIG_MACH_STM32F0
|
||||||
{ I2C1, GPIO('B', 6), GPIO('B', 7), GPIO_FUNCTION(1) },
|
{ I2C1, GPIO('B', 6), GPIO('B', 7), GPIO_FUNCTION(1) },
|
||||||
{ I2C1, GPIO('F', 1), GPIO('F', 0), GPIO_FUNCTION(1) },
|
{ I2C1, GPIO('F', 1), GPIO('F', 0), GPIO_FUNCTION(1) },
|
||||||
|
{ I2C1, GPIO('B', 8), GPIO('B', 9), GPIO_FUNCTION(1) },
|
||||||
|
#elif CONFIG_MACH_STM32G0
|
||||||
|
{ I2C1, GPIO('B', 6), GPIO('B', 7), GPIO_FUNCTION(6) },
|
||||||
|
{ I2C1, GPIO('B', 8), GPIO('B', 9), GPIO_FUNCTION(6) },
|
||||||
|
{ I2C3, GPIO('B', 3), GPIO('B', 4), GPIO_FUNCTION(6) },
|
||||||
|
{ I2C2, GPIO('B', 10), GPIO('B', 11), GPIO_FUNCTION(6) },
|
||||||
|
{ I2C2, GPIO('B', 13), GPIO('B', 14), GPIO_FUNCTION(6) },
|
||||||
|
{ I2C1, GPIO('A', 9), GPIO('A', 10), GPIO_FUNCTION(6) },
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
struct i2c_config
|
struct i2c_config
|
||||||
|
|
|
@ -38,6 +38,8 @@ lookup_clock_line(uint32_t periph_base)
|
||||||
return (struct cline){.en=&RCC->APBENR1,.rst=&RCC->APBRSTR1,.bit=1<<13};
|
return (struct cline){.en=&RCC->APBENR1,.rst=&RCC->APBRSTR1,.bit=1<<13};
|
||||||
if (periph_base == CRS_BASE)
|
if (periph_base == CRS_BASE)
|
||||||
return (struct cline){.en=&RCC->APBENR1,.rst=&RCC->APBRSTR1,.bit=1<<16};
|
return (struct cline){.en=&RCC->APBENR1,.rst=&RCC->APBRSTR1,.bit=1<<16};
|
||||||
|
if (periph_base == I2C3_BASE)
|
||||||
|
return (struct cline){.en=&RCC->APBENR1,.rst=&RCC->APBRSTR1,.bit=1<<23};
|
||||||
if (periph_base == TIM1_BASE)
|
if (periph_base == TIM1_BASE)
|
||||||
return (struct cline){.en=&RCC->APBENR2,.rst=&RCC->APBRSTR2,.bit=1<<11};
|
return (struct cline){.en=&RCC->APBENR2,.rst=&RCC->APBRSTR2,.bit=1<<11};
|
||||||
if (periph_base == SPI1_BASE)
|
if (periph_base == SPI1_BASE)
|
||||||
|
|
Loading…
Reference in New Issue