From patchwork Fri Apr 1 11:20:31 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Samuel Ortiz X-Patchwork-Id: 680921 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p31BLQkx030633 for ; Fri, 1 Apr 2011 11:21:26 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754251Ab1DALUn (ORCPT ); Fri, 1 Apr 2011 07:20:43 -0400 Received: from mga03.intel.com ([143.182.124.21]:47815 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752503Ab1DALUi (ORCPT ); Fri, 1 Apr 2011 07:20:38 -0400 Received: from azsmga001.ch.intel.com ([10.2.17.19]) by azsmga101.ch.intel.com with ESMTP; 01 Apr 2011 04:20:36 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.63,282,1299484800"; d="scan'208";a="412264789" Received: from unknown (HELO sortiz-mobl) ([10.255.16.154]) by azsmga001.ch.intel.com with ESMTP; 01 Apr 2011 04:20:33 -0700 Date: Fri, 1 Apr 2011 13:20:31 +0200 From: Samuel Ortiz To: Grant Likely , Andres Salomon Cc: linux-kernel@vger.kernel.org, Mark Brown , khali@linux-fr.org, ben-linux@fluff.org, Peter Korsgaard , Mauro Carvalho Chehab , David Brownell , linux-i2c@vger.kernel.org, linux-media@vger.kernel.org, netdev@vger.kernel.org, spi-devel-general@lists.sourceforge.net, Mocean Laboratories Subject: Re: [PATCH 07/19] timberdale: mfd_cell is now implicitly available to drivers Message-ID: <20110401112030.GA3447@sortiz-mobl> References: <20110202195417.228e2656@queued.net> <20110202200812.3d8d6cba@queued.net> <20110331230522.GI437@ponder.secretlab.ca> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20110331230522.GI437@ponder.secretlab.ca> User-Agent: Mutt/1.5.20 (2009-06-14) Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Fri, 01 Apr 2011 11:21:27 +0000 (UTC) diff --git a/drivers/mfd/mfd-core.c b/drivers/mfd/mfd-core.c index d01574d..8abe510 100644 --- a/drivers/mfd/mfd-core.c +++ b/drivers/mfd/mfd-core.c @@ -75,9 +75,16 @@ static int mfd_add_device(struct device *parent, int id, pdev->dev.parent = parent; - ret = platform_device_add_data(pdev, cell, sizeof(*cell)); - if (ret) - goto fail_res; + if (cell->mfd_data_size > 0) { + ret = platform_device_add_data(pdev, + cell->mfd_data, cell->mfd_data_size); + if (ret) + goto fail_res; + } else { + ret = platform_device_add_data(pdev, cell, sizeof(*cell)); + if (ret) + goto fail_res; + } for (r = 0; r < cell->num_resources; r++) { res[r].name = cell->resources[r].name; diff --git a/drivers/mfd/timberdale.c b/drivers/mfd/timberdale.c index 94c6c8a..b4d2d09 100644 --- a/drivers/mfd/timberdale.c +++ b/drivers/mfd/timberdale.c @@ -396,6 +396,7 @@ static __devinitdata struct mfd_cell timberdale_cells_bar0_cfg0[] = { .num_resources = ARRAY_SIZE(timberdale_xiic_resources), .resources = timberdale_xiic_resources, .mfd_data = &timberdale_xiic_platform_data, + .mfd_data_size = sizeof(timberdale_xiic_platform_data) }, { .name = "timb-gpio", @@ -420,12 +421,14 @@ static __devinitdata struct mfd_cell timberdale_cells_bar0_cfg0[] = { .num_resources = ARRAY_SIZE(timberdale_spi_resources), .resources = timberdale_spi_resources, .mfd_data = &timberdale_xspi_platform_data, + .mfd_data_size = sizeof(timberdale_xspi_platform_data) }, { .name = "ks8842", .num_resources = ARRAY_SIZE(timberdale_eth_resources), .resources = timberdale_eth_resources, .mfd_data = &timberdale_ks8842_platform_data, + .mfd_data_size = sizeof(timberdale_ks8842_platform_data) }, }; @@ -451,6 +454,7 @@ static __devinitdata struct mfd_cell timberdale_cells_bar0_cfg1[] = { .num_resources = ARRAY_SIZE(timberdale_xiic_resources), .resources = timberdale_xiic_resources, .mfd_data = &timberdale_xiic_platform_data, + .mfd_data_size = sizeof(timberdale_xiic_platform_data) }, { .name = "timb-gpio", @@ -480,12 +484,14 @@ static __devinitdata struct mfd_cell timberdale_cells_bar0_cfg1[] = { .num_resources = ARRAY_SIZE(timberdale_spi_resources), .resources = timberdale_spi_resources, .mfd_data = &timberdale_xspi_platform_data, + .mfd_data_size = sizeof(timberdale_xspi_platform_data) }, { .name = "ks8842", .num_resources = ARRAY_SIZE(timberdale_eth_resources), .resources = timberdale_eth_resources, .mfd_data = &timberdale_ks8842_platform_data, + .mfd_data_size = sizeof(timberdale_ks8842_platform_data) }, }; @@ -506,6 +512,7 @@ static __devinitdata struct mfd_cell timberdale_cells_bar0_cfg2[] = { .num_resources = ARRAY_SIZE(timberdale_xiic_resources), .resources = timberdale_xiic_resources, .mfd_data = &timberdale_xiic_platform_data, + .mfd_data_size = sizeof(timberdale_xiic_platform_data) }, { .name = "timb-gpio", @@ -530,6 +537,7 @@ static __devinitdata struct mfd_cell timberdale_cells_bar0_cfg2[] = { .num_resources = ARRAY_SIZE(timberdale_spi_resources), .resources = timberdale_spi_resources, .mfd_data = &timberdale_xspi_platform_data, + .mfd_data_size = sizeof(timberdale_xspi_platform_data) }, }; @@ -550,6 +558,7 @@ static __devinitdata struct mfd_cell timberdale_cells_bar0_cfg3[] = { .num_resources = ARRAY_SIZE(timberdale_ocores_resources), .resources = timberdale_ocores_resources, .mfd_data = &timberdale_ocores_platform_data, + .mfd_data_size = sizeof(timberdale_ocores_platform_data) }, { .name = "timb-gpio", @@ -574,12 +583,14 @@ static __devinitdata struct mfd_cell timberdale_cells_bar0_cfg3[] = { .num_resources = ARRAY_SIZE(timberdale_spi_resources), .resources = timberdale_spi_resources, .mfd_data = &timberdale_xspi_platform_data, + .mfd_data_size = sizeof(timberdale_xspi_platform_data) }, { .name = "ks8842", .num_resources = ARRAY_SIZE(timberdale_eth_resources), .resources = timberdale_eth_resources, .mfd_data = &timberdale_ks8842_platform_data, + .mfd_data_size = sizeof(timberdale_ks8842_platform_data) }, }; diff --git a/include/linux/mfd/core.h b/include/linux/mfd/core.h index ad1b19a..3687e10 100644 --- a/include/linux/mfd/core.h +++ b/include/linux/mfd/core.h @@ -35,6 +35,7 @@ struct mfd_cell { /* mfd_data can be used to pass data to client drivers */ void *mfd_data; + size_t mfd_data_size; /* * These resources can be specified relative to the parent device. diff --git a/drivers/i2c/busses/i2c-ocores.c b/drivers/i2c/busses/i2c-ocores.c index fee1a26..1b46a9d 100644 --- a/drivers/i2c/busses/i2c-ocores.c +++ b/drivers/i2c/busses/i2c-ocores.c @@ -49,7 +49,6 @@ #include #include #include -#include #include #include #include @@ -306,7 +305,7 @@ static int __devinit ocores_i2c_probe(struct platform_device *pdev) return -EIO; } - pdata = mfd_get_data(pdev); + pdata = pdev->dev.platform_data; if (pdata) { i2c->regstep = pdata->regstep; i2c->clock_khz = pdata->clock_khz; diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c index 9fbd7e6..a9c419e 100644 --- a/drivers/i2c/busses/i2c-xiic.c +++ b/drivers/i2c/busses/i2c-xiic.c @@ -34,7 +34,6 @@ #include #include #include -#include #include #include #include @@ -705,7 +704,7 @@ static int __devinit xiic_i2c_probe(struct platform_device *pdev) if (irq < 0) goto resource_missing; - pdata = mfd_get_data(pdev); + pdata = (struct xiic_i2c_platform_data *) pdev->dev.platform_data; if (!pdata) return -EINVAL; diff --git a/drivers/net/ks8842.c b/drivers/net/ks8842.c index efd44af..928b2b8 100644 --- a/drivers/net/ks8842.c +++ b/drivers/net/ks8842.c @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include @@ -1146,7 +1145,7 @@ static int __devinit ks8842_probe(struct platform_device *pdev) struct resource *iomem; struct net_device *netdev; struct ks8842_adapter *adapter; - struct ks8842_platform_data *pdata = mfd_get_data(pdev); + struct ks8842_platform_data *pdata = pdev->dev.platform_data; u16 id; unsigned i; diff --git a/drivers/spi/xilinx_spi.c b/drivers/spi/xilinx_spi.c index c69c6f2..4d2c75d 100644 --- a/drivers/spi/xilinx_spi.c +++ b/drivers/spi/xilinx_spi.c @@ -18,7 +18,6 @@ #include #include #include -#include #include #include #include @@ -471,7 +470,7 @@ static int __devinit xilinx_spi_probe(struct platform_device *dev) struct spi_master *master; u8 i; - pdata = mfd_get_data(dev); + pdata = dev->dev.platform_data; if (pdata) { num_cs = pdata->num_chipselect; little_endian = pdata->little_endian;