On Mon, Aug 15, 2011 at 10:17:28AM +0200, Guennadi Liakhovetski wrote:
> Hi Simon
>
> On Mon, 15 Aug 2011, Simon Horman wrote:
>
> > The SDHI driver already supports making use of up to three interrupt
> > sources.
> >
> > This series breaks up the existing interrupt handler into three handlers,
> > one for card access, one for card detect interrupts, and one for SDIO
> > interrupts. A cover-all handler, which makes use of these new broken-out
> > handlers is provided for for the case where there is only one interrupt
> > source.
>
> The idea is good, thanks for the patches. Only I'm not sure I find the way
> you split the patches extremely intuitive;-) How about:
>
> [PATCH 1/x] cache IRQ masks
> * in this patch I'd propose to cache SD-card and SDIO IRQ masks in struct
> tmio_mmc_host, instead of reading them every time from the hardware
Sure, that sounds reasonable - though it seems somewhat orthogonal to my series.
I'll check over the code, but it seems that you are implying that
the masks never change.
> [PATCH 2/x] split the ISR
> * in this patch you split the IRQ handler directly into the final form as
> after the first your 3 patches, without intermediate steps, also adding
> them to the header
The current split was intended to make bite-size patches that
are easy to review. I'm happy to combine the patches as you
suggest if that is what you prefer.
> [PATCH 3/x] SDHI: use specialized ISRs when available
> * you know what to do here:-) Also, I'd
> #define SH_MOBILE_SDHI_IRQ_SDCARD 0
> #define SH_MOBILE_SDHI_IRQ_CARD_DETECT 1
> #define SH_MOBILE_SDHI_IRQ_SDIO 2
>
> and use these defines both in platforms
>
> }, [1 + SH_MOBILE_SDHI_IRQ_SDCARD] = {
> ...
I think I see what you are getting at there.
I will try and make it so.
> and in sh_mobile_sdhi.c, instead of going "case 2:" Please, also consider
> unfolding the loop over platform IRQs in probing, it might look better
> flat.
I agree the current loop isn't entirely clean.
I'll unroll it and see how things look.
> "card_access" in function names I would replace with "io" or "data,"
> "card_irq" with "sdcard_irq" because I believe, that "SD card" is a proper
> identification to pure storage card in SD format, as opposed to SDIO
> cards.
Sure, if you would prefer that naming scheme.
> Also, maybe you can double-check, whether you really need all those
> functions with names, beginning with a double underscore, and whether
> better names wouldn't be possible for them.
The motivation behind that aspect of the implementation is
to allow re-use of code while avoiding extra register reads.
I believe the two sdio functions could be collapsed into a single function
while only losing (probably unused) debugging information. I will do that,
though I decided against that option previously for the sake of consistency.
For the card_irq() functions I think it is a bit difficult to collapse things
because the access and detect handlers actually need to read the same
register(s).
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html