From: Jaehoon Chung <jh80.chung@samsung.com>
To: Addy Ke <addy.ke@rock-chips.com>,
robh+dt@kernel.org, pawel.moll@arm.com, mark.rutland@arm.com,
ijc+devicetree@hellion.org.uk, galak@codeaurora.org,
rdunlap@infradead.org, tgih.jun@samsung.com,
jh80.chung@samsung.com, chris@printf.net, ulf.hansson@linaro.org,
dinguyen@altera.com, heiko@sntech.de, olof@lixom.net,
dianders@chromium.org, sonnyrao@chromium.org
Cc: huangtao@rock-chips.com, devicetree@vger.kernel.org,
hl@rock-chips.com, linux-doc@vger.kernel.org, yzq@rock-chips.com,
zyw@rock-chips.com, zhangqing@rock-chips.com,
linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org,
kever.yang@rock-chips.com, lintao@rock-chips.com,
linux-rockchip@lists.infradead.org, xjq@rock-chips.com,
zhenfu.fang@rock-chips.com, chenfen@rock-chips.com,
cf@rock-chips.com, hj@rock-chips.com,
linux-arm-kernel@lists.infradead.org, zyf@rock-chips.com
Subject: Re: [PATCH v3] mmc: dw_mmc: add support for the other bit of sdio interrupt
Date: Mon, 03 Nov 2014 17:59:58 +0900 [thread overview]
Message-ID: <5457440E.3070002@samsung.com> (raw)
In-Reply-To: <1414977633-3196-1-git-send-email-addy.ke@rock-chips.com>
Hi, Addy.
On 11/03/2014 10:20 AM, Addy Ke wrote:
> The bit of sdio interrupt is 16 in designware implementation,
> but it is 24 on Rockchip SoCs.This patch add sdio_id0 for the
> number of slot0 in the SDIO interrupt registers.
>
> Signed-off-by: Addy Ke <addy.ke@rock-chips.com>
> ---
> Changes in v2:
> - rebase on http://git.linaro.org/git/people/ulf.hansson/mmc.git, next branch
> Changes in v3:
> - Remove dts for sdio_id0, just replace this with 8, suggested by Doug
> - Change to support all Rockchip Socs, suggested by Heiko
>
> drivers/mmc/host/dw_mmc-rockchip.c | 10 ++++++++++
> drivers/mmc/host/dw_mmc.c | 12 +++++++-----
> drivers/mmc/host/dw_mmc.h | 2 ++
> include/linux/mmc/dw_mmc.h | 3 +++
> 4 files changed, 22 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/mmc/host/dw_mmc-rockchip.c b/drivers/mmc/host/dw_mmc-rockchip.c
> index bbb4ec3..b997c8f 100644
> --- a/drivers/mmc/host/dw_mmc-rockchip.c
> +++ b/drivers/mmc/host/dw_mmc-rockchip.c
> @@ -68,14 +68,24 @@ static void dw_mci_rk3288_set_ios(struct dw_mci *host, struct mmc_ios *ios)
> }
> }
>
> +static int dw_mci_rockchip_parse_dt(struct dw_mci *host)
> +{
> + /* It is slot 8 on Rockchip SoCs */
> + host->sdio_id0 = 8;
> +
> + return 0;
> +}
Well, function is "__parse_dt__", but this function don't parse anything.
If All rockchip soc is supported, i think that it can be located to other place.
Best Regards,
Jaehoon Chung
> +
> static const struct dw_mci_drv_data rk2928_drv_data = {
> .prepare_command = dw_mci_rockchip_prepare_command,
> + .parse_dt = dw_mci_rockchip_parse_dt,
> };
>
> static const struct dw_mci_drv_data rk3288_drv_data = {
> .prepare_command = dw_mci_rockchip_prepare_command,
> .set_ios = dw_mci_rk3288_set_ios,
> .setup_clock = dw_mci_rk3288_setup_clock,
> + .parse_dt = dw_mci_rockchip_parse_dt,
> };
>
> static const struct of_device_id dw_mci_rockchip_match[] = {
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index bb46b1b..a633b58 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -823,7 +823,7 @@ static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool force_clkinit)
>
> /* enable clock; only low power if no SDIO */
> clk_en_a = SDMMC_CLKEN_ENABLE << slot->id;
> - if (!(mci_readl(host, INTMASK) & SDMMC_INT_SDIO(slot->id)))
> + if (!(mci_readl(host, INTMASK) & SDMMC_INT_SDIO(slot->sdio_id)))
> clk_en_a |= SDMMC_CLKEN_LOW_PWR << slot->id;
> mci_writel(host, CLKENA, clk_en_a);
>
> @@ -1184,10 +1184,10 @@ static void dw_mci_enable_sdio_irq(struct mmc_host *mmc, int enb)
> dw_mci_disable_low_power(slot);
>
> mci_writel(host, INTMASK,
> - (int_mask | SDMMC_INT_SDIO(slot->id)));
> + (int_mask | SDMMC_INT_SDIO(slot->sdio_id)));
> } else {
> mci_writel(host, INTMASK,
> - (int_mask & ~SDMMC_INT_SDIO(slot->id)));
> + (int_mask & ~SDMMC_INT_SDIO(slot->sdio_id)));
> }
> }
>
> @@ -2056,8 +2056,9 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
> /* Handle SDIO Interrupts */
> for (i = 0; i < host->num_slots; i++) {
> struct dw_mci_slot *slot = host->slot[i];
> - if (pending & SDMMC_INT_SDIO(i)) {
> - mci_writel(host, RINTSTS, SDMMC_INT_SDIO(i));
> + if (pending & SDMMC_INT_SDIO(slot->sdio_id)) {
> + mci_writel(host, RINTSTS,
> + SDMMC_INT_SDIO(slot->sdio_id));
> mmc_signal_sdio_irq(slot->mmc);
> }
> }
> @@ -2145,6 +2146,7 @@ static int dw_mci_init_slot(struct dw_mci *host, unsigned int id)
>
> slot = mmc_priv(mmc);
> slot->id = id;
> + slot->sdio_id = host->sdio_id0 + id;
> slot->mmc = mmc;
> slot->host = host;
> host->slot[id] = slot;
> diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h
> index 71d4995..0562f10 100644
> --- a/drivers/mmc/host/dw_mmc.h
> +++ b/drivers/mmc/host/dw_mmc.h
> @@ -214,6 +214,7 @@ extern int dw_mci_resume(struct dw_mci *host);
> * with CONFIG_MMC_CLKGATE.
> * @flags: Random state bits associated with the slot.
> * @id: Number of this slot.
> + * @sdio_id: Number of this slot in the SDIO interrupt registers.
> */
> struct dw_mci_slot {
> struct mmc_host *mmc;
> @@ -233,6 +234,7 @@ struct dw_mci_slot {
> #define DW_MMC_CARD_PRESENT 0
> #define DW_MMC_CARD_NEED_INIT 1
> int id;
> + int sdio_id;
> };
>
> struct dw_mci_tuning_data {
> diff --git a/include/linux/mmc/dw_mmc.h b/include/linux/mmc/dw_mmc.h
> index 69d0814..72c319f 100644
> --- a/include/linux/mmc/dw_mmc.h
> +++ b/include/linux/mmc/dw_mmc.h
> @@ -96,6 +96,7 @@ struct mmc_data;
> * @quirks: Set of quirks that apply to specific versions of the IP.
> * @irq_flags: The flags to be passed to request_irq.
> * @irq: The irq value to be passed to request_irq.
> + * @sdio_id0: Number of slot0 in the SDIO interrupt registers.
> *
> * Locking
> * =======
> @@ -191,6 +192,8 @@ struct dw_mci {
> bool vqmmc_enabled;
> unsigned long irq_flags; /* IRQ flags */
> int irq;
> +
> + int sdio_id0;
> };
>
> /* DMA ops for Internal/External DMAC interface */
>
WARNING: multiple messages have this Message-ID (diff)
From: jh80.chung@samsung.com (Jaehoon Chung)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3] mmc: dw_mmc: add support for the other bit of sdio interrupt
Date: Mon, 03 Nov 2014 17:59:58 +0900 [thread overview]
Message-ID: <5457440E.3070002@samsung.com> (raw)
In-Reply-To: <1414977633-3196-1-git-send-email-addy.ke@rock-chips.com>
Hi, Addy.
On 11/03/2014 10:20 AM, Addy Ke wrote:
> The bit of sdio interrupt is 16 in designware implementation,
> but it is 24 on Rockchip SoCs.This patch add sdio_id0 for the
> number of slot0 in the SDIO interrupt registers.
>
> Signed-off-by: Addy Ke <addy.ke@rock-chips.com>
> ---
> Changes in v2:
> - rebase on http://git.linaro.org/git/people/ulf.hansson/mmc.git, next branch
> Changes in v3:
> - Remove dts for sdio_id0, just replace this with 8, suggested by Doug
> - Change to support all Rockchip Socs, suggested by Heiko
>
> drivers/mmc/host/dw_mmc-rockchip.c | 10 ++++++++++
> drivers/mmc/host/dw_mmc.c | 12 +++++++-----
> drivers/mmc/host/dw_mmc.h | 2 ++
> include/linux/mmc/dw_mmc.h | 3 +++
> 4 files changed, 22 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/mmc/host/dw_mmc-rockchip.c b/drivers/mmc/host/dw_mmc-rockchip.c
> index bbb4ec3..b997c8f 100644
> --- a/drivers/mmc/host/dw_mmc-rockchip.c
> +++ b/drivers/mmc/host/dw_mmc-rockchip.c
> @@ -68,14 +68,24 @@ static void dw_mci_rk3288_set_ios(struct dw_mci *host, struct mmc_ios *ios)
> }
> }
>
> +static int dw_mci_rockchip_parse_dt(struct dw_mci *host)
> +{
> + /* It is slot 8 on Rockchip SoCs */
> + host->sdio_id0 = 8;
> +
> + return 0;
> +}
Well, function is "__parse_dt__", but this function don't parse anything.
If All rockchip soc is supported, i think that it can be located to other place.
Best Regards,
Jaehoon Chung
> +
> static const struct dw_mci_drv_data rk2928_drv_data = {
> .prepare_command = dw_mci_rockchip_prepare_command,
> + .parse_dt = dw_mci_rockchip_parse_dt,
> };
>
> static const struct dw_mci_drv_data rk3288_drv_data = {
> .prepare_command = dw_mci_rockchip_prepare_command,
> .set_ios = dw_mci_rk3288_set_ios,
> .setup_clock = dw_mci_rk3288_setup_clock,
> + .parse_dt = dw_mci_rockchip_parse_dt,
> };
>
> static const struct of_device_id dw_mci_rockchip_match[] = {
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index bb46b1b..a633b58 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -823,7 +823,7 @@ static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool force_clkinit)
>
> /* enable clock; only low power if no SDIO */
> clk_en_a = SDMMC_CLKEN_ENABLE << slot->id;
> - if (!(mci_readl(host, INTMASK) & SDMMC_INT_SDIO(slot->id)))
> + if (!(mci_readl(host, INTMASK) & SDMMC_INT_SDIO(slot->sdio_id)))
> clk_en_a |= SDMMC_CLKEN_LOW_PWR << slot->id;
> mci_writel(host, CLKENA, clk_en_a);
>
> @@ -1184,10 +1184,10 @@ static void dw_mci_enable_sdio_irq(struct mmc_host *mmc, int enb)
> dw_mci_disable_low_power(slot);
>
> mci_writel(host, INTMASK,
> - (int_mask | SDMMC_INT_SDIO(slot->id)));
> + (int_mask | SDMMC_INT_SDIO(slot->sdio_id)));
> } else {
> mci_writel(host, INTMASK,
> - (int_mask & ~SDMMC_INT_SDIO(slot->id)));
> + (int_mask & ~SDMMC_INT_SDIO(slot->sdio_id)));
> }
> }
>
> @@ -2056,8 +2056,9 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
> /* Handle SDIO Interrupts */
> for (i = 0; i < host->num_slots; i++) {
> struct dw_mci_slot *slot = host->slot[i];
> - if (pending & SDMMC_INT_SDIO(i)) {
> - mci_writel(host, RINTSTS, SDMMC_INT_SDIO(i));
> + if (pending & SDMMC_INT_SDIO(slot->sdio_id)) {
> + mci_writel(host, RINTSTS,
> + SDMMC_INT_SDIO(slot->sdio_id));
> mmc_signal_sdio_irq(slot->mmc);
> }
> }
> @@ -2145,6 +2146,7 @@ static int dw_mci_init_slot(struct dw_mci *host, unsigned int id)
>
> slot = mmc_priv(mmc);
> slot->id = id;
> + slot->sdio_id = host->sdio_id0 + id;
> slot->mmc = mmc;
> slot->host = host;
> host->slot[id] = slot;
> diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h
> index 71d4995..0562f10 100644
> --- a/drivers/mmc/host/dw_mmc.h
> +++ b/drivers/mmc/host/dw_mmc.h
> @@ -214,6 +214,7 @@ extern int dw_mci_resume(struct dw_mci *host);
> * with CONFIG_MMC_CLKGATE.
> * @flags: Random state bits associated with the slot.
> * @id: Number of this slot.
> + * @sdio_id: Number of this slot in the SDIO interrupt registers.
> */
> struct dw_mci_slot {
> struct mmc_host *mmc;
> @@ -233,6 +234,7 @@ struct dw_mci_slot {
> #define DW_MMC_CARD_PRESENT 0
> #define DW_MMC_CARD_NEED_INIT 1
> int id;
> + int sdio_id;
> };
>
> struct dw_mci_tuning_data {
> diff --git a/include/linux/mmc/dw_mmc.h b/include/linux/mmc/dw_mmc.h
> index 69d0814..72c319f 100644
> --- a/include/linux/mmc/dw_mmc.h
> +++ b/include/linux/mmc/dw_mmc.h
> @@ -96,6 +96,7 @@ struct mmc_data;
> * @quirks: Set of quirks that apply to specific versions of the IP.
> * @irq_flags: The flags to be passed to request_irq.
> * @irq: The irq value to be passed to request_irq.
> + * @sdio_id0: Number of slot0 in the SDIO interrupt registers.
> *
> * Locking
> * =======
> @@ -191,6 +192,8 @@ struct dw_mci {
> bool vqmmc_enabled;
> unsigned long irq_flags; /* IRQ flags */
> int irq;
> +
> + int sdio_id0;
> };
>
> /* DMA ops for Internal/External DMAC interface */
>
next prev parent reply other threads:[~2014-11-03 8:59 UTC|newest]
Thread overview: 104+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-30 2:21 [PATCH] mmc: dw_mmc: add a quirk for the defferent bit of sdio interrupt Addy Ke
2014-10-30 2:21 ` Addy Ke
2014-10-30 4:35 ` Jaehoon Chung
2014-10-30 4:35 ` Jaehoon Chung
2014-10-30 4:41 ` Doug Anderson
2014-10-30 4:41 ` Doug Anderson
2014-10-30 4:41 ` Doug Anderson
2014-10-30 4:49 ` Doug Anderson
2014-10-30 4:49 ` Doug Anderson
2014-10-30 4:49 ` Doug Anderson
2014-10-30 6:54 ` addy ke
2014-10-30 6:54 ` addy ke
2014-10-30 10:50 ` [PATCH] mmc: dw_mmc: add support for the other " Addy Ke
2014-10-30 10:50 ` Addy Ke
2014-10-30 11:02 ` Jaehoon Chung
2014-10-30 11:02 ` Jaehoon Chung
2014-10-31 0:46 ` addy ke
2014-10-31 0:46 ` addy ke
2014-10-31 1:14 ` Jaehoon Chung
2014-10-31 1:14 ` Jaehoon Chung
2014-10-30 11:11 ` Ulf Hansson
2014-10-30 11:11 ` Ulf Hansson
2014-10-30 11:11 ` Ulf Hansson
2014-10-30 11:17 ` Jaehoon Chung
2014-10-30 11:17 ` Jaehoon Chung
2014-10-30 11:17 ` Jaehoon Chung
2014-10-31 0:54 ` addy ke
2014-10-31 0:54 ` addy ke
2014-10-31 3:50 ` [PATCH v2] " Addy Ke
2014-10-31 3:50 ` Addy Ke
2014-10-31 5:14 ` Doug Anderson
2014-10-31 5:14 ` Doug Anderson
2014-10-31 5:14 ` Doug Anderson
[not found] ` <1414727409-6765-1-git-send-email-addy.ke-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2014-10-31 8:45 ` Jaehoon Chung
2014-10-31 8:45 ` Jaehoon Chung
2014-10-31 8:45 ` Jaehoon Chung
2014-10-31 15:55 ` Doug Anderson
2014-10-31 15:55 ` Doug Anderson
2014-10-31 15:55 ` Doug Anderson
2014-10-31 10:43 ` Heiko Stübner
2014-10-31 10:43 ` Heiko Stübner
2014-11-03 0:54 ` addy ke
2014-11-03 0:54 ` addy ke
2014-11-03 1:20 ` [PATCH v3] " Addy Ke
2014-11-03 1:20 ` Addy Ke
2014-11-03 8:59 ` Jaehoon Chung [this message]
2014-11-03 8:59 ` Jaehoon Chung
2014-11-03 10:23 ` addy ke
2014-11-03 10:23 ` addy ke
2014-11-04 2:14 ` Jaehoon Chung
2014-11-04 2:14 ` Jaehoon Chung
2014-11-03 10:23 ` Heiko Stübner
2014-11-03 10:23 ` Heiko Stübner
2014-11-04 2:15 ` Jaehoon Chung
2014-11-04 2:15 ` Jaehoon Chung
2014-11-04 14:03 ` [PATCH v4] " Addy Ke
2014-11-04 14:03 ` Addy Ke
[not found] ` <1415109789-7046-1-git-send-email-addy.ke-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2014-11-11 4:02 ` [PATCH] mmc: dw_mmc: try pick the exact same voltage as vmmc for vqmmc Addy Ke
2014-11-11 4:02 ` Addy Ke
2014-11-11 4:02 ` Addy Ke
2014-11-11 8:52 ` Ulf Hansson
2014-11-11 8:52 ` Ulf Hansson
2014-11-11 8:52 ` Ulf Hansson
2014-11-12 18:04 ` Doug Anderson
2014-11-12 18:04 ` Doug Anderson
2014-11-12 18:04 ` Doug Anderson
2014-11-13 2:19 ` addy ke
2014-11-13 2:19 ` addy ke
2014-11-21 12:06 ` Ulf Hansson
2014-11-21 12:06 ` Ulf Hansson
2014-11-21 12:06 ` Ulf Hansson
2014-11-21 12:29 ` Jaehoon Chung
2014-11-21 12:29 ` Jaehoon Chung
2014-11-21 12:29 ` Jaehoon Chung
2014-11-21 17:42 ` Doug Anderson
2014-11-21 17:42 ` Doug Anderson
2014-11-21 17:42 ` Doug Anderson
2014-11-21 21:04 ` Doug Anderson
2014-11-21 21:04 ` Doug Anderson
2014-11-21 21:04 ` Doug Anderson
2014-11-24 13:29 ` Ulf Hansson
2014-11-24 13:29 ` Ulf Hansson
2014-11-24 13:29 ` Ulf Hansson
2014-11-25 2:38 ` Addy
2014-11-25 2:38 ` Addy
2014-11-25 2:38 ` Addy
2014-11-25 5:36 ` Doug Anderson
2014-11-25 5:36 ` Doug Anderson
2014-11-25 5:36 ` Doug Anderson
2014-11-25 21:11 ` Alexandru Stan
2014-11-25 21:11 ` Alexandru Stan
2014-11-25 21:11 ` Alexandru Stan
2014-11-25 5:29 ` Doug Anderson
2014-11-25 5:29 ` Doug Anderson
2014-11-25 5:29 ` Doug Anderson
2014-11-13 18:58 ` [PATCH v4] mmc: dw_mmc: add support for the other bit of sdio interrupt Doug Anderson
2014-11-13 18:58 ` Doug Anderson
2014-11-13 18:58 ` Doug Anderson
2014-11-14 13:25 ` Jaehoon Chung
2014-11-14 13:25 ` Jaehoon Chung
2014-11-14 13:25 ` Jaehoon Chung
2014-11-19 10:32 ` Ulf Hansson
2014-11-19 10:32 ` Ulf Hansson
2014-11-19 10:32 ` Ulf Hansson
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=5457440E.3070002@samsung.com \
--to=jh80.chung@samsung.com \
--cc=addy.ke@rock-chips.com \
--cc=cf@rock-chips.com \
--cc=chenfen@rock-chips.com \
--cc=chris@printf.net \
--cc=devicetree@vger.kernel.org \
--cc=dianders@chromium.org \
--cc=dinguyen@altera.com \
--cc=galak@codeaurora.org \
--cc=heiko@sntech.de \
--cc=hj@rock-chips.com \
--cc=hl@rock-chips.com \
--cc=huangtao@rock-chips.com \
--cc=ijc+devicetree@hellion.org.uk \
--cc=kever.yang@rock-chips.com \
--cc=lintao@rock-chips.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=mark.rutland@arm.com \
--cc=olof@lixom.net \
--cc=pawel.moll@arm.com \
--cc=rdunlap@infradead.org \
--cc=robh+dt@kernel.org \
--cc=sonnyrao@chromium.org \
--cc=tgih.jun@samsung.com \
--cc=ulf.hansson@linaro.org \
--cc=xjq@rock-chips.com \
--cc=yzq@rock-chips.com \
--cc=zhangqing@rock-chips.com \
--cc=zhenfu.fang@rock-chips.com \
--cc=zyf@rock-chips.com \
--cc=zyw@rock-chips.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.