* [PATCH 2/2] Enable SD UHS mode for hikey-mainline-rebase
2016-07-19 7:51 ` [PATCH 1/2] Support SD UHS for hikey-mainline-rebase Jin Guojun
@ 2016-07-19 7:51 ` Jin Guojun
2016-07-19 8:13 ` [PATCH 1/2] Support SD UHS " Jaehoon Chung
2016-07-31 1:45 ` kbuild test robot
2 siblings, 0 replies; 6+ messages in thread
From: Jin Guojun @ 2016-07-19 7:51 UTC (permalink / raw)
To: ulf.hansson, adrian.hunter, jh80.chung, wsa+renesas, arnd,
rmk+kernel, shawn.lin, linux-mmc, linux-kernel, xuwei5, robh+dt,
pawel.moll, mark.rutland, ijc+devicetree, galak, catalin.marinas,
will.deacon, linux-arm-kernel, devicetree, linuxarm, suzhuangluan,
kongfei, kid.jin
From: j00226943 <j00226943@notesmail.huawei.com>
One more changes:
Enable SDR12 SDR25 SDR50 SDR104 in DTS to support UHS for SD Card
Signed-off-by: Jin Guojun <kid.jin@hisilicon.com>
---
arch/arm64/boot/dts/hisilicon/hi6220.dtsi | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/boot/dts/hisilicon/hi6220.dtsi b/arch/arm64/boot/dts/hisilicon/hi6220.dtsi
index 189d215..33f204f 100644
--- a/arch/arm64/boot/dts/hisilicon/hi6220.dtsi
+++ b/arch/arm64/boot/dts/hisilicon/hi6220.dtsi
@@ -761,6 +761,10 @@
card-detect-delay = <200>;
hisilicon,peripheral-syscon = <&ao_ctrl>;
cap-sd-highspeed;
+ sd-uhs-sdr12;
+ sd-uhs-sdr25;
+ sd-uhs-sdr50;
+ sd-uhs-sdr104;
reg = <0x0 0xf723e000 0x0 0x1000>;
interrupts = <0x0 0x49 0x4>;
#address-cells = <0x1>;
--
1.8.3.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] Support SD UHS for hikey-mainline-rebase
2016-07-19 7:51 ` [PATCH 1/2] Support SD UHS for hikey-mainline-rebase Jin Guojun
2016-07-19 7:51 ` [PATCH 2/2] Enable SD UHS mode " Jin Guojun
@ 2016-07-19 8:13 ` Jaehoon Chung
2016-07-19 12:28 ` Jinguojun
2016-07-31 1:45 ` kbuild test robot
2 siblings, 1 reply; 6+ messages in thread
From: Jaehoon Chung @ 2016-07-19 8:13 UTC (permalink / raw)
To: Jin Guojun, ulf.hansson, Adrian Hunter, arnd, rmk+kernel,
shawn.lin, linux-mmc, linux-kernel, xuwei5, robh+dt,
ijc+devicetree, linux-arm-kernel, devicetree, linuxarm,
suzhuangluan, kongfei, CPGS
Hi,
Removed the unnecessary CC'd.
On 07/19/2016 04:51 PM, Jin Guojun wrote:
> From: j00226943 <j00226943@notesmail.huawei.com>
What is j00226943?
When you send the patch for dw_mmc controller, plz use the prefix "mmc: dw_mmc: ".
>
> Two more changes:
>
> Before we send cmd,we need to set CMD bit29 to
> 1 so that CMD and DATA sent to card through the HOLD Register,
> This is the explication in synosys host:To meet the relatively
> high Input Hold Time requirement for SDR12, SDR25, and other MMC
> speed modes, you should program bit[29]use_hold_Reg of the CMD
> register to 1'b1; the output data is then registered again in the
> cclk_in_drv domain by using the Hold Register as shown in Path B
> of Figure 10-8. However, for the higher speed modes of SDR104, SDR50
> and DDR50, you can meet the much smaller Input Hold Time requirement
> of 0.8ns by bypassing the Hold Register (Path A in Figure 10-8,
> programming CMD.use_hold_reg = 1'b0) and then adding delay elements
> on the output path as indicated
>
> We have no tuning function in our drivers,so we must do the
> Function piling when we init UHS card.
Sorry..this patch is NACK.
SDMMC_CMD_USE_HOLD_REG is already used by default in dw_mmc.c
Which kernel version did you use?
>
> Signed-off-by: Jin Guojun <kid.jin@hisilicon.com>
> ---
> drivers/mmc/host/dw_mmc-k3.c | 6 ++++++
> drivers/mmc/host/dw_mmc.c | 2 ++
> 2 files changed, 8 insertions(+)
>
> diff --git a/drivers/mmc/host/dw_mmc-k3.c b/drivers/mmc/host/dw_mmc-k3.c
> index 63c2e2e..2cbfcc7 100644
> --- a/drivers/mmc/host/dw_mmc-k3.c
> +++ b/drivers/mmc/host/dw_mmc-k3.c
> @@ -125,10 +125,16 @@ static void dw_mci_hi6220_set_ios(struct dw_mci *host, struct mmc_ios *ios)
> host->bus_hz = clk_get_rate(host->biu_clk);
> }
>
> +static void dw_mci_hi6220_prepare_command(struct dw_mci *host, u32 *cmdr)
> +{
> + *cmdr |= SDMMC_CMD_USE_HOLD_REG;
> +}
> +
> static const struct dw_mci_drv_data hi6220_data = {
> .switch_voltage = dw_mci_hi6220_switch_voltage,
> .set_ios = dw_mci_hi6220_set_ios,
> .parse_dt = dw_mci_hi6220_parse_dt,
> + .prepare_command = dw_mci_hi6220_prepare_command,
> };
There is no "prepare_command" hooks.
Best Regards,
Jaehoon Chung
>
> static const struct of_device_id dw_mci_k3_match[] = {
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index 9dd1bd3..047e116 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -1564,6 +1564,8 @@ static int dw_mci_execute_tuning(struct mmc_host *mmc, u32 opcode)
>
> if (drv_data && drv_data->execute_tuning)
> err = drv_data->execute_tuning(slot, opcode);
> + else
> + err = 0;
> return err;
> }
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH 1/2] Support SD UHS for hikey-mainline-rebase
2016-07-19 8:13 ` [PATCH 1/2] Support SD UHS " Jaehoon Chung
@ 2016-07-19 12:28 ` Jinguojun
2016-07-20 1:09 ` Shawn Lin
0 siblings, 1 reply; 6+ messages in thread
From: Jinguojun @ 2016-07-19 12:28 UTC (permalink / raw)
To: Jaehoon Chung, ulf.hansson, Adrian Hunter, arnd, rmk+kernel,
shawn.lin, linux-mmc, linux-kernel, xuwei5, robh+dt,
ijc+devicetree, linux-arm-kernel, devicetree, linuxarm,
suzhuangluan, kongfei, CPGS
On 2016/7/19 16:13, Jaehoon Chung wrote:
> Hi,
>
> Removed the unnecessary CC'd.
>
> On 07/19/2016 04:51 PM, Jin Guojun wrote:
>> From: j00226943 <j00226943@notesmail.huawei.com>
>
> What is j00226943?
>
> When you send the patch for dw_mmc controller, plz use the prefix "mmc: dw_mmc: ".
>
>>
>> Two more changes:
>>
>> Before we send cmd,we need to set CMD bit29 to
>> 1 so that CMD and DATA sent to card through the HOLD Register,
>> This is the explication in synosys host:To meet the relatively
>> high Input Hold Time requirement for SDR12, SDR25, and other MMC
>> speed modes, you should program bit[29]use_hold_Reg of the CMD
>> register to 1'b1; the output data is then registered again in the
>> cclk_in_drv domain by using the Hold Register as shown in Path B
>> of Figure 10-8. However, for the higher speed modes of SDR104, SDR50
>> and DDR50, you can meet the much smaller Input Hold Time requirement
>> of 0.8ns by bypassing the Hold Register (Path A in Figure 10-8,
>> programming CMD.use_hold_reg = 1'b0) and then adding delay elements
>> on the output path as indicated
>>
>> We have no tuning function in our drivers,so we must do the
>> Function piling when we init UHS card.
1.For hikey we cant support UHS for SD card in https://github.com/96boards-hikey/linux/tree/hikey-mainline-rebase
2.I have no SDMMC_CMD_USE_HOLD_REG in Dw_mmc-k3.c
>
> Sorry..this patch is NACK.
> SDMMC_CMD_USE_HOLD_REG is already used by default in dw_mmc.c
> Which kernel version did you use?
>
>>
>> Signed-off-by: Jin Guojun <kid.jin@hisilicon.com>
>> ---
>> drivers/mmc/host/dw_mmc-k3.c | 6 ++++++
>> drivers/mmc/host/dw_mmc.c | 2 ++
>> 2 files changed, 8 insertions(+)
>>
>> diff --git a/drivers/mmc/host/dw_mmc-k3.c b/drivers/mmc/host/dw_mmc-k3.c
>> index 63c2e2e..2cbfcc7 100644
>> --- a/drivers/mmc/host/dw_mmc-k3.c
>> +++ b/drivers/mmc/host/dw_mmc-k3.c
>> @@ -125,10 +125,16 @@ static void dw_mci_hi6220_set_ios(struct dw_mci *host, struct mmc_ios *ios)
>> host->bus_hz = clk_get_rate(host->biu_clk);
>> }
>>
>> +static void dw_mci_hi6220_prepare_command(struct dw_mci *host, u32 *cmdr)
>> +{
>> + *cmdr |= SDMMC_CMD_USE_HOLD_REG;
>> +}
>> +
>> static const struct dw_mci_drv_data hi6220_data = {
>> .switch_voltage = dw_mci_hi6220_switch_voltage,
>> .set_ios = dw_mci_hi6220_set_ios,
>> .parse_dt = dw_mci_hi6220_parse_dt,
>> + .prepare_command = dw_mci_hi6220_prepare_command,
>> };
Hi,thank you for your review
1.We do the prepare_command in dw_mci_prepare_command before we send CMD in dw_mmc.c
2.I can find the same drivers in dw_mmc-exynos.c
3.For hikey we do the initialization from Dw_mmc-k3.c,so I need to do the prepare_command in hi6220 drivers
>
> There is no "prepare_command" hooks.
>
> Best Regards,
> Jaehoon Chung
>
>>
>> static const struct of_device_id dw_mci_k3_match[] = {
>> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
>> index 9dd1bd3..047e116 100644
>> --- a/drivers/mmc/host/dw_mmc.c
>> +++ b/drivers/mmc/host/dw_mmc.c
>> @@ -1564,6 +1564,8 @@ static int dw_mci_execute_tuning(struct mmc_host *mmc, u32 opcode)
>>
>> if (drv_data && drv_data->execute_tuning)
>> err = drv_data->execute_tuning(slot, opcode);
>> + else
>> + err = 0;
>> return err;
>> }
>>
>>
>
>
> .
>
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH 1/2] Support SD UHS for hikey-mainline-rebase
2016-07-19 12:28 ` Jinguojun
@ 2016-07-20 1:09 ` Shawn Lin
0 siblings, 0 replies; 6+ messages in thread
From: Shawn Lin @ 2016-07-20 1:09 UTC (permalink / raw)
To: Jinguojun, Jaehoon Chung, ulf.hansson, Adrian Hunter, arnd,
rmk+kernel, linux-mmc, linux-kernel, xuwei5, robh+dt,
ijc+devicetree, linux-arm-kernel, devicetree, linuxarm,
suzhuangluan, kongfei, CPGS
Cc: shawn.lin
在 2016/7/19 20:28, Jinguojun 写道:
>
>
> On 2016/7/19 16:13, Jaehoon Chung wrote:
>> Hi,
>>
>> Removed the unnecessary CC'd.
>>
>> On 07/19/2016 04:51 PM, Jin Guojun wrote:
>>> From: j00226943 <j00226943@notesmail.huawei.com>
>>
>> What is j00226943?
>>
>> When you send the patch for dw_mmc controller, plz use the prefix "mmc: dw_mmc: ".
>>
>>>
>>> Two more changes:
>>>
>>> Before we send cmd,we need to set CMD bit29 to
>>> 1 so that CMD and DATA sent to card through the HOLD Register,
>>> This is the explication in synosys host:To meet the relatively
>>> high Input Hold Time requirement for SDR12, SDR25, and other MMC
>>> speed modes, you should program bit[29]use_hold_Reg of the CMD
>>> register to 1'b1; the output data is then registered again in the
>>> cclk_in_drv domain by using the Hold Register as shown in Path B
>>> of Figure 10-8. However, for the higher speed modes of SDR104, SDR50
>>> and DDR50, you can meet the much smaller Input Hold Time requirement
>>> of 0.8ns by bypassing the Hold Register (Path A in Figure 10-8,
>>> programming CMD.use_hold_reg = 1'b0) and then adding delay elements
>>> on the output path as indicated
>>>
>>> We have no tuning function in our drivers,so we must do the
>>> Function piling when we init UHS card.
>
> 1.For hikey we cant support UHS for SD card in https://github.com/96boards-hikey/linux/tree/hikey-mainline-rebase
> 2.I have no SDMMC_CMD_USE_HOLD_REG in Dw_mmc-k3.c
>
>>
>> Sorry..this patch is NACK.
>> SDMMC_CMD_USE_HOLD_REG is already used by default in dw_mmc.c
>> Which kernel version did you use?
>>
>>>
>>> Signed-off-by: Jin Guojun <kid.jin@hisilicon.com>
>>> ---
>>> drivers/mmc/host/dw_mmc-k3.c | 6 ++++++
>>> drivers/mmc/host/dw_mmc.c | 2 ++
>>> 2 files changed, 8 insertions(+)
>>>
>>> diff --git a/drivers/mmc/host/dw_mmc-k3.c b/drivers/mmc/host/dw_mmc-k3.c
>>> index 63c2e2e..2cbfcc7 100644
>>> --- a/drivers/mmc/host/dw_mmc-k3.c
>>> +++ b/drivers/mmc/host/dw_mmc-k3.c
>>> @@ -125,10 +125,16 @@ static void dw_mci_hi6220_set_ios(struct dw_mci *host, struct mmc_ios *ios)
>>> host->bus_hz = clk_get_rate(host->biu_clk);
>>> }
>>>
>>> +static void dw_mci_hi6220_prepare_command(struct dw_mci *host, u32 *cmdr)
>>> +{
>>> + *cmdr |= SDMMC_CMD_USE_HOLD_REG;
>>> +}
>>> +
>>> static const struct dw_mci_drv_data hi6220_data = {
>>> .switch_voltage = dw_mci_hi6220_switch_voltage,
>>> .set_ios = dw_mci_hi6220_set_ios,
>>> .parse_dt = dw_mci_hi6220_parse_dt,
>>> + .prepare_command = dw_mci_hi6220_prepare_command,
>>> };
> Hi,thank you for your review
>
> 1.We do the prepare_command in dw_mci_prepare_command before we send CMD in dw_mmc.c
please clone Ulf's tree[0] and rebase your any patches on its next
branch, thanks.
[0] git://git.linaro.org/people/ulf.hansson/mmc
> 2.I can find the same drivers in dw_mmc-exynos.c
> 3.For hikey we do the initialization from Dw_mmc-k3.c,so I need to do the prepare_command in hi6220 drivers
>
>>
>> There is no "prepare_command" hooks.
>>
>> Best Regards,
>> Jaehoon Chung
>>
>>>
>>> static const struct of_device_id dw_mci_k3_match[] = {
>>> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
>>> index 9dd1bd3..047e116 100644
>>> --- a/drivers/mmc/host/dw_mmc.c
>>> +++ b/drivers/mmc/host/dw_mmc.c
>>> @@ -1564,6 +1564,8 @@ static int dw_mci_execute_tuning(struct mmc_host *mmc, u32 opcode)
>>>
>>> if (drv_data && drv_data->execute_tuning)
>>> err = drv_data->execute_tuning(slot, opcode);
>>> + else
>>> + err = 0;
>>> return err;
>>> }
>>>
>>>
>>
>>
>> .
>>
>
>
>
>
--
Best Regards
Shawn Lin
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] Support SD UHS for hikey-mainline-rebase
2016-07-19 7:51 ` [PATCH 1/2] Support SD UHS for hikey-mainline-rebase Jin Guojun
2016-07-19 7:51 ` [PATCH 2/2] Enable SD UHS mode " Jin Guojun
2016-07-19 8:13 ` [PATCH 1/2] Support SD UHS " Jaehoon Chung
@ 2016-07-31 1:45 ` kbuild test robot
2 siblings, 0 replies; 6+ messages in thread
From: kbuild test robot @ 2016-07-31 1:45 UTC (permalink / raw)
To: Jin Guojun
Cc: kbuild-all, ulf.hansson, adrian.hunter, jh80.chung, wsa+renesas,
arnd, rmk+kernel, shawn.lin, linux-mmc, linux-kernel, xuwei5,
robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak,
catalin.marinas, will.deacon, linux-arm-kernel, devicetree,
linuxarm, suzhuangluan, kongfei, kid.jin
[-- Attachment #1: Type: text/plain, Size: 1812 bytes --]
Hi,
[auto build test ERROR on robh/for-next]
[also build test ERROR on v4.7 next-20160729]
[cannot apply to ulf.hansson-mmc/next]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Jin-Guojun/Support-SD-UHS-for-hikey-mainline-rebase/20160725-102555
base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
config: i386-allmodconfig (attached as .config)
compiler: gcc-6 (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
# save the attached .config to linux build tree
make ARCH=i386
All errors (new ones prefixed by >>):
>> drivers/mmc/host/dw_mmc-k3.c:137:2: error: unknown field 'prepare_command' specified in initializer
.prepare_command = dw_mci_hi6220_prepare_command,
^
>> drivers/mmc/host/dw_mmc-k3.c:137:28: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
.prepare_command = dw_mci_hi6220_prepare_command,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/mmc/host/dw_mmc-k3.c:137:28: note: (near initialization for 'hi6220_data.execute_tuning')
cc1: some warnings being treated as errors
vim +/prepare_command +137 drivers/mmc/host/dw_mmc-k3.c
131 }
132
133 static const struct dw_mci_drv_data hi6220_data = {
134 .switch_voltage = dw_mci_hi6220_switch_voltage,
135 .set_ios = dw_mci_hi6220_set_ios,
136 .parse_dt = dw_mci_hi6220_parse_dt,
> 137 .prepare_command = dw_mci_hi6220_prepare_command,
138 };
139
140 static const struct of_device_id dw_mci_k3_match[] = {
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 55034 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread