Messages in this thread | | | Date | Mon, 26 Sep 2011 19:49:23 +0530 | Subject | Re: [PATCH 2/5 v11] arm: omap: usb: ehci and ohci hwmod structures for omap3 | From | "Munegowda, Keshava" <> |
| |
On Sat, Sep 24, 2011 at 12:00 PM, Paul Walmsley <paul@pwsan.com> wrote: > On Fri, 23 Sep 2011, Munegowda, Keshava wrote: > >> On Thu, Sep 22, 2011 at 11:31 PM, Paul Walmsley <paul@pwsan.com> wrote: >> >> But the question arises here , why do we need these ehci and ohci as two >> different hwmods containing only irq and base address? It is required >> for future - to implement remote wakeup feature for ehci and ohci ports >> depending on irq-chain handler patches by Tero. Separate hwmods for ehci >> and ohci are needed to enable prcm chain-handler to uniquely identify >> the wakeup source as ehci or ohci and call only the corresponding >> interrupt handler. We will be using omap_hwmod_mux_init for ehci and >> ohci hwmods to enable I/O wakeup capability for respective IO-pads. >> Depending on the particular wakeup source(ehci/ohci), the corresponding >> ehci or ohci irq handler will be called. >> >> If ehci and ohci are combined with usbhs hwmod as a single hwmod , then >> for every wakeup (either ehci or ohci port wakeup) only the first >> interrupt handler will be called (please look at the function >> omap_hwmod_mux_handle_irq of >> >> /arch/arm/mach-omap2/mux.c file ; in tero's latest patch: >> http://www.mail-archive.com/linux-omap@vger.kernel.org/msg53139.html) >> , so in this >> case, if ehci interrupt is the first interrupt , then even for ohci wakeup >> , only ehci interrupt will get called; which will break the functionality. > > Any reason why this couldn't be handled either by: > > 1. adding an IRQ number field to struct omap_hwmod_mux_info, and changing > _omap_hwmod_mux_handle_irq() to raise that IRQ number?
yes, it is possible by changing the existing irq-chain handler by tero Kristo
I am looping tero too.
So here are new requirements for the irq-chain handler
1. The hwmod should have have option to have multiple mux structures
This is something like:
The existing mux structure definition in omap_hwmod [file: /arch/arm/plat-omap/include/plat/omap_hwmod.h ] structure
struct omap_hwmod_mux_info *mux;
it should changed to
struct omap_hwmod_mux_info **pmux; U32 mux_cnt;
pmux - pointers to mux ; array of mux structures. mux_cnt - number of mux per hwmod.
2. The mux omap_hwmod_mux_info structure should have new member called irq, like as follows:
struct omap_hwmod_mux_info { int nr_pads; ... .... u32 irq;
};
Upon wakeup of the I/O pad of the mux , the irq-chain handler should invoke the irq handler of the irq numbered <map_hwmod_mux_info.irq>
3. There should be "SOME WAY" to supply the irqs from hwmod structure (omap_hwmod) to mux structure (omap_hwmod_mux_info)
if you , tero and other opensource people are aligned on the proposed changes on the irq-handler ; then it is possible to have two hwmods ( usbhs and tll) for usbhost driver. please let me know you comments on the above approach.
> > or > > 2. using shared interrupts? > > > - Paul >
| |