Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753790AbaA0TZc (ORCPT ); Mon, 27 Jan 2014 14:25:32 -0500 Received: from mail-bk0-f43.google.com ([209.85.214.43]:33864 "EHLO mail-bk0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751508AbaA0TZb convert rfc822-to-8bit (ORCPT ); Mon, 27 Jan 2014 14:25:31 -0500 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8BIT To: Sebastian Hesselbarth , "Sebastian Hesselbarth" From: Mike Turquette In-Reply-To: <1390682911-9022-1-git-send-email-sebastian.hesselbarth@gmail.com> Cc: "Jason Cooper" , "Russell King" , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org References: <1390682911-9022-1-git-send-email-sebastian.hesselbarth@gmail.com> Message-ID: <20140127192514.4167.61004@quantum> User-Agent: alot/0.3.5 Subject: Re: [PATCH RESEND TAKE 3] clk: si5351: remove variant from platform_data Date: Mon, 27 Jan 2014 11:25:14 -0800 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 > --- > 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 > Cc: Jason Cooper > Cc: Russell King > 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 > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/