Re: [PATCH] linux-next: rsi: fix using of removed stuff from mmc

From: Ulf Hansson
Date: Tue Apr 22 2014 - 07:36:21 EST


On 22 April 2014 12:53, Seungwon Jeon <tgih.jun@xxxxxxxxxxx> wrote:
> On Tue, April 22, 2014, Ulf Hansson wrote:
>> On 22 April 2014 08:57, Seungwon Jeon <tgih.jun@xxxxxxxxxxx> wrote:
>> > As commit 3957848(mmc: drop the speed mode of card's state) applies,
>> > this change should be followed.
>> >
>> > drivers/net/wireless/rsi/rsi_91x_sdio.c:288:20: error: 'MMC_STATE_HIGHSPEED' undeclared (first use
>> in this function)
>> > drivers/net/wireless/rsi/rsi_91x_sdio.c:299:4: error: implicit declaration of function
>> 'mmc_card_set_highspeed' [-Werror=implicit-function-declaration]
>> > drivers/net/wireless/rsi/rsi_91x_sdio.c:306:2: error: implicit declaration of function
>> 'mmc_card_highspeed' [-Werror=implicit-function-declaration]
>> >
>> > Signed-off-by: Seungwon Jeon <tgih.jun@xxxxxxxxxxx>
>>
>> Hi Seungwon,
>>
>> Thanks for responding quickly!
>>
>> > ---
>> > drivers/net/wireless/rsi/rsi_91x_sdio.c | 4 +---
>> > 1 files changed, 1 insertions(+), 3 deletions(-)
>> >
>> > diff --git a/drivers/net/wireless/rsi/rsi_91x_sdio.c b/drivers/net/wireless/rsi/rsi_91x_sdio.c
>> > index 2e39d38..46e7af4 100644
>> > --- a/drivers/net/wireless/rsi/rsi_91x_sdio.c
>> > +++ b/drivers/net/wireless/rsi/rsi_91x_sdio.c
>> > @@ -285,7 +285,6 @@ static void rsi_reset_card(struct sdio_func *pfunction)
>> > if (err) {
>> > rsi_dbg(ERR_ZONE, "%s: CCCR speed reg read failed: %d\n",
>> > __func__, err);
>> > - card->state &= ~MMC_STATE_HIGHSPEED;
>> > } else {
>> > err = rsi_cmd52writebyte(card,
>> > SDIO_CCCR_SPEED,
>> > @@ -296,14 +295,13 @@ static void rsi_reset_card(struct sdio_func *pfunction)
>> > __func__, err);
>> > return;
>> > }
>> > - mmc_card_set_highspeed(card);
>> > host->ios.timing = MMC_TIMING_SD_HS;
>> > host->ops->set_ios(host, &host->ios);
>> > }
>> > }
>> >
>> > /* Set clock */
>> > - if (mmc_card_highspeed(card))
>> > + if (mmc_card_hs(card))
>> > clock = 50000000;
>> > else
>> > clock = card->cis.max_dtr;
>> > --
>> > 1.7.0.4
>> >
>> >
>>
>> I am not sure it's safe to carry this patch through Chris' mmc tree
>> due to merge conflicts with John's wireless tree.
>>
>> Though, since you have changed the mmc_card_highspeed() function to be
>> named to mmc_card_hs(), we need to work out the dependency.
>>
>> We have some options to handle this, I suggest the following.
>>
>> Re-spin this patch to keep using mmc_card_highspeed() and let John
>> take it through his wireless tree. Thus you also need to keep the
> It would be better if this patch can be handled in Chris's.
> Because if the rest of changes of this patch with keeping "mmc_card_highspeed" is applied,
> high-speed SDIO will be ignored in John's tree.

You are right Seungwon!

Please re-spin the patchset on the mmc core an squash the code from
this patch, into the patch "mmc: drop the speed mode of card's state".
We then need to get acks from John and Fariya.

BTW, I had a look at the rsi_reset_card() function
(drivers/net/wireless/rsi/rsi_91x_sdio.c), which handles a complete
SDIO re-initialization and I think performs "layering violations"
while doing that. I suppose it's because of lack of documentation
about the mmc/sdio core, but I really don't think an SDIO func driver
should be doing that kind of stuff by itself. There are APIs to use to
perform an SDIO reset. Two options exists:

a) Use pm_runtime_get|put in combination with a MMC_CAP_POWER_OFF_CARD
enabled host.
b) Invoke mmc_power_save|restore_host() API.

Kind regards
Ulf Hansson

>
> Thanks,
> Seungwon Jeon
>
>> name mmc_card_highspeed() function from the patches to the mmc core -
>> could you please re-spin and post new version of those patches as
>> well!?
>>
>> Kind regards
>> Ulf Hansson
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/