Skip to content

Commit 4d3e587

Browse files
committed
drivers: i2c: mchp_mss: Fix mss_i2c_configure()
Clear the clock bits before setting new ones. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
1 parent cf0f00d commit 4d3e587

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

drivers/i2c/i2c_mchp_mss.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,23 +127,25 @@ struct mss_i2c_data {
127127
};
128128

129129

130-
static int mss_i2c_configure(const struct device *dev, uint32_t dev_config_raw)
130+
static int mss_i2c_configure(const struct device *dev, uint32_t dev_config)
131131
{
132132
const struct mss_i2c_config *cfg = dev->config;
133-
134133
uint8_t ctrl = sys_read8(cfg->i2c_base_addr + CORE_I2C_CTRL);
135134

136-
switch (I2C_SPEED_GET(dev_config_raw)) {
135+
ctrl &= ~CLK_MASK;
136+
137+
switch (I2C_SPEED_GET(dev_config)) {
137138
case I2C_SPEED_STANDARD:
138-
sys_write8((ctrl | PCLK_DIV_960), cfg->i2c_base_addr + CORE_I2C_CTRL);
139+
ctrl |= PCLK_DIV_960;
139140
break;
140141
case I2C_SPEED_FAST:
141-
sys_write8((ctrl | PCLK_DIV_256), cfg->i2c_base_addr + CORE_I2C_CTRL);
142+
ctrl |= PCLK_DIV_256;
142143
break;
143144
default:
144145
return -EINVAL;
145146
}
146147

148+
sys_write8(ctrl, cfg->i2c_base_addr + CORE_I2C_CTRL);
147149
return 0;
148150
}
149151

0 commit comments

Comments
 (0)