From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jaehoon Chung Subject: Re: [RFC PATCH] mmc: dw_mmc: remove redundant num_slots check Date: Fri, 22 Jan 2016 11:46:41 +0900 Message-ID: <56A19811.9000101@samsung.com> References: <1453362769-16223-1-git-send-email-shawn.lin@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Return-path: Received: from mailout1.samsung.com ([203.254.224.24]:38050 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751224AbcAVCqq (ORCPT ); Thu, 21 Jan 2016 21:46:46 -0500 In-reply-to: <1453362769-16223-1-git-send-email-shawn.lin@rock-chips.com> Sender: linux-mmc-owner@vger.kernel.org List-Id: linux-mmc@vger.kernel.org To: Shawn Lin , Ulf Hansson Cc: linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org Hi, Shawn. On 01/21/2016 04:52 PM, Shawn Lin wrote: > num_slots comes from pdata if existing, otherwise from > dw_mci_parse_dt which make it at least one slot. If > num_slots is less than 1 for the existing pdata case, > current code return -ENODEV. But dw_mci_probe seems to > treat this a optional case as it will call SDMMC_GET_SLOT_NUM > if no slot assigned. Well, we need to consider more thing.. Host can get the number of slot from SDMMC_GET_SLOT_NUM(). But i think this way also has the problem. num_slot isn't defined anywhere, and num_slot should be set to value of SDMMC_GET_SLOT_NUM. If that value is higher than 1, it should be blocking..(I didn't test all cases..) Even though this patch is not correct, i could check the problem relevant to num_slot, because of this patch. :) my suggestion is if pdata->num_slot is not defined anywhere, just set to 1 by default. not take from SDMMC_GET_SLOT_NUM. if (host->pdata->nums_slots < 1 || host->pdata->nums_slots > SDMMC_GET_SLOT_NUM()) This is correct condition. num_slots can't be higher than number of supported slots. how about? Best Regards, Jaehoon Chung > > Signed-off-by: Shawn Lin > > --- > > drivers/mmc/host/dw_mmc.c | 6 ------ > 1 file changed, 6 deletions(-) > > diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c > index 7128351..a116ec6 100644 > --- a/drivers/mmc/host/dw_mmc.c > +++ b/drivers/mmc/host/dw_mmc.c > @@ -2949,12 +2949,6 @@ int dw_mci_probe(struct dw_mci *host) > } > } > > - if (host->pdata->num_slots < 1) { > - dev_err(host->dev, > - "Platform data must supply num_slots.\n"); > - return -ENODEV; > - } > - > host->biu_clk = devm_clk_get(host->dev, "biu"); > if (IS_ERR(host->biu_clk)) { > dev_dbg(host->dev, "biu clock not available\n"); >