From: Tony Lindgren <tony@atomide.com> To: Paul Walmsley <paul@pwsan.com> Cc: Felipe Balbi <balbi@ti.com>, Linux OMAP Mailing List <linux-omap@vger.kernel.org>, Linux ARM Kernel Mailing List <linux-arm-kernel@lists.infradead.org> Subject: Re: [RFC/NOT FOR MERGING 2/3] serial: omap: remove hwmod dependency Date: Thu, 14 Feb 2013 14:22:47 -0800 [thread overview] Message-ID: <20130214222247.GE11362@atomide.com> (raw) In-Reply-To: <alpine.DEB.2.00.1302141946110.11016@utopia.booyaka.com> * Paul Walmsley <paul@pwsan.com> [130214 12:51]: > Hi, > > On Thu, 14 Feb 2013, Tony Lindgren wrote: > > > I don't think so as hwmod should only touch the sysconfig space > > when no driver has claimed it. > > hwmod does need to touch the SYSCONFIG register during pm_runtime suspend > and resume operations, and during device enable and disable operations. > Here's the relevant code: > > http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=arch/arm/mach-omap2/omap_hwmod.c;h=4653efb87a2721ea20a9fe06a30a6c204d6d2282;hb=HEAD#l2157 > > http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=arch/arm/mach-omap2/omap_hwmod.c;h=4653efb87a2721ea20a9fe06a30a6c204d6d2282;hb=HEAD#l2195 But that's triggered by runtime PM from the device driver, right? I think it's fine for hwmod to do that as requested by the device driver via runtime PM since hwmod is the bus glue making the drivers arch independent. I think the only piece we're missing for that is for driver to run something like pm_runtime_init() that initializes the address space to hwmod. Or just bus specific ioremap like you're suggesting later on. Just to recap what we've discussed earlier, the reasons why we want reset and idle functions should be in the driver specific header are: 1. There's often driver specific logic needed in addition to the syconfig tinkering in the reset/idle functions. 2. We need to be able to reset and idle some hardware even if the driver is not compiled in. > Drivers shouldn't touch their IP block's SYSCONFIG registers. They don't > have anything specifically to do with the underlying device IP block, but > with the SoC integration, even though they live in the device's > memory-mapped address range. It's unfortunate that TI didn't allocate a > separate, small address space for these registers, translated by the bus, > similar to the PCI-E Enhanced Configuration Access Mechanism: > > http://wiki.osdev.org/PCI_Express#Extended_Configuration_Space > > ... but that's unfortunately the reality of the OMAP hardware. Yes I think we all agree on accessing sysconfig in a standardized way via runtime PM triggered by the driver. > Regarding ioremap(), it seems reasonable for drivers to call ioremap(), as > long as the implementation of ioremap() can be overridden by the device's > bus. PCI device drivers already do this -- albeit in a PCI-specific way > -- with pci_ioremap_bar(): > > http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git&a=search&h=HEAD&st=grep&s=pci_ioremap_bar > > So instead of something bus-specific like that, a better way would be to > use something like: > > va = dev->bus->ioremap( ... ); > va = dev->bus->iounmap( ... ); > > Any driver using such a mechanism would be intrinsically generic. > platform_bus could simply set its bus->ioremap to the existing ioremap() > function, while buses like a omap_hwmod_bus could use a function that > returned the address range that omap_hwmod_bus has already ioremap()ped. Yeah makes sense to me. Tony
WARNING: multiple messages have this Message-ID (diff)
From: tony@atomide.com (Tony Lindgren) To: linux-arm-kernel@lists.infradead.org Subject: [RFC/NOT FOR MERGING 2/3] serial: omap: remove hwmod dependency Date: Thu, 14 Feb 2013 14:22:47 -0800 [thread overview] Message-ID: <20130214222247.GE11362@atomide.com> (raw) In-Reply-To: <alpine.DEB.2.00.1302141946110.11016@utopia.booyaka.com> * Paul Walmsley <paul@pwsan.com> [130214 12:51]: > Hi, > > On Thu, 14 Feb 2013, Tony Lindgren wrote: > > > I don't think so as hwmod should only touch the sysconfig space > > when no driver has claimed it. > > hwmod does need to touch the SYSCONFIG register during pm_runtime suspend > and resume operations, and during device enable and disable operations. > Here's the relevant code: > > http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=arch/arm/mach-omap2/omap_hwmod.c;h=4653efb87a2721ea20a9fe06a30a6c204d6d2282;hb=HEAD#l2157 > > http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=arch/arm/mach-omap2/omap_hwmod.c;h=4653efb87a2721ea20a9fe06a30a6c204d6d2282;hb=HEAD#l2195 But that's triggered by runtime PM from the device driver, right? I think it's fine for hwmod to do that as requested by the device driver via runtime PM since hwmod is the bus glue making the drivers arch independent. I think the only piece we're missing for that is for driver to run something like pm_runtime_init() that initializes the address space to hwmod. Or just bus specific ioremap like you're suggesting later on. Just to recap what we've discussed earlier, the reasons why we want reset and idle functions should be in the driver specific header are: 1. There's often driver specific logic needed in addition to the syconfig tinkering in the reset/idle functions. 2. We need to be able to reset and idle some hardware even if the driver is not compiled in. > Drivers shouldn't touch their IP block's SYSCONFIG registers. They don't > have anything specifically to do with the underlying device IP block, but > with the SoC integration, even though they live in the device's > memory-mapped address range. It's unfortunate that TI didn't allocate a > separate, small address space for these registers, translated by the bus, > similar to the PCI-E Enhanced Configuration Access Mechanism: > > http://wiki.osdev.org/PCI_Express#Extended_Configuration_Space > > ... but that's unfortunately the reality of the OMAP hardware. Yes I think we all agree on accessing sysconfig in a standardized way via runtime PM triggered by the driver. > Regarding ioremap(), it seems reasonable for drivers to call ioremap(), as > long as the implementation of ioremap() can be overridden by the device's > bus. PCI device drivers already do this -- albeit in a PCI-specific way > -- with pci_ioremap_bar(): > > http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git&a=search&h=HEAD&st=grep&s=pci_ioremap_bar > > So instead of something bus-specific like that, a better way would be to > use something like: > > va = dev->bus->ioremap( ... ); > va = dev->bus->iounmap( ... ); > > Any driver using such a mechanism would be intrinsically generic. > platform_bus could simply set its bus->ioremap to the existing ioremap() > function, while buses like a omap_hwmod_bus could use a function that > returned the address range that omap_hwmod_bus has already ioremap()ped. Yeah makes sense to me. Tony
next prev parent reply other threads:[~2013-02-14 22:22 UTC|newest] Thread overview: 142+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-02-14 11:15 [RFC/NOT FOR MERGING 1/3] arm: omap: use generic implementation if !od Felipe Balbi 2013-02-14 11:15 ` Felipe Balbi 2013-02-14 11:15 ` [RFC/NOT FOR MERGING 2/3] serial: omap: remove hwmod dependency Felipe Balbi 2013-02-14 17:12 ` Tony Lindgren 2013-02-14 17:12 ` Tony Lindgren 2013-02-14 17:56 ` Felipe Balbi 2013-02-14 17:56 ` Felipe Balbi 2013-02-14 18:12 ` Tony Lindgren 2013-02-14 18:12 ` Tony Lindgren 2013-02-14 19:27 ` Felipe Balbi 2013-02-14 19:27 ` Felipe Balbi 2013-02-14 19:39 ` Tony Lindgren 2013-02-14 19:39 ` Tony Lindgren 2013-02-14 20:47 ` Paul Walmsley 2013-02-14 20:47 ` Paul Walmsley 2013-02-14 21:40 ` Paul Walmsley 2013-02-14 21:40 ` Paul Walmsley 2013-02-14 22:47 ` Tony Lindgren 2013-02-14 22:47 ` Tony Lindgren 2013-02-15 6:46 ` Felipe Balbi 2013-02-15 6:46 ` Felipe Balbi 2013-02-15 7:29 ` Santosh Shilimkar 2013-02-15 7:29 ` Santosh Shilimkar 2013-02-19 15:30 ` Paul Walmsley 2013-02-19 15:30 ` Paul Walmsley 2013-02-19 15:45 ` Russell King - ARM Linux 2013-02-19 15:45 ` Russell King - ARM Linux 2013-02-19 16:30 ` Tony Lindgren 2013-02-19 16:30 ` Tony Lindgren 2013-02-19 18:22 ` Russell King - ARM Linux 2013-02-19 18:22 ` Russell King - ARM Linux 2013-02-19 19:31 ` Tony Lindgren 2013-02-19 19:31 ` Tony Lindgren 2013-02-19 19:43 ` hwmod data duplication (was: Re: [RFC/NOT FOR MERGING 2/3] serial: omap: remove hwmod dependency) Felipe Balbi 2013-02-19 19:43 ` Felipe Balbi 2013-02-19 22:09 ` Tony Lindgren 2013-02-19 22:09 ` Tony Lindgren 2013-02-19 22:22 ` Felipe Balbi 2013-02-19 22:22 ` Felipe Balbi 2013-02-19 22:31 ` Tony Lindgren 2013-02-19 22:31 ` Tony Lindgren 2013-02-19 22:51 ` Felipe Balbi 2013-02-19 22:51 ` Felipe Balbi 2013-02-15 10:26 ` [RFC/NOT FOR MERGING 2/3] serial: omap: remove hwmod dependency Russell King - ARM Linux 2013-02-15 10:26 ` Russell King - ARM Linux 2013-02-14 21:56 ` Paul Walmsley 2013-02-14 21:56 ` Paul Walmsley 2013-02-14 22:22 ` Tony Lindgren [this message] 2013-02-14 22:22 ` Tony Lindgren 2013-02-15 6:53 ` Felipe Balbi 2013-02-15 6:53 ` Felipe Balbi 2013-02-15 7:27 ` Bedia, Vaibhav 2013-02-15 7:27 ` Bedia, Vaibhav 2013-02-19 15:27 ` Paul Walmsley 2013-02-19 15:27 ` Paul Walmsley 2013-02-19 16:38 ` Tony Lindgren 2013-02-19 16:38 ` Tony Lindgren 2013-02-19 16:57 ` Felipe Balbi 2013-02-19 16:57 ` Felipe Balbi 2013-02-19 17:43 ` Tony Lindgren 2013-02-19 17:43 ` Tony Lindgren 2013-02-19 18:34 ` Felipe Balbi 2013-02-19 18:34 ` Felipe Balbi 2013-02-19 19:16 ` Kevin Hilman 2013-02-19 19:16 ` Kevin Hilman 2013-02-19 19:32 ` Felipe Balbi 2013-02-19 19:32 ` Felipe Balbi 2013-02-19 19:50 ` Kevin Hilman 2013-02-19 19:50 ` Kevin Hilman 2013-02-19 20:10 ` OMAP reset requirements (was: Re: [RFC/NOT FOR MERGING 2/3] serial: omap: remove hwmod dependency) ^[:x Felipe Balbi 2013-02-19 20:10 ` OMAP reset requirements (was: Re: [RFC/NOT FOR MERGING 2/3] serial: omap: remove hwmod dependency)^[:x Felipe Balbi 2013-02-19 20:25 ` OMAP reset requirements Kevin Hilman 2013-02-19 20:25 ` Kevin Hilman 2013-02-20 6:26 ` [RFC/NOT FOR MERGING 2/3] serial: omap: remove hwmod dependency Santosh Shilimkar 2013-02-20 6:26 ` Santosh Shilimkar 2013-02-15 6:44 ` Felipe Balbi 2013-02-15 6:44 ` Felipe Balbi 2013-02-15 7:27 ` Bedia, Vaibhav 2013-02-15 7:27 ` Bedia, Vaibhav 2013-02-20 17:38 ` Paul Walmsley 2013-02-20 17:38 ` Paul Walmsley 2013-02-20 19:16 ` Felipe Balbi 2013-02-20 19:16 ` Felipe Balbi 2013-02-20 20:03 ` Paul Walmsley 2013-02-20 20:03 ` Paul Walmsley 2013-02-20 20:37 ` Russell King - ARM Linux 2013-02-20 20:37 ` Russell King - ARM Linux 2013-02-21 10:16 ` Peter De Schrijver 2013-02-21 10:16 ` Peter De Schrijver 2013-02-21 12:09 ` Peter Korsgaard 2013-02-21 12:09 ` Peter Korsgaard 2013-02-15 10:16 ` Russell King - ARM Linux 2013-02-15 10:16 ` Russell King - ARM Linux 2013-02-15 13:26 ` Santosh Shilimkar 2013-02-15 13:26 ` Santosh Shilimkar 2013-02-15 13:27 ` Russell King - ARM Linux 2013-02-15 13:27 ` Russell King - ARM Linux 2013-02-15 13:31 ` Santosh Shilimkar 2013-02-15 13:31 ` Santosh Shilimkar 2013-02-15 16:30 ` Tony Lindgren 2013-02-15 16:30 ` Tony Lindgren 2013-02-15 16:42 ` Felipe Balbi 2013-02-15 16:42 ` Felipe Balbi 2013-02-16 6:01 ` Santosh Shilimkar 2013-02-16 6:01 ` Santosh Shilimkar 2013-02-16 8:55 ` Felipe Balbi 2013-02-16 8:55 ` Felipe Balbi 2013-02-16 9:17 ` Santosh Shilimkar 2013-02-16 9:17 ` Santosh Shilimkar 2013-02-16 9:22 ` Felipe Balbi 2013-02-16 9:22 ` Felipe Balbi 2013-02-16 9:31 ` Santosh Shilimkar 2013-02-16 9:31 ` Santosh Shilimkar 2013-02-18 15:27 ` Kevin Hilman 2013-02-18 15:27 ` Kevin Hilman 2013-02-16 5:31 ` Santosh Shilimkar 2013-02-16 5:31 ` Santosh Shilimkar 2013-02-16 5:36 ` Nicolas Pitre 2013-02-16 5:36 ` Nicolas Pitre 2013-02-16 5:48 ` Santosh Shilimkar 2013-02-16 5:48 ` Santosh Shilimkar 2013-02-18 8:08 ` Bedia, Vaibhav 2013-02-18 8:08 ` Bedia, Vaibhav 2013-02-18 8:28 ` Santosh Shilimkar 2013-02-18 8:28 ` Santosh Shilimkar 2013-02-15 15:40 ` Kevin Hilman 2013-02-15 15:40 ` Kevin Hilman 2013-02-15 16:03 ` Felipe Balbi 2013-02-15 16:03 ` Felipe Balbi 2013-02-16 4:59 ` Santosh Shilimkar 2013-02-16 4:59 ` Santosh Shilimkar 2013-02-18 14:52 ` Kevin Hilman 2013-02-18 14:52 ` Kevin Hilman 2013-02-14 11:15 ` [RFC/NOT FOR MERGING 3/3] arm: boot: dts: omap: remove ti_hwmods from UART ports Felipe Balbi 2013-02-14 11:20 ` [RFC/NOT FOR MERGING 1/3] arm: omap: use generic implementation if !od Russell King - ARM Linux 2013-02-14 11:20 ` Russell King - ARM Linux 2013-02-14 17:57 ` Felipe Balbi 2013-02-14 17:57 ` Felipe Balbi 2013-02-15 15:28 ` Kevin Hilman 2013-02-15 15:28 ` Kevin Hilman 2013-02-15 16:04 ` Felipe Balbi 2013-02-15 16:04 ` Felipe Balbi
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=20130214222247.GE11362@atomide.com \ --to=tony@atomide.com \ --cc=balbi@ti.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-omap@vger.kernel.org \ --cc=paul@pwsan.com \ /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: linkBe 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.