All of lore.kernel.org
 help / color / mirror / Atom feed
From: mturquette@linaro.org (Mike Turquette)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH RESEND TAKE 3] clk: si5351: remove variant from platform_data
Date: Mon, 27 Jan 2014 11:25:14 -0800	[thread overview]
Message-ID: <20140127192514.4167.61004@quantum> (raw)
In-Reply-To: <1390682911-9022-1-git-send-email-sebastian.hesselbarth@gmail.com>

Quoting Sebastian Hesselbarth (2014-01-25 12:48:31)
> Commit 9807362bfe1748d9bb48eecb9261f1b1aaafea1c
>   "clk: si5351: declare all device IDs for module loading"
> removed the common i2c_device_id and introduced new ones for each variant
> of the clock generator. Instead of exploiting that information in the driver,
> it still depends on platform_data passing the chips .variant.
> 
> This removes the now redundant .variant from the platform_data and puts it in
> i2c_device_id's .driver_data instead.
> 
> Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
> ---
> Mike,
> 
> this is the patch I mentioned during ARM summit ;). Still applies to
> pre-v3.14-rc1 cleanly. Maybe it is time to take it now?

Hi Sebastian,

You're right, I overlooked this one. I've taken it in now.

Regards,
Mike

> 
> Cc: Mike Turquette <mturquette@linaro.org>
> Cc: Jason Cooper <jason@lakedaemon.net>
> Cc: Russell King <linux@arm.linux.org.uk>
> Cc: linux-arm-kernel at lists.infradead.org
> Cc: linux-kernel at vger.kernel.org
> ---
>  drivers/clk/clk-si5351.c             |   28 ++++++++++++----------------
>  drivers/clk/clk-si5351.h             |   14 ++++++++++++++
>  include/linux/platform_data/si5351.h |   16 ----------------
>  3 files changed, 26 insertions(+), 32 deletions(-)
> 
> diff --git a/drivers/clk/clk-si5351.c b/drivers/clk/clk-si5351.c
> index c50e837..b95aa09 100644
> --- a/drivers/clk/clk-si5351.c
> +++ b/drivers/clk/clk-si5351.c
> @@ -1111,11 +1111,11 @@ static const struct of_device_id si5351_dt_ids[] = {
>  };
>  MODULE_DEVICE_TABLE(of, si5351_dt_ids);
>  
> -static int si5351_dt_parse(struct i2c_client *client)
> +static int si5351_dt_parse(struct i2c_client *client,
> +                          enum si5351_variant variant)
>  {
>         struct device_node *child, *np = client->dev.of_node;
>         struct si5351_platform_data *pdata;
> -       const struct of_device_id *match;
>         struct property *prop;
>         const __be32 *p;
>         int num = 0;
> @@ -1124,15 +1124,10 @@ static int si5351_dt_parse(struct i2c_client *client)
>         if (np == NULL)
>                 return 0;
>  
> -       match = of_match_node(si5351_dt_ids, np);
> -       if (match == NULL)
> -               return -EINVAL;
> -
>         pdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL);
>         if (!pdata)
>                 return -ENOMEM;
>  
> -       pdata->variant = (enum si5351_variant)match->data;
>         pdata->clk_xtal = of_clk_get(np, 0);
>         if (!IS_ERR(pdata->clk_xtal))
>                 clk_put(pdata->clk_xtal);
> @@ -1163,7 +1158,7 @@ static int si5351_dt_parse(struct i2c_client *client)
>                         pdata->pll_src[num] = SI5351_PLL_SRC_XTAL;
>                         break;
>                 case 1:
> -                       if (pdata->variant != SI5351_VARIANT_C) {
> +                       if (variant != SI5351_VARIANT_C) {
>                                 dev_err(&client->dev,
>                                         "invalid parent %d for pll %d\n",
>                                         val, num);
> @@ -1187,7 +1182,7 @@ static int si5351_dt_parse(struct i2c_client *client)
>                 }
>  
>                 if (num >= 8 ||
> -                   (pdata->variant == SI5351_VARIANT_A3 && num >= 3)) {
> +                   (variant == SI5351_VARIANT_A3 && num >= 3)) {
>                         dev_err(&client->dev, "invalid clkout %d\n", num);
>                         return -EINVAL;
>                 }
> @@ -1226,7 +1221,7 @@ static int si5351_dt_parse(struct i2c_client *client)
>                                         SI5351_CLKOUT_SRC_XTAL;
>                                 break;
>                         case 3:
> -                               if (pdata->variant != SI5351_VARIANT_C) {
> +                               if (variant != SI5351_VARIANT_C) {
>                                         dev_err(&client->dev,
>                                                 "invalid parent %d for clkout %d\n",
>                                                 val, num);
> @@ -1307,6 +1302,7 @@ static int si5351_dt_parse(struct i2c_client *client)
>  static int si5351_i2c_probe(struct i2c_client *client,
>                             const struct i2c_device_id *id)
>  {
> +       enum si5351_variant variant = (enum si5351_variant)id->driver_data;
>         struct si5351_platform_data *pdata;
>         struct si5351_driver_data *drvdata;
>         struct clk_init_data init;
> @@ -1315,7 +1311,7 @@ static int si5351_i2c_probe(struct i2c_client *client,
>         u8 num_parents, num_clocks;
>         int ret, n;
>  
> -       ret = si5351_dt_parse(client);
> +       ret = si5351_dt_parse(client, variant);
>         if (ret)
>                 return ret;
>  
> @@ -1331,7 +1327,7 @@ static int si5351_i2c_probe(struct i2c_client *client,
>  
>         i2c_set_clientdata(client, drvdata);
>         drvdata->client = client;
> -       drvdata->variant = pdata->variant;
> +       drvdata->variant = variant;
>         drvdata->pxtal = pdata->clk_xtal;
>         drvdata->pclkin = pdata->clk_clkin;
>  
> @@ -1568,10 +1564,10 @@ static int si5351_i2c_probe(struct i2c_client *client,
>  }
>  
>  static const struct i2c_device_id si5351_i2c_ids[] = {
> -       { "si5351a", 0 },
> -       { "si5351a-msop", 0 },
> -       { "si5351b", 0 },
> -       { "si5351c", 0 },
> +       { "si5351a", SI5351_VARIANT_A },
> +       { "si5351a-msop", SI5351_VARIANT_A3 },
> +       { "si5351b", SI5351_VARIANT_B },
> +       { "si5351c", SI5351_VARIANT_C },
>         { }
>  };
>  MODULE_DEVICE_TABLE(i2c, si5351_i2c_ids);
> diff --git a/drivers/clk/clk-si5351.h b/drivers/clk/clk-si5351.h
> index c0dbf26..4d0746b 100644
> --- a/drivers/clk/clk-si5351.h
> +++ b/drivers/clk/clk-si5351.h
> @@ -153,4 +153,18 @@
>  #define  SI5351_XTAL_ENABLE                    (1<<6)
>  #define  SI5351_MULTISYNTH_ENABLE              (1<<4)
>  
> +/**
> + * enum si5351_variant - SiLabs Si5351 chip variant
> + * @SI5351_VARIANT_A: Si5351A (8 output clocks, XTAL input)
> + * @SI5351_VARIANT_A3: Si5351A MSOP10 (3 output clocks, XTAL input)
> + * @SI5351_VARIANT_B: Si5351B (8 output clocks, XTAL/VXCO input)
> + * @SI5351_VARIANT_C: Si5351C (8 output clocks, XTAL/CLKIN input)
> + */
> +enum si5351_variant {
> +       SI5351_VARIANT_A = 1,
> +       SI5351_VARIANT_A3 = 2,
> +       SI5351_VARIANT_B = 3,
> +       SI5351_VARIANT_C = 4,
> +};
> +
>  #endif
> diff --git a/include/linux/platform_data/si5351.h b/include/linux/platform_data/si5351.h
> index 5433439..a947ab8 100644
> --- a/include/linux/platform_data/si5351.h
> +++ b/include/linux/platform_data/si5351.h
> @@ -8,20 +8,6 @@
>  struct clk;
>  
>  /**
> - * enum si5351_variant - SiLabs Si5351 chip variant
> - * @SI5351_VARIANT_A: Si5351A (8 output clocks, XTAL input)
> - * @SI5351_VARIANT_A3: Si5351A MSOP10 (3 output clocks, XTAL input)
> - * @SI5351_VARIANT_B: Si5351B (8 output clocks, XTAL/VXCO input)
> - * @SI5351_VARIANT_C: Si5351C (8 output clocks, XTAL/CLKIN input)
> - */
> -enum si5351_variant {
> -       SI5351_VARIANT_A = 1,
> -       SI5351_VARIANT_A3 = 2,
> -       SI5351_VARIANT_B = 3,
> -       SI5351_VARIANT_C = 4,
> -};
> -
> -/**
>   * enum si5351_pll_src - Si5351 pll clock source
>   * @SI5351_PLL_SRC_DEFAULT: default, do not change eeprom config
>   * @SI5351_PLL_SRC_XTAL: pll source clock is XTAL input
> @@ -115,14 +101,12 @@ struct si5351_clkout_config {
>  
>  /**
>   * struct si5351_platform_data - Platform data for the Si5351 clock driver
> - * @variant: Si5351 chip variant
>   * @clk_xtal: xtal input clock
>   * @clk_clkin: clkin input clock
>   * @pll_src: array of pll source clock setting
>   * @clkout: array of clkout configuration
>   */
>  struct si5351_platform_data {
> -       enum si5351_variant variant;
>         struct clk *clk_xtal;
>         struct clk *clk_clkin;
>         enum si5351_pll_src pll_src[2];
> -- 
> 1.7.10.4
> 

WARNING: multiple messages have this Message-ID (diff)
From: Mike Turquette <mturquette@linaro.org>
To: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>,
	"Sebastian Hesselbarth" <sebastian.hesselbarth@gmail.com>
Cc: "Jason Cooper" <jason@lakedaemon.net>,
	"Russell King" <linux@arm.linux.org.uk>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH RESEND TAKE 3] clk: si5351: remove variant from platform_data
Date: Mon, 27 Jan 2014 11:25:14 -0800	[thread overview]
Message-ID: <20140127192514.4167.61004@quantum> (raw)
In-Reply-To: <1390682911-9022-1-git-send-email-sebastian.hesselbarth@gmail.com>

Quoting Sebastian Hesselbarth (2014-01-25 12:48:31)
> Commit 9807362bfe1748d9bb48eecb9261f1b1aaafea1c
>   "clk: si5351: declare all device IDs for module loading"
> removed the common i2c_device_id and introduced new ones for each variant
> of the clock generator. Instead of exploiting that information in the driver,
> it still depends on platform_data passing the chips .variant.
> 
> This removes the now redundant .variant from the platform_data and puts it in
> i2c_device_id's .driver_data instead.
> 
> Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
> ---
> Mike,
> 
> this is the patch I mentioned during ARM summit ;). Still applies to
> pre-v3.14-rc1 cleanly. Maybe it is time to take it now?

Hi Sebastian,

You're right, I overlooked this one. I've taken it in now.

Regards,
Mike

> 
> Cc: Mike Turquette <mturquette@linaro.org>
> Cc: Jason Cooper <jason@lakedaemon.net>
> Cc: Russell King <linux@arm.linux.org.uk>
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-kernel@vger.kernel.org
> ---
>  drivers/clk/clk-si5351.c             |   28 ++++++++++++----------------
>  drivers/clk/clk-si5351.h             |   14 ++++++++++++++
>  include/linux/platform_data/si5351.h |   16 ----------------
>  3 files changed, 26 insertions(+), 32 deletions(-)
> 
> diff --git a/drivers/clk/clk-si5351.c b/drivers/clk/clk-si5351.c
> index c50e837..b95aa09 100644
> --- a/drivers/clk/clk-si5351.c
> +++ b/drivers/clk/clk-si5351.c
> @@ -1111,11 +1111,11 @@ static const struct of_device_id si5351_dt_ids[] = {
>  };
>  MODULE_DEVICE_TABLE(of, si5351_dt_ids);
>  
> -static int si5351_dt_parse(struct i2c_client *client)
> +static int si5351_dt_parse(struct i2c_client *client,
> +                          enum si5351_variant variant)
>  {
>         struct device_node *child, *np = client->dev.of_node;
>         struct si5351_platform_data *pdata;
> -       const struct of_device_id *match;
>         struct property *prop;
>         const __be32 *p;
>         int num = 0;
> @@ -1124,15 +1124,10 @@ static int si5351_dt_parse(struct i2c_client *client)
>         if (np == NULL)
>                 return 0;
>  
> -       match = of_match_node(si5351_dt_ids, np);
> -       if (match == NULL)
> -               return -EINVAL;
> -
>         pdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL);
>         if (!pdata)
>                 return -ENOMEM;
>  
> -       pdata->variant = (enum si5351_variant)match->data;
>         pdata->clk_xtal = of_clk_get(np, 0);
>         if (!IS_ERR(pdata->clk_xtal))
>                 clk_put(pdata->clk_xtal);
> @@ -1163,7 +1158,7 @@ static int si5351_dt_parse(struct i2c_client *client)
>                         pdata->pll_src[num] = SI5351_PLL_SRC_XTAL;
>                         break;
>                 case 1:
> -                       if (pdata->variant != SI5351_VARIANT_C) {
> +                       if (variant != SI5351_VARIANT_C) {
>                                 dev_err(&client->dev,
>                                         "invalid parent %d for pll %d\n",
>                                         val, num);
> @@ -1187,7 +1182,7 @@ static int si5351_dt_parse(struct i2c_client *client)
>                 }
>  
>                 if (num >= 8 ||
> -                   (pdata->variant == SI5351_VARIANT_A3 && num >= 3)) {
> +                   (variant == SI5351_VARIANT_A3 && num >= 3)) {
>                         dev_err(&client->dev, "invalid clkout %d\n", num);
>                         return -EINVAL;
>                 }
> @@ -1226,7 +1221,7 @@ static int si5351_dt_parse(struct i2c_client *client)
>                                         SI5351_CLKOUT_SRC_XTAL;
>                                 break;
>                         case 3:
> -                               if (pdata->variant != SI5351_VARIANT_C) {
> +                               if (variant != SI5351_VARIANT_C) {
>                                         dev_err(&client->dev,
>                                                 "invalid parent %d for clkout %d\n",
>                                                 val, num);
> @@ -1307,6 +1302,7 @@ static int si5351_dt_parse(struct i2c_client *client)
>  static int si5351_i2c_probe(struct i2c_client *client,
>                             const struct i2c_device_id *id)
>  {
> +       enum si5351_variant variant = (enum si5351_variant)id->driver_data;
>         struct si5351_platform_data *pdata;
>         struct si5351_driver_data *drvdata;
>         struct clk_init_data init;
> @@ -1315,7 +1311,7 @@ static int si5351_i2c_probe(struct i2c_client *client,
>         u8 num_parents, num_clocks;
>         int ret, n;
>  
> -       ret = si5351_dt_parse(client);
> +       ret = si5351_dt_parse(client, variant);
>         if (ret)
>                 return ret;
>  
> @@ -1331,7 +1327,7 @@ static int si5351_i2c_probe(struct i2c_client *client,
>  
>         i2c_set_clientdata(client, drvdata);
>         drvdata->client = client;
> -       drvdata->variant = pdata->variant;
> +       drvdata->variant = variant;
>         drvdata->pxtal = pdata->clk_xtal;
>         drvdata->pclkin = pdata->clk_clkin;
>  
> @@ -1568,10 +1564,10 @@ static int si5351_i2c_probe(struct i2c_client *client,
>  }
>  
>  static const struct i2c_device_id si5351_i2c_ids[] = {
> -       { "si5351a", 0 },
> -       { "si5351a-msop", 0 },
> -       { "si5351b", 0 },
> -       { "si5351c", 0 },
> +       { "si5351a", SI5351_VARIANT_A },
> +       { "si5351a-msop", SI5351_VARIANT_A3 },
> +       { "si5351b", SI5351_VARIANT_B },
> +       { "si5351c", SI5351_VARIANT_C },
>         { }
>  };
>  MODULE_DEVICE_TABLE(i2c, si5351_i2c_ids);
> diff --git a/drivers/clk/clk-si5351.h b/drivers/clk/clk-si5351.h
> index c0dbf26..4d0746b 100644
> --- a/drivers/clk/clk-si5351.h
> +++ b/drivers/clk/clk-si5351.h
> @@ -153,4 +153,18 @@
>  #define  SI5351_XTAL_ENABLE                    (1<<6)
>  #define  SI5351_MULTISYNTH_ENABLE              (1<<4)
>  
> +/**
> + * enum si5351_variant - SiLabs Si5351 chip variant
> + * @SI5351_VARIANT_A: Si5351A (8 output clocks, XTAL input)
> + * @SI5351_VARIANT_A3: Si5351A MSOP10 (3 output clocks, XTAL input)
> + * @SI5351_VARIANT_B: Si5351B (8 output clocks, XTAL/VXCO input)
> + * @SI5351_VARIANT_C: Si5351C (8 output clocks, XTAL/CLKIN input)
> + */
> +enum si5351_variant {
> +       SI5351_VARIANT_A = 1,
> +       SI5351_VARIANT_A3 = 2,
> +       SI5351_VARIANT_B = 3,
> +       SI5351_VARIANT_C = 4,
> +};
> +
>  #endif
> diff --git a/include/linux/platform_data/si5351.h b/include/linux/platform_data/si5351.h
> index 5433439..a947ab8 100644
> --- a/include/linux/platform_data/si5351.h
> +++ b/include/linux/platform_data/si5351.h
> @@ -8,20 +8,6 @@
>  struct clk;
>  
>  /**
> - * enum si5351_variant - SiLabs Si5351 chip variant
> - * @SI5351_VARIANT_A: Si5351A (8 output clocks, XTAL input)
> - * @SI5351_VARIANT_A3: Si5351A MSOP10 (3 output clocks, XTAL input)
> - * @SI5351_VARIANT_B: Si5351B (8 output clocks, XTAL/VXCO input)
> - * @SI5351_VARIANT_C: Si5351C (8 output clocks, XTAL/CLKIN input)
> - */
> -enum si5351_variant {
> -       SI5351_VARIANT_A = 1,
> -       SI5351_VARIANT_A3 = 2,
> -       SI5351_VARIANT_B = 3,
> -       SI5351_VARIANT_C = 4,
> -};
> -
> -/**
>   * enum si5351_pll_src - Si5351 pll clock source
>   * @SI5351_PLL_SRC_DEFAULT: default, do not change eeprom config
>   * @SI5351_PLL_SRC_XTAL: pll source clock is XTAL input
> @@ -115,14 +101,12 @@ struct si5351_clkout_config {
>  
>  /**
>   * struct si5351_platform_data - Platform data for the Si5351 clock driver
> - * @variant: Si5351 chip variant
>   * @clk_xtal: xtal input clock
>   * @clk_clkin: clkin input clock
>   * @pll_src: array of pll source clock setting
>   * @clkout: array of clkout configuration
>   */
>  struct si5351_platform_data {
> -       enum si5351_variant variant;
>         struct clk *clk_xtal;
>         struct clk *clk_clkin;
>         enum si5351_pll_src pll_src[2];
> -- 
> 1.7.10.4
> 

  reply	other threads:[~2014-01-27 19:25 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-25 20:48 [PATCH RESEND TAKE 3] clk: si5351: remove variant from platform_data Sebastian Hesselbarth
2014-01-25 20:48 ` Sebastian Hesselbarth
2014-01-27 19:25 ` Mike Turquette [this message]
2014-01-27 19:25   ` Mike Turquette
2014-01-28  8:47 ` [PATCH] clk: si5351: fix non-DT build breakage Sebastian Hesselbarth
2014-01-28  8:47   ` Sebastian Hesselbarth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140127192514.4167.61004@quantum \
    --to=mturquette@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.