Re: [PATCH v1 05/40] i2c: amd-mp2: Use generic definitions for bus frequencies

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi

On 2/24/2020 8:44 PM, Andy Shevchenko wrote:
> Since we have generic definitions for bus frequencies, let's use them.
>
> Cc: Elie Morisse <syniurge@xxxxxxxxx>
> Cc: Nehal Shah <nehal-bakulchandra.shah@xxxxxxx>
> Cc: Shyam Sundar S K <shyam-sundar.s-k@xxxxxxx>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
> ---
>  drivers/i2c/busses/i2c-amd-mp2-plat.c | 27 ++++++++++++++++-----------
>  include/linux/i2c.h                   |  2 ++
>  2 files changed, 18 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-amd-mp2-plat.c b/drivers/i2c/busses/i2c-amd-mp2-plat.c
> index f5b3f00c6559..9b9d90b98a05 100644
> --- a/drivers/i2c/busses/i2c-amd-mp2-plat.c
> +++ b/drivers/i2c/busses/i2c-amd-mp2-plat.c
> @@ -201,32 +201,37 @@ static int i2c_amd_resume(struct amd_i2c_common *i2c_common)
>  }
>  #endif
>  
> +static const u32 supported_speeds[] = {
> +	I2C_HIGH_SPEED_MODE_FREQ,
> +	I2C_TURBO_MODE_FREQ,
> +	I2C_FAST_MODE_PLUS_FREQ,
> +	I2C_FAST_MODE_FREQ,
> +	I2C_STANDARD_MODE_FREQ,
> +};
> +
>  static enum speed_enum i2c_amd_get_bus_speed(struct platform_device *pdev)
>  {
>  	u32 acpi_speed;
>  	int i;
> -	static const u32 supported_speeds[] = {
> -		0, 100000, 400000, 1000000, 1400000, 3400000
> -	};
>  
>  	acpi_speed = i2c_acpi_find_bus_speed(&pdev->dev);
>  	/* round down to the lowest standard speed */
> -	for (i = 1; i < ARRAY_SIZE(supported_speeds); i++) {
> -		if (acpi_speed < supported_speeds[i])
> +	for (i = 0; i < ARRAY_SIZE(supported_speeds); i++) {
> +		if (acpi_speed >= supported_speeds[i])
>  			break;
>  	}
> -	acpi_speed = supported_speeds[i - 1];
> +	acpi_speed = i < ARRAY_SIZE(supported_speeds) ? supported_speeds[i] : 0;
>  
>  	switch (acpi_speed) {
> -	case 100000:
> +	case I2C_STANDARD_MODE_FREQ:
>  		return speed100k;
> -	case 400000:
> +	case I2C_FAST_MODE_FREQ:
>  		return speed400k;
> -	case 1000000:
> +	case I2C_FAST_MODE_PLUS_FREQ:
>  		return speed1000k;
> -	case 1400000:
> +	case I2C_TURBO_MODE_FREQ:
>  		return speed1400k;
> -	case 3400000:
> +	case I2C_HIGH_SPEED_MODE_FREQ:
>  		return speed3400k;
>  	default:
>  		return speed400k;
> diff --git a/include/linux/i2c.h b/include/linux/i2c.h
> index 1b9c483bd9f5..d3022a014227 100644
> --- a/include/linux/i2c.h
> +++ b/include/linux/i2c.h
> @@ -46,6 +46,8 @@ typedef int (*i2c_slave_cb_t)(struct i2c_client *client,
>  #define I2C_STANDARD_MODE_FREQ		(100 * HZ_PER_KHZ)
>  #define I2C_FAST_MODE_FREQ		(400 * HZ_PER_KHZ)
>  #define I2C_FAST_MODE_PLUS_FREQ		(1000 * HZ_PER_KHZ)
> +#define I2C_TURBO_MODE_FREQ		(1400 * HZ_PER_KHZ)
> +#define I2C_HIGH_SPEED_MODE_FREQ	(3400 * HZ_PER_KHZ)
>  
>  struct module;
>  struct property_entry;

Fine for me.

Acked-by: Nehal Shah <nehal-bakulchandra.shah@xxxxxxx>


Thanks

Nehal Shah






[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux