Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752374AbdGDPPX (ORCPT ); Tue, 4 Jul 2017 11:15:23 -0400 Received: from szxga01-in.huawei.com ([45.249.212.187]:9276 "EHLO szxga01-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752315AbdGDPPU (ORCPT ); Tue, 4 Jul 2017 11:15:20 -0400 From: Gabriele Paoloni To: Andy Shevchenko CC: Mika Westerberg , "Rafael J. Wysocki" , Lorenzo Pieralisi , "Rafael J. Wysocki" , "catalin.marinas@arm.com" , "will.deacon@arm.com" , "robh+dt@kernel.org" , "frowand.list@gmail.com" , "bhelgaas@google.com" , "arnd@arndb.de" , "linux-arm-kernel@lists.infradead.org" , "mark.rutland@arm.com" , "brian.starkey@arm.com" , "olof@lixom.net" , "benh@kernel.crashing.org" , "linux-kernel@vger.kernel.org" , "linux-acpi@vger.kernel.org" , Linuxarm , "linux-pci@vger.kernel.org" , "minyard@acm.org" , John Garry , "xuwei (O)" Subject: RE: [PATCH v9 5/7] ACPI: Translate the I/O range of non-MMIO devices before scanning Thread-Topic: [PATCH v9 5/7] ACPI: Translate the I/O range of non-MMIO devices before scanning Thread-Index: AQHS1UuGzbU5u381iUa+4J2CuQvNbqIMw+oAgAFaBMCACVtbgIAJ46YAgAEanYCAAILAkP//5+WAgABQ2mCAAAEigIADHYUwgADYkoCAAC/eAIAACiIAgAAGKYCABKntQP//5cKAgAAiBaCAFmWo8IAAJluAgAFU+LA= Date: Tue, 4 Jul 2017 15:14:42 +0000 Message-ID: References: <20170613151013.GT3187@lahna.fi.intel.com> <20170613200339.GX3187@lahna.fi.intel.com> <20170616083313.GY3187@lahna.fi.intel.com> <20170616120048.GC629@lahna.fi.intel.com> <20170619100209.GC629@lahna.fi.intel.com> In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.203.181.162] Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020202.595BB0F0.0145,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=169.254.1.122, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 96dc3753f728769af6773120f6143f42 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id v64FFflO022885 Content-Length: 2207 Lines: 72 Hi Andy [...] > > JFYI: Mika on vacation. Thanks for letting me know > > > I had a look into the MFD framework. If my understanding is correct > the mfd > > framework create a platform device for each declared mfd_cell that is > passed > > to mfd_add_devices(). > > Right. > > > However there is something that I do not quite understand: > > from > > http://elixir.free-electrons.com/linux/latest/source/drivers/mfd/mfd- > core.c#L207 > > it seems that mfd_add_device() will create the platform device using > the > > resources that are statically declared in the respective mfd_cell. > > It's one possibility. > > > In my case I'd like to have a platform device using the resources > that are > > parsed from the ACPI table (i.e. as it is done now by > > acpi_create_platform_device()). > > So far so good. Nothing prevents you to do that. > > > If my understanding is correct, if I declared an mfd_cell for my IPMI > child > > the mfd subsystem would create a platform device for such child and > > therefore acpi_create_platform_device() would fail to create a new > platform > > device as adev->physical_node_count will be non zero. > > However as things stand now mfd_cell devices can only use the > resources > > that are statically defined in the code (and therefore not the ones > in the > > ACPI nodes)...am I right? > > You may file resources first and then register MFD cells. See many > existing examples in the kernel. Well I had a look around the Kernel I have seen no mfd cells using Resources that are not statically defined: i.e. cell->resources in mfd_add_device() always points to statically defined resource structures. Usually for ACPI devices first you need to parse the ACPI resources from the table calling acpi_dev_get_resources(), then you iterate over the resource list and fill the resource array by calling acpi_platform_fill_resurces() (as in acpi_create_platform_device()) With respect to my case are you suggesting dynamically allocate a resource array and fill it using the same fashion as acpi_create_platform_device(), then point cell->resources to such array before calling mfd_add_device() ? Thanks Gab > > -- > With Best Regards, > Andy Shevchenko