Skip to content

Commit df8c847

Browse files
stmordretWolfram Sang
authored andcommitted
i2c: i2c-stm32f4: use generic definition of speed enum
This patch uses a more generic definition of speed enum for i2c-stm32f4 driver. Signed-off-by: M'boumba Cedric Madianga <[email protected]> Signed-off-by: Pierre-Yves MORDRET <[email protected]> Reviewed-by: Ludovic BARRE <[email protected]> Signed-off-by: Wolfram Sang <[email protected]>
1 parent edcd2ae commit df8c847

File tree

2 files changed

+27
-11
lines changed

2 files changed

+27
-11
lines changed

drivers/i2c/busses/i2c-stm32.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* i2c-stm32.h
3+
*
4+
* Copyright (C) M'boumba Cedric Madianga 2017
5+
* Author: M'boumba Cedric Madianga <[email protected]>
6+
*
7+
* License terms: GNU General Public License (GPL), version 2
8+
*/
9+
10+
#ifndef _I2C_STM32_H
11+
#define _I2C_STM32_H
12+
13+
enum stm32_i2c_speed {
14+
STM32_I2C_SPEED_STANDARD, /* 100 kHz */
15+
STM32_I2C_SPEED_FAST, /* 400 kHz */
16+
STM32_I2C_SPEED_FAST_PLUS, /* 1 MHz */
17+
STM32_I2C_SPEED_END,
18+
};
19+
20+
#endif /* _I2C_STM32_H */

drivers/i2c/busses/i2c-stm32f4.c

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
#include <linux/platform_device.h>
2828
#include <linux/reset.h>
2929

30+
#include "i2c-stm32.h"
31+
3032
/* STM32F4 I2C offset registers */
3133
#define STM32F4_I2C_CR1 0x00
3234
#define STM32F4_I2C_CR2 0x04
@@ -90,12 +92,6 @@
9092
#define STM32F4_I2C_MAX_FREQ 46U
9193
#define HZ_TO_MHZ 1000000
9294

93-
enum stm32f4_i2c_speed {
94-
STM32F4_I2C_SPEED_STANDARD, /* 100 kHz */
95-
STM32F4_I2C_SPEED_FAST, /* 400 kHz */
96-
STM32F4_I2C_SPEED_END,
97-
};
98-
9995
/**
10096
* struct stm32f4_i2c_msg - client specific data
10197
* @addr: 8-bit slave addr, including r/w bit
@@ -159,7 +155,7 @@ static int stm32f4_i2c_set_periph_clk_freq(struct stm32f4_i2c_dev *i2c_dev)
159155
i2c_dev->parent_rate = clk_get_rate(i2c_dev->clk);
160156
freq = DIV_ROUND_UP(i2c_dev->parent_rate, HZ_TO_MHZ);
161157

162-
if (i2c_dev->speed == STM32F4_I2C_SPEED_STANDARD) {
158+
if (i2c_dev->speed == STM32_I2C_SPEED_STANDARD) {
163159
/*
164160
* To reach 100 kHz, the parent clk frequency should be between
165161
* a minimum value of 2 MHz and a maximum value of 46 MHz due
@@ -216,7 +212,7 @@ static void stm32f4_i2c_set_rise_time(struct stm32f4_i2c_dev *i2c_dev)
216212
* is not higher than 46 MHz . As a result trise is at most 4 bits wide
217213
* and so fits into the TRISE bits [5:0].
218214
*/
219-
if (i2c_dev->speed == STM32F4_I2C_SPEED_STANDARD)
215+
if (i2c_dev->speed == STM32_I2C_SPEED_STANDARD)
220216
trise = freq + 1;
221217
else
222218
trise = freq * 3 / 10 + 1;
@@ -230,7 +226,7 @@ static void stm32f4_i2c_set_speed_mode(struct stm32f4_i2c_dev *i2c_dev)
230226
u32 val;
231227
u32 ccr = 0;
232228

233-
if (i2c_dev->speed == STM32F4_I2C_SPEED_STANDARD) {
229+
if (i2c_dev->speed == STM32_I2C_SPEED_STANDARD) {
234230
/*
235231
* In standard mode:
236232
* t_scl_high = t_scl_low = CCR * I2C parent clk period
@@ -808,10 +804,10 @@ static int stm32f4_i2c_probe(struct platform_device *pdev)
808804
udelay(2);
809805
reset_control_deassert(rst);
810806

811-
i2c_dev->speed = STM32F4_I2C_SPEED_STANDARD;
807+
i2c_dev->speed = STM32_I2C_SPEED_STANDARD;
812808
ret = of_property_read_u32(np, "clock-frequency", &clk_rate);
813809
if (!ret && clk_rate >= 400000)
814-
i2c_dev->speed = STM32F4_I2C_SPEED_FAST;
810+
i2c_dev->speed = STM32_I2C_SPEED_FAST;
815811

816812
i2c_dev->dev = &pdev->dev;
817813

0 commit comments

Comments
 (0)