[PATCH 1/2] acpi:apd: Add APM X-Gene ACPI I2C device support
Loc Ho
lho at apm.com
Wed Dec 9 14:03:59 PST 2015
Hi Ken,
On Mon, Dec 7, 2015 at 6:49 PM, Ken Xue <ken.xue at amd.com> wrote:
>
> On Mon, 2015-12-07 at 17:16 -0700, Loc Ho wrote:
> > Add APM X-Gene ACPI I2C device support by hooks into existent
> > ACPI apd driver. To fully enable support, require another
> > patch to add the X-Gene ACPI node into the DW I2C driver.
> >
> > Signed-off-by: Loc Ho <lho at apm.com>
> > ---
> > drivers/acpi/acpi_apd.c | 8 +++++++-
> > 1 files changed, 7 insertions(+), 1 deletions(-)
> >
> > diff --git a/drivers/acpi/acpi_apd.c b/drivers/acpi/acpi_apd.c
> > index a450e7a..6a9cb8d 100644
> > --- a/drivers/acpi/acpi_apd.c
> > +++ b/drivers/acpi/acpi_apd.c
> > @@ -51,7 +51,7 @@ struct apd_private_data {
> > const struct apd_device_desc *dev_desc;
> > };
> >
> > -#ifdef CONFIG_X86_AMD_PLATFORM_DEVICE
> > +#if defined(CONFIG_X86_AMD_PLATFORM_DEVICE) || defined(CONFIG_ARM64)
> > #define APD_ADDR(desc) ((unsigned long)&desc)
> >
> > static int acpi_apd_setup(struct apd_private_data *pdata)
> > @@ -76,6 +76,11 @@ static struct apd_device_desc cz_i2c_desc = {
> > .fixed_clk_rate = 133000000,
> > };
> >
> > +static struct apd_device_desc xgene_i2c_desc = {
> > + .setup = acpi_apd_setup,
> > + .fixed_clk_rate = 100000000,
> > +};
> > +
> > static struct apd_device_desc cz_uart_desc = {
> > .setup = acpi_apd_setup,
> > .fixed_clk_rate = 48000000,
> > @@ -135,6 +140,7 @@ static const struct acpi_device_id acpi_apd_device_ids[] = {
> > { "AMD0010", APD_ADDR(cz_i2c_desc) },
> > { "AMD0020", APD_ADDR(cz_uart_desc) },
> > { "AMD0030", },
> > + { "APMC0D0F", APD_ADDR(xgene_i2c_desc) },
> It is better to split AMD devices and ARM devices with macros:
> CONFIG_X86_AMD_PLATFORM_DEVICE and CONFIG_ARM64.
This gets pretty ugly to me with define as it would look like this:
#if defined(CONFIG_X86_AMD_PLATFORM_DEVICE) || defined(CONFIG_ARM64)
#define APD_ADDR(desc) ((unsigned long)&desc)
static int acpi_apd_setup(struct apd_private_data *pdata)
{
.....
}
#ifdef CONFIG_X86_AMD_PLATFORM_DEVICE
static struct apd_device_desc cz_i2c_desc = {
....
};
static struct apd_device_desc xgene_i2c_desc = {
...
};
#endif
#ifdef CONFIG_ARM64
static struct apd_device_desc cz_uart_desc = {
....
};
#endif
#else
#define APD_ADDR(desc) (0UL)
#endif /* CONFIG_X86_AMD_PLATFORM_DEVICE */
And...
#ifdef CONFIG_X86_AMD_PLATFORM_DEVICE
{ "AMD0010", APD_ADDR(cz_i2c_desc) },
{ "AMD0020", APD_ADDR(cz_uart_desc) },
{ "AMD0030", },
#endif
#ifdef CONFIG_ARM64
{ "APMC0D0F", APD_ADDR(xgene_i2c_desc) },
#endif
Sure you want this?
-Loc
More information about the linux-arm-kernel
mailing list