[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <EE11001F9E5DDD47B7634E2F8A612F2E40AAE3DA@FRAEML521-MBX.china.huawei.com>
Date: Tue, 13 Jun 2017 14:38:26 +0000
From: Gabriele Paoloni <gabriele.paoloni@...wei.com>
To: Mika Westerberg <mika.westerberg@...ux.intel.com>,
Lorenzo Pieralisi <lorenzo.pieralisi@....com>
CC: "rafael@...nel.org" <rafael@...nel.org>,
"Rafael J. Wysocki" <rjw@...ysocki.net>,
"catalin.marinas@....com" <catalin.marinas@....com>,
"will.deacon@....com" <will.deacon@....com>,
"robh+dt@...nel.org" <robh+dt@...nel.org>,
"frowand.list@...il.com" <frowand.list@...il.com>,
"bhelgaas@...gle.com" <bhelgaas@...gle.com>,
"arnd@...db.de" <arnd@...db.de>,
"linux-arm-kernel@...ts.infradead.org"
<linux-arm-kernel@...ts.infradead.org>,
"mark.rutland@....com" <mark.rutland@....com>,
"brian.starkey@....com" <brian.starkey@....com>,
"olof@...om.net" <olof@...om.net>,
"benh@...nel.crashing.org" <benh@...nel.crashing.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-acpi@...r.kernel.org" <linux-acpi@...r.kernel.org>,
Linuxarm <linuxarm@...wei.com>,
"linux-pci@...r.kernel.org" <linux-pci@...r.kernel.org>,
"minyard@....org" <minyard@....org>,
John Garry <john.garry@...wei.com>,
"xuwei (O)" <xuwei5@...ilicon.com>
Subject: RE: [PATCH v9 5/7] ACPI: Translate the I/O range of non-MMIO
devices before scanning
Hi Mika
> -----Original Message-----
> From: Mika Westerberg [mailto:mika.westerberg@...ux.intel.com]
> Sent: 13 June 2017 09:49
> To: Lorenzo Pieralisi
> Cc: Gabriele Paoloni; rafael@...nel.org; Rafael J. Wysocki;
> catalin.marinas@....com; will.deacon@....com; robh+dt@...nel.org;
> frowand.list@...il.com; bhelgaas@...gle.com; arnd@...db.de; linux-arm-
> kernel@...ts.infradead.org; mark.rutland@....com;
> brian.starkey@....com; olof@...om.net; benh@...nel.crashing.org; linux-
> kernel@...r.kernel.org; linux-acpi@...r.kernel.org; Linuxarm; linux-
> pci@...r.kernel.org; minyard@....org; John Garry; xuwei (O)
> Subject: Re: [PATCH v9 5/7] ACPI: Translate the I/O range of non-MMIO
> devices before scanning
>
> On Mon, Jun 12, 2017 at 04:57:00PM +0100, Lorenzo Pieralisi wrote:
> > I had a more in-depth look at this series and from my understanding
> > the problem are the following to manage the LPC bindings in ACPI.
> >
> > (1) Child devices of an LPC controller require special handling when
> > filling their resources (ie they need to be translated - in DT
> > that's guaranteed by the "isa" binding, in ACPI it has to be
> > done by new code)
> > (2) In DT systems, LPC child devices are created by the LPC bus
> > controller driver through an of_platform_populate() call with
> > the LPC controller node as the fwnode root. For ACPI to work
> > the same way there must be a way to prevent LPC children to
> > be enumerated in acpi_default_enumeration() something like
> > I2C does (and then the LPC driver would enumerate its children as
> > DT does)
> >
> > I am not sure how (1) and (2) can be managed with current ACPI
> bindings
> > and kernel code - I suspect it may be done by mirroring what's done
> > for I2C but I am not sure, that's why I CC'ed Mika (ie the LPC
> adapter
> > is matched as a platform device and it takes care of enumerating its
> > children - problem though is preventing enumeration from core ACPI
> code).
>
> Is there an example ASL showing how these LPC devices are
> currently presented in ACPI?
Please find below the asl sketch for our LPC and IPMI
//
// LPC
//
Scope(_SB) {
Device (LPC0) {
Name (_HID, "HISI0191") // HiSi LPC
Name (_CRS, ResourceTemplate () {
Memory32Fixed (ReadWrite, 0xa01b0000, 0x1000)
})
}
Device (LPC0.IPMI) {
Name (_HID, "IPI0001")
Method (_IFT) {
Return (0x03)
}
Name (LORS, ResourceTemplate() {
QWordIO (
ResourceConsumer,
MinNotFixed, // _MIF
MaxNotFixed, // _MAF
PosDecode,
EntireRange,
0x0, // _GRA
0xe4, // _MIN
0x3fff, // _MAX
0x0, // _TRA
0x04, // _LEN
, ,
BTIO
)
})
CreateQWordField (LORS, BTIO._MIN, CMIN)
CreateQWordField (LORS, BTIO._MAX, CMAX)
CreateQWordField (LORS, BTIO._LEN, CLEN)
Method (_PRS, 0) {
Return (LORS)
}
Method (_CRS, 0) {
Return (LORS)
}
Method (_SRS, 1) {
CreateQWordField (Arg0, \_SB.LPC0.IPMI.BTIO._MIN, IMIN)
Store (IMIN, CMIN)
CreateQWordField (Arg0, \_SB.LPC0.IPMI.BTIO._MAX, IMAX)
Store (IMAX, CMAX)
}
}
[...]
}
Many thanks
Gab
Powered by blists - more mailing lists