Re: [PATCH v4] i2c: designware: Add support for AMD i2c controller

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

 



On Wed, Sep 17, 2014 at 01:14:45PM +0800, Carl Peng wrote:
> AMD i2c bus controller is ACPI device, its ACPI ID
> is "AMD0010". This patch is used to add support for
> AMD i2c bus controller in the Designware platform
> driver.
> 
> Signed-off-by: Carl Peng <carlpeng008@xxxxxxxxx>
> Cc: Huang Rui <ray.huang@xxxxxxx>
> ---
>  drivers/i2c/busses/i2c-designware-platdrv.c | 53 +++++++++++++++++++++++------
>  1 file changed, 43 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
> index bc87733..20015e6 100644
> --- a/drivers/i2c/busses/i2c-designware-platdrv.c
> +++ b/drivers/i2c/busses/i2c-designware-platdrv.c
> @@ -43,14 +43,18 @@
>  #include <linux/acpi.h>
>  #include "i2c-designware-core.h"
>  
> +struct dw_i2c_config {
> +	u32 clk_rate_khz;
> +};
> +
>  static struct i2c_algorithm i2c_dw_algo = {
>  	.master_xfer	= i2c_dw_xfer,
>  	.functionality	= i2c_dw_func,
>  };
> -static u32 i2c_dw_get_clk_rate_khz(struct dw_i2c_dev *dev)
> -{
> -	return clk_get_rate(dev->clk)/1000;
> -}
> +
> +static struct dw_i2c_config amd_i2c_config = {
> +	.clk_rate_khz = 133 * 1000,
> +};
>  
>  #ifdef CONFIG_ACPI
>  static void dw_i2c_acpi_params(struct platform_device *pdev, char method[],
> @@ -107,7 +111,8 @@ static const struct acpi_device_id dw_i2c_acpi_match[] = {
>  	{ "INT3433", 0 },
>  	{ "80860F41", 0 },
>  	{ "808622C1", 0 },
> -	{ }
> +	{ "AMD0010", (unsigned long)&amd_i2c_config },
> +	{},
>  };
>  MODULE_DEVICE_TABLE(acpi, dw_i2c_acpi_match);
>  #else
> @@ -117,12 +122,35 @@ static inline int dw_i2c_acpi_configure(struct platform_device *pdev)
>  }
>  #endif
>  
> +static const struct dw_i2c_config *i2c_dw_get_config(
> +					struct dw_i2c_dev *dev)
> +{
> +	const struct acpi_device_id *id;
> +
> +	id = acpi_match_device(dw_i2c_acpi_match, dev->dev);

This fails to compile if !CONFIG_ACPI.

But it doesn't matter because I changed my mind about how this should be
implemented ;-)

I think it will be better if we just register the clock in ACPI parts of
this driver in case of AMD device. That keeps the generic parts of the
platform driver cleaner.

I will send you a new version in a minute. Please let me know what you
think and if it works on your machine.

> +	if (id)
> +		return (const struct dw_i2c_config *)id->driver_data;
> +
> +	return NULL;
> +}
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[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