Re: [PATCH 00/41] omap_hsmmc: Add ADMA support and UHS/HS200/DDR support
Hi, On Saturday 20 May 2017 03:43 AM, Tony Lindgren wrote: > Hi, > > * Kishon Vijay Abraham I[170519 01:19]: >> This series adds UHS, HS200, DDR mode and ADMA support to >> omap_hsmmc driver used to improve the throughput of MMC/SD in dra7 >> SoCs. > > Certainly seems way less intrusive than earlier before the > dmaengine changes :) > >> *) tuning ratio of MMC in dra7 is different from sdhci > > Hmm what's the tuning ratio? For high speed modes like UHS SDR104 and HS200, sampling clock has to adjusted according to the position of the data window and it varies depending on the host and the card. For this we configure the controller with phase delay from 0 to 0x7c (in steps of 4) and send the tuning command (CMD19 or CMD21) for which the card responds with a known pattern. We keep track of the phase delay's for which we received the known patterns (without errors) and select one of the phase delays (3/4th ratio from largest consecutive successful phase delay window). sdhci driver makes use of the HW feature for tuning (no manual setting of phase delays etc). Sdhci has an ops for platform specific tuning but that again has to be implemented in omap_hsmmc driver. > >> This series has been tested on beagleboard, pandaboard, beaglebone-black, >> beaglebone, am335x-evm, am437x-evm, dra7xx-evm, dra72x-evm, am571x-idk >> and am572x-idk. > > I gave this a quick try after manally applying next-20170519 > after reverting 67d0687224a9 ("mm: drop HASH_ADAPT"). Looks like > something is missing as I got: > > arch/arm/mach-omap2/pdata-quirks.c:445:23: error: > 'struct omap_hsmmc_platform_data' has no member named 'version' > ... > > It's possible I messed up something while manually applying. [PATCH 13/41] mmc: host: omap_hsmmc: Add support to set IODELAY values adds version member to 'struct omap_hsmmc_platform_data'. > >> I can split the series to go into Ulf Hansson's tree and Tony's tree >> separately if that is required. > > Yes please. Maybe send the dts parts first that are ready to > get merged, like the fixes and all the iodelay configuration. > > Then the mmc driver changes as a separate set. > > Then third set to follow-up and enable things once the mmc > driver changes are merged. Sure. Thanks Kishon
Re: [PATCH 00/41] omap_hsmmc: Add ADMA support and UHS/HS200/DDR support
Hi, On Saturday 20 May 2017 03:43 AM, Tony Lindgren wrote: > Hi, > > * Kishon Vijay Abraham I [170519 01:19]: >> This series adds UHS, HS200, DDR mode and ADMA support to >> omap_hsmmc driver used to improve the throughput of MMC/SD in dra7 >> SoCs. > > Certainly seems way less intrusive than earlier before the > dmaengine changes :) > >> *) tuning ratio of MMC in dra7 is different from sdhci > > Hmm what's the tuning ratio? For high speed modes like UHS SDR104 and HS200, sampling clock has to adjusted according to the position of the data window and it varies depending on the host and the card. For this we configure the controller with phase delay from 0 to 0x7c (in steps of 4) and send the tuning command (CMD19 or CMD21) for which the card responds with a known pattern. We keep track of the phase delay's for which we received the known patterns (without errors) and select one of the phase delays (3/4th ratio from largest consecutive successful phase delay window). sdhci driver makes use of the HW feature for tuning (no manual setting of phase delays etc). Sdhci has an ops for platform specific tuning but that again has to be implemented in omap_hsmmc driver. > >> This series has been tested on beagleboard, pandaboard, beaglebone-black, >> beaglebone, am335x-evm, am437x-evm, dra7xx-evm, dra72x-evm, am571x-idk >> and am572x-idk. > > I gave this a quick try after manally applying next-20170519 > after reverting 67d0687224a9 ("mm: drop HASH_ADAPT"). Looks like > something is missing as I got: > > arch/arm/mach-omap2/pdata-quirks.c:445:23: error: > 'struct omap_hsmmc_platform_data' has no member named 'version' > ... > > It's possible I messed up something while manually applying. [PATCH 13/41] mmc: host: omap_hsmmc: Add support to set IODELAY values adds version member to 'struct omap_hsmmc_platform_data'. > >> I can split the series to go into Ulf Hansson's tree and Tony's tree >> separately if that is required. > > Yes please. Maybe send the dts parts first that are ready to > get merged, like the fixes and all the iodelay configuration. > > Then the mmc driver changes as a separate set. > > Then third set to follow-up and enable things once the mmc > driver changes are merged. Sure. Thanks Kishon
Re: [PATCH 00/41] omap_hsmmc: Add ADMA support and UHS/HS200/DDR support
Hi, * Kishon Vijay Abraham I[170519 01:19]: > This series adds UHS, HS200, DDR mode and ADMA support to > omap_hsmmc driver used to improve the throughput of MMC/SD in dra7 > SoCs. Certainly seems way less intrusive than earlier before the dmaengine changes :) > *) tuning ratio of MMC in dra7 is different from sdhci Hmm what's the tuning ratio? > This series has been tested on beagleboard, pandaboard, beaglebone-black, > beaglebone, am335x-evm, am437x-evm, dra7xx-evm, dra72x-evm, am571x-idk > and am572x-idk. I gave this a quick try after manally applying next-20170519 after reverting 67d0687224a9 ("mm: drop HASH_ADAPT"). Looks like something is missing as I got: arch/arm/mach-omap2/pdata-quirks.c:445:23: error: 'struct omap_hsmmc_platform_data' has no member named 'version' ... It's possible I messed up something while manually applying. > I can split the series to go into Ulf Hansson's tree and Tony's tree > separately if that is required. Yes please. Maybe send the dts parts first that are ready to get merged, like the fixes and all the iodelay configuration. Then the mmc driver changes as a separate set. Then third set to follow-up and enable things once the mmc driver changes are merged. Regards, Tony
Re: [PATCH 00/41] omap_hsmmc: Add ADMA support and UHS/HS200/DDR support
Hi, * Kishon Vijay Abraham I [170519 01:19]: > This series adds UHS, HS200, DDR mode and ADMA support to > omap_hsmmc driver used to improve the throughput of MMC/SD in dra7 > SoCs. Certainly seems way less intrusive than earlier before the dmaengine changes :) > *) tuning ratio of MMC in dra7 is different from sdhci Hmm what's the tuning ratio? > This series has been tested on beagleboard, pandaboard, beaglebone-black, > beaglebone, am335x-evm, am437x-evm, dra7xx-evm, dra72x-evm, am571x-idk > and am572x-idk. I gave this a quick try after manally applying next-20170519 after reverting 67d0687224a9 ("mm: drop HASH_ADAPT"). Looks like something is missing as I got: arch/arm/mach-omap2/pdata-quirks.c:445:23: error: 'struct omap_hsmmc_platform_data' has no member named 'version' ... It's possible I messed up something while manually applying. > I can split the series to go into Ulf Hansson's tree and Tony's tree > separately if that is required. Yes please. Maybe send the dts parts first that are ready to get merged, like the fixes and all the iodelay configuration. Then the mmc driver changes as a separate set. Then third set to follow-up and enable things once the mmc driver changes are merged. Regards, Tony
[PATCH 00/41] omap_hsmmc: Add ADMA support and UHS/HS200/DDR support
This series adds UHS, HS200, DDR mode and ADMA support to omap_hsmmc driver used to improve the throughput of MMC/SD in dra7 SoCs. The functionality implemented in this series was sent before ([1]) but was never followed up since supporting high speed modes in dra7 required IODelay values to be configured. With IODelay driver being merged into kernel, sending it as a fresh series with support for configuring IODelay values. Suggestions of migrating to sdhci driver (from omap_hsmmc driver) is not addressed since *) tuning ratio of MMC in dra7 is different from sdhci *) IOdelay is required for dra7 *) GPIO based card detect is not supported in sdhci *) Some of the registers don't always have correct values as in sdhci (like PSTATE). Supporting all of these in sdhci will result in adding lot of quirks in sdhci driver. This series has been tested on beagleboard, pandaboard, beaglebone-black, beaglebone, am335x-evm, am437x-evm, dra7xx-evm, dra72x-evm, am571x-idk and am572x-idk. I can split the series to go into Ulf Hansson's tree and Tony's tree separately if that is required. [1] -> https://lkml.org/lkml/2015/8/25/213 Balaji T K (1): mmc: host: omap_hsmmc: Add voltage switch support for UHS SD card Kishon Vijay Abraham I (30): mmc: host: omap_hsmmc: Support pbias and vmmc_aux to switch to 1.8v mmc: host: omap_hsmmc: Separate setting voltage capabilities from bus power mmc: host: omap_hsmmc: Program HCTL based on signal_voltage set by mmc core mmc: host: omap_hsmmc: Set clk rate to the max frequency mmc: host: omap_hsmmc: Add tuning support mmc: host: omap_hsmmc: Allow io voltage switch even for fixed vdd mmc: host: omap_hsmmc: Remove incorrect voltage switch sequence mmc: host: omap_hsmmc: Prepare *set_timing() to be used for iodelay setting mmc: host: omap_hsmmc: Add new compatible string to support dra7 mmc: host: omap_hsmmc: Fix error path sequence mmc: host: omap_hsmmc: Add support to set IODELAY values mmc: host: omap_hsmmc: Remove *use_dma* member mmc: host: omap_hsmmc: Enable ADMA2 ARM: dts: dra72-evm: Add vmmc_aux supply to mmc1 ARM: dts: dra72-evm-revc: Add vmmc_aux supply to mmc1 ARM: dts: am57xx-beagle-x15-revb1: Fix supply name used for MMC1 IO lines ARM: dts: dra7-evm: Add pinmux configuration for MMC ARM: dts: am57xx-beagle-x15: Add pinmux configuration for MMC ARM: dts: am571x-idk: Add pinmux configuration for MMC ARM: dts: am572x-idk: Add pinmux configuration for MMC ARM: dts: dra72-evm: Add pinmux configuration for MMC ARM: dts: dra72-evm-revc: Add pinmux configuration for MMC ARM: dts: dra71-evm: Add pinmux configuration for MMC ARM: dts: dra7: Add "max-frequency" property to MMC dt nodes ARM: dts: dra7: Use new dra7-specific compatible string ARM: dts: dra7: Add supported MMC/SD modes in MMC dt nodes ARM: dts: am57xx-beagle-x15-common: Set MMC2 IO voltage to 3.3V ARM: omap2plus_defconfig: Enable PINCTRL_TI_IODELAY ARM: multi_v7_defconfig: Enable PINCTRL_TI_IODELAY Documentation: ARM: Document new dependencies for MMC on DRA7 Mugunthan V N (1): mmc: host: omap_hsmmc: Add software timer when timeout greater than hardware capablility Ravikumar Kattekola (2): ARM: dts: dra7-evm: Correct the vmmc-supply for mmc2 ARM: dts: dra72-evm-common: Correct vmmc-supply for mmc2 Sekhar Nori (6): mmc: omap_hsmmc: Support non-1.8V IO controllers ARM: dts: dra72x: Create a common file with MMC/SD IOdelay data ARM: dts: dra74x: Create a common file with MMC/SD IOdelay data ARM: dts: am57xx-idk: Move common MMC/SD properties to common file ARM: dts: am57xx-idk: Set MMC2 IO voltage to 3.3V ARM: OMAP2+: Add pdata-quirks for MMC/SD on DRA74x EVM Tony Lindgren (1): ARM: dts: Add dra7 iodelay configuration Documentation/arm/OMAP/README |4 + .../devicetree/bindings/mmc/ti-omap-hsmmc.txt |6 + arch/arm/boot/dts/am571x-idk.dts | 27 +- arch/arm/boot/dts/am572x-idk.dts | 27 +- arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi| 30 +- arch/arm/boot/dts/am57xx-beagle-x15-revb1.dts | 18 +- arch/arm/boot/dts/am57xx-beagle-x15.dts| 17 + arch/arm/boot/dts/am57xx-idk-common.dtsi | 10 + arch/arm/boot/dts/dra7-evm.dts | 28 +- arch/arm/boot/dts/dra7.dtsi| 35 +- arch/arm/boot/dts/dra71-evm.dts| 28 + arch/arm/boot/dts/dra72-evm-common.dtsi|2 - arch/arm/boot/dts/dra72-evm-revc.dts | 32 + arch/arm/boot/dts/dra72-evm.dts| 32 + arch/arm/boot/dts/dra72x-mmc-iodelay.dtsi | 350 ++ arch/arm/boot/dts/dra74x-mmc-iodelay.dtsi | 648 +++ arch/arm/configs/multi_v7_defconfig|1 + arch/arm/configs/omap2plus_defconfig |1 + arch/arm/mach-omap2/pdata-quirks.c | 31 + drivers/mmc/host/omap_hsmmc.c
[PATCH 00/41] omap_hsmmc: Add ADMA support and UHS/HS200/DDR support
This series adds UHS, HS200, DDR mode and ADMA support to omap_hsmmc driver used to improve the throughput of MMC/SD in dra7 SoCs. The functionality implemented in this series was sent before ([1]) but was never followed up since supporting high speed modes in dra7 required IODelay values to be configured. With IODelay driver being merged into kernel, sending it as a fresh series with support for configuring IODelay values. Suggestions of migrating to sdhci driver (from omap_hsmmc driver) is not addressed since *) tuning ratio of MMC in dra7 is different from sdhci *) IOdelay is required for dra7 *) GPIO based card detect is not supported in sdhci *) Some of the registers don't always have correct values as in sdhci (like PSTATE). Supporting all of these in sdhci will result in adding lot of quirks in sdhci driver. This series has been tested on beagleboard, pandaboard, beaglebone-black, beaglebone, am335x-evm, am437x-evm, dra7xx-evm, dra72x-evm, am571x-idk and am572x-idk. I can split the series to go into Ulf Hansson's tree and Tony's tree separately if that is required. [1] -> https://lkml.org/lkml/2015/8/25/213 Balaji T K (1): mmc: host: omap_hsmmc: Add voltage switch support for UHS SD card Kishon Vijay Abraham I (30): mmc: host: omap_hsmmc: Support pbias and vmmc_aux to switch to 1.8v mmc: host: omap_hsmmc: Separate setting voltage capabilities from bus power mmc: host: omap_hsmmc: Program HCTL based on signal_voltage set by mmc core mmc: host: omap_hsmmc: Set clk rate to the max frequency mmc: host: omap_hsmmc: Add tuning support mmc: host: omap_hsmmc: Allow io voltage switch even for fixed vdd mmc: host: omap_hsmmc: Remove incorrect voltage switch sequence mmc: host: omap_hsmmc: Prepare *set_timing() to be used for iodelay setting mmc: host: omap_hsmmc: Add new compatible string to support dra7 mmc: host: omap_hsmmc: Fix error path sequence mmc: host: omap_hsmmc: Add support to set IODELAY values mmc: host: omap_hsmmc: Remove *use_dma* member mmc: host: omap_hsmmc: Enable ADMA2 ARM: dts: dra72-evm: Add vmmc_aux supply to mmc1 ARM: dts: dra72-evm-revc: Add vmmc_aux supply to mmc1 ARM: dts: am57xx-beagle-x15-revb1: Fix supply name used for MMC1 IO lines ARM: dts: dra7-evm: Add pinmux configuration for MMC ARM: dts: am57xx-beagle-x15: Add pinmux configuration for MMC ARM: dts: am571x-idk: Add pinmux configuration for MMC ARM: dts: am572x-idk: Add pinmux configuration for MMC ARM: dts: dra72-evm: Add pinmux configuration for MMC ARM: dts: dra72-evm-revc: Add pinmux configuration for MMC ARM: dts: dra71-evm: Add pinmux configuration for MMC ARM: dts: dra7: Add "max-frequency" property to MMC dt nodes ARM: dts: dra7: Use new dra7-specific compatible string ARM: dts: dra7: Add supported MMC/SD modes in MMC dt nodes ARM: dts: am57xx-beagle-x15-common: Set MMC2 IO voltage to 3.3V ARM: omap2plus_defconfig: Enable PINCTRL_TI_IODELAY ARM: multi_v7_defconfig: Enable PINCTRL_TI_IODELAY Documentation: ARM: Document new dependencies for MMC on DRA7 Mugunthan V N (1): mmc: host: omap_hsmmc: Add software timer when timeout greater than hardware capablility Ravikumar Kattekola (2): ARM: dts: dra7-evm: Correct the vmmc-supply for mmc2 ARM: dts: dra72-evm-common: Correct vmmc-supply for mmc2 Sekhar Nori (6): mmc: omap_hsmmc: Support non-1.8V IO controllers ARM: dts: dra72x: Create a common file with MMC/SD IOdelay data ARM: dts: dra74x: Create a common file with MMC/SD IOdelay data ARM: dts: am57xx-idk: Move common MMC/SD properties to common file ARM: dts: am57xx-idk: Set MMC2 IO voltage to 3.3V ARM: OMAP2+: Add pdata-quirks for MMC/SD on DRA74x EVM Tony Lindgren (1): ARM: dts: Add dra7 iodelay configuration Documentation/arm/OMAP/README |4 + .../devicetree/bindings/mmc/ti-omap-hsmmc.txt |6 + arch/arm/boot/dts/am571x-idk.dts | 27 +- arch/arm/boot/dts/am572x-idk.dts | 27 +- arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi| 30 +- arch/arm/boot/dts/am57xx-beagle-x15-revb1.dts | 18 +- arch/arm/boot/dts/am57xx-beagle-x15.dts| 17 + arch/arm/boot/dts/am57xx-idk-common.dtsi | 10 + arch/arm/boot/dts/dra7-evm.dts | 28 +- arch/arm/boot/dts/dra7.dtsi| 35 +- arch/arm/boot/dts/dra71-evm.dts| 28 + arch/arm/boot/dts/dra72-evm-common.dtsi|2 - arch/arm/boot/dts/dra72-evm-revc.dts | 32 + arch/arm/boot/dts/dra72-evm.dts| 32 + arch/arm/boot/dts/dra72x-mmc-iodelay.dtsi | 350 ++ arch/arm/boot/dts/dra74x-mmc-iodelay.dtsi | 648 +++ arch/arm/configs/multi_v7_defconfig|1 + arch/arm/configs/omap2plus_defconfig |1 + arch/arm/mach-omap2/pdata-quirks.c | 31 + drivers/mmc/host/omap_hsmmc.c