From: Santosh Shilimkar <santosh.shilimkar@ti.com>
To: balbi@ti.com
Cc: Tony Lindgren <tony@atomide.com>, Paul Walmsley <paul@pwsan.com>,
Linux OMAP Mailing List <linux-omap@vger.kernel.org>,
Linux ARM Kernel Mailing List
<linux-arm-kernel@lists.infradead.org>,
Rajendra Nayak <rnayak@ti.com>, "Kristo, Tero" <t-kristo@ti.com>,
Kevin Hilman <khilman@deeprootsystems.com>
Subject: Re: [RFC/NOT FOR MERGING 2/3] serial: omap: remove hwmod dependency
Date: Fri, 15 Feb 2013 12:59:51 +0530 [thread overview]
Message-ID: <511DE3EF.6070902@ti.com> (raw)
In-Reply-To: <20130215064626.GB30038@arwen.pp.htv.fi>
+ Tero, Rajendra, Kevin
On Friday 15 February 2013 12:16 PM, Felipe Balbi wrote:
> On Thu, Feb 14, 2013 at 02:47:10PM -0800, Tony Lindgren wrote:
>> * Paul Walmsley <paul@pwsan.com> [130214 13:44]:
>>> Hi,
>>>
>>> On Thu, 14 Feb 2013, Paul Walmsley wrote:
>>>
>>>> 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( ... );
>>>
>>> Something like this is what I was thinking. Obviously there would be more
>>> patches needed, for the various arches, etc.; and I'm not convinced that
>>> the function pointer init is done at the right time yet. Comments welcome.
>>>
>>>
>>> - Paul
>>>
>>>
>>> From: Paul Walmsley <paul@pwsan.com>
>>> Date: Thu, 14 Feb 2013 13:49:58 -0700
>>> Subject: [PATCH] EXPERIMENTAL: device/ARM: allow buses to override ioremap*()
>>> and iounmap()
>>>
>>> On some hardware, such as OMAP, the bus abstraction code needs to call
>>> ioremap(), since some SoC-integration registers are located in the
>>> device address space. But generic device drivers should be able to
>>> call ioremap() from driver code, for the majority of situations where
>>> this isn't necessary. This experimental patch allows Linux bus abstraction
>>> code to override all of the ioremap*() and iounmap() functions. In the OMAP
>>> case, this would be used to return the previously-mapped address range from
>>> the bus code, when called for the device's register area. This would avoid
>>> a duplicate TLB mapping for that space.
>>>
>>> This might also be useful as a generic replacement for pci_ioremap_bar().
>>>
>>> Compile-tested only.
>>
>> The other option could be to allow custom ioremap function pointers
>> based on address range in __arm_ioremap_pfn_caller() the same way as
>> the SoC specific static mappings are allowed. That would require adding
>> a function pointer to struct map_desc.
>>
>> Maybe that would do the trick?
>
> I'm not sure we should even try that. I mean, eventually (maybe in 100
> years) we wouldn't mach-* at all and even struct map_desc would be
> dynamically initialized by data passed in via DTB, right ? Just consider
> Arnd's patch for the "machine_desc-less" DT boot. If we add a function
> pointer to struct map_desc, it will just become yet another function
> pointer to be removed later.
>
On the same thread, it was also mentioned that, "machine_desc-less" DT
boot is for simple machines. I have looked that aspect bit more.
Considering the amount of callbacks OMAP uses, it is not practical.
Ofcourse am also not in favor of adding another function pointer
stuff here.
We should get rid of dual ioremap() and the method suggested by Paul
seems to be reasonable.
Sysconfig handling is very tightly coupled with PRCM. I agree with Paul
that hardware should have mapped it in separate address space. So
whichever framework manages the PRCM, should also manage sysconfig.
Refer all the issues around sysconfig for IP's like USB, UART
and they are directly PRCM issues.
We should be able to work around the IP integration issues
around problematic IPs like UART, USB with some profile knowledge
which can be handled by runtime PM transparently. It should have
been done that way in first place instead of functions pointers
which today break the Device Tree builds directly.
As I mentioned in OMAP5 data series, we are now able to remove the
IO_resource information ( Address space, IRQ data, DMA lines) from
from hwmod data and extract it from device Tree. Thats a good
point.
Next one is getting rid off sysconfig function pointers which drivers
are using and handle those issues using runtime_pm APIs. Idea is, IP
gives profile like...
e.g
McSPI1 -> Smart Idle always
UART -> no_idle(runtime_get) and smart_idle(runtime_put)
mUSB --> no_idle(runtime_get) and force_idle(runtime_put)
Then the last one is custom reset function for broken IPs. For this
one as well if we can add a hook in runtime framework, then it
can be handled without direct function calls.
Regards,
Santosh
Regards
Santosh
WARNING: multiple messages have this Message-ID (diff)
From: santosh.shilimkar@ti.com (Santosh Shilimkar)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC/NOT FOR MERGING 2/3] serial: omap: remove hwmod dependency
Date: Fri, 15 Feb 2013 12:59:51 +0530 [thread overview]
Message-ID: <511DE3EF.6070902@ti.com> (raw)
In-Reply-To: <20130215064626.GB30038@arwen.pp.htv.fi>
+ Tero, Rajendra, Kevin
On Friday 15 February 2013 12:16 PM, Felipe Balbi wrote:
> On Thu, Feb 14, 2013 at 02:47:10PM -0800, Tony Lindgren wrote:
>> * Paul Walmsley <paul@pwsan.com> [130214 13:44]:
>>> Hi,
>>>
>>> On Thu, 14 Feb 2013, Paul Walmsley wrote:
>>>
>>>> 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( ... );
>>>
>>> Something like this is what I was thinking. Obviously there would be more
>>> patches needed, for the various arches, etc.; and I'm not convinced that
>>> the function pointer init is done at the right time yet. Comments welcome.
>>>
>>>
>>> - Paul
>>>
>>>
>>> From: Paul Walmsley <paul@pwsan.com>
>>> Date: Thu, 14 Feb 2013 13:49:58 -0700
>>> Subject: [PATCH] EXPERIMENTAL: device/ARM: allow buses to override ioremap*()
>>> and iounmap()
>>>
>>> On some hardware, such as OMAP, the bus abstraction code needs to call
>>> ioremap(), since some SoC-integration registers are located in the
>>> device address space. But generic device drivers should be able to
>>> call ioremap() from driver code, for the majority of situations where
>>> this isn't necessary. This experimental patch allows Linux bus abstraction
>>> code to override all of the ioremap*() and iounmap() functions. In the OMAP
>>> case, this would be used to return the previously-mapped address range from
>>> the bus code, when called for the device's register area. This would avoid
>>> a duplicate TLB mapping for that space.
>>>
>>> This might also be useful as a generic replacement for pci_ioremap_bar().
>>>
>>> Compile-tested only.
>>
>> The other option could be to allow custom ioremap function pointers
>> based on address range in __arm_ioremap_pfn_caller() the same way as
>> the SoC specific static mappings are allowed. That would require adding
>> a function pointer to struct map_desc.
>>
>> Maybe that would do the trick?
>
> I'm not sure we should even try that. I mean, eventually (maybe in 100
> years) we wouldn't mach-* at all and even struct map_desc would be
> dynamically initialized by data passed in via DTB, right ? Just consider
> Arnd's patch for the "machine_desc-less" DT boot. If we add a function
> pointer to struct map_desc, it will just become yet another function
> pointer to be removed later.
>
On the same thread, it was also mentioned that, "machine_desc-less" DT
boot is for simple machines. I have looked that aspect bit more.
Considering the amount of callbacks OMAP uses, it is not practical.
Ofcourse am also not in favor of adding another function pointer
stuff here.
We should get rid of dual ioremap() and the method suggested by Paul
seems to be reasonable.
Sysconfig handling is very tightly coupled with PRCM. I agree with Paul
that hardware should have mapped it in separate address space. So
whichever framework manages the PRCM, should also manage sysconfig.
Refer all the issues around sysconfig for IP's like USB, UART
and they are directly PRCM issues.
We should be able to work around the IP integration issues
around problematic IPs like UART, USB with some profile knowledge
which can be handled by runtime PM transparently. It should have
been done that way in first place instead of functions pointers
which today break the Device Tree builds directly.
As I mentioned in OMAP5 data series, we are now able to remove the
IO_resource information ( Address space, IRQ data, DMA lines) from
from hwmod data and extract it from device Tree. Thats a good
point.
Next one is getting rid off sysconfig function pointers which drivers
are using and handle those issues using runtime_pm APIs. Idea is, IP
gives profile like...
e.g
McSPI1 -> Smart Idle always
UART -> no_idle(runtime_get) and smart_idle(runtime_put)
mUSB --> no_idle(runtime_get) and force_idle(runtime_put)
Then the last one is custom reset function for broken IPs. For this
one as well if we can add a hook in runtime framework, then it
can be handled without direct function calls.
Regards,
Santosh
Regards
Santosh
next prev parent reply other threads:[~2013-02-15 7:28 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 [this message]
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
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=511DE3EF.6070902@ti.com \
--to=santosh.shilimkar@ti.com \
--cc=balbi@ti.com \
--cc=khilman@deeprootsystems.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=paul@pwsan.com \
--cc=rnayak@ti.com \
--cc=t-kristo@ti.com \
--cc=tony@atomide.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: link
Be 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.