- 27 Sep, 2019 1 commit
-
-
Nicolin Chen authored
The SDHCI controller on Tegra186 supports 40-bit addressing, which is usually enough to address all of system memory. However, if the SDHCI controller is behind an IOMMU, the address space can go beyond. This happens on Tegra186 and later where the ARM SMMU has an input address space of 48 bits. If the DMA API is backed by this ARM SMMU, the top- down IOVA allocator will cause IOV addresses to be returned that the SDHCI controller cannot access. Unfortunately, prior to the introduction of the ->set_dma_mask() host operation, the SDHCI core would set either a 64-bit DMA mask if the controller claimed to support 64-bit addressing, or a 32-bit DMA mask otherwise. Since the full 64 bits cannot be addressed on Tegra, this had to be worked around in commit 68481a7e ("mmc: tegra: Mark 64 bit dma broken on Tegra186") by setting the SDHCI_QUIRK2_BROKEN_64_BIT_DMA quirk, which effectively restricts the DMA mask to 32 bits. One disadvantage of this is that dma_map_*() APIs will now try to use the swiotlb to bounce DMA to addresses beyond of the controller's DMA mask. This in turn caused degraded performance and can lead to situations where the swiotlb buffer is exhausted, which in turn leads to DMA transfers to fail. With the recent introduction of the ->set_dma_mask() host operation, this can now be properly fixed. For each generation of Tegra, the exact supported DMA mask can be configured. This kills two birds with one stone: it avoids the use of bounce buffers because system memory never exceeds the addressable memory range of the SDHCI controllers on these devices, and at the same time when an IOMMU is involved, it prevents IOV addresses from being allocated beyond the addressible range of the controllers. Since the DMA mask is now properly handled, the 64-bit DMA quirk can be removed. Signed-off-by:
Nicolin Chen <nicoleotsuka@gmail.com> [treding@nvidia.com: provide more background in commit message] Tested-by:
Nicolin Chen <nicoleotsuka@gmail.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Thierry Reding <treding@nvidia.com> Cc: stable@vger.kernel.org # v4.15 + Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
- 21 Aug, 2019 1 commit
-
-
Dmitry Osipenko authored
The WRITE_PROTECT bit is always in a "protected mode" on Tegra and WP-GPIO state need to be used instead. In a case of the GPIO absence, write-enable should be assumed. External SD is writable once again as a result of this patch because the offending commit changed behaviour for the case of a missing WP-GPIO to fall back to WRITE_PROTECT bit-checking, which is incorrect for Tegra. Cc: stable@vger.kernel.org # v5.1+ Fixes: e8391453 ("mmc: sdhci-tegra: drop ->get_ro() implementation") Signed-off-by:
Dmitry Osipenko <digetx@gmail.com> Acked-by:
Thierry Reding <treding@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
- 10 Jun, 2019 1 commit
-
-
Thierry Reding authored
Recent changes have made it much more likely that clocks are not available, when the SDHCI driver is first probed. However, that is a situation that the driver can cope with just fine. To avoid confusion, don't output an error when this happens. Signed-off-by:
Thierry Reding <treding@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
- 05 Jun, 2019 1 commit
-
-
Thomas Gleixner authored
Based on 1 normalized pattern(s): this software is licensed under the terms of the gnu general public license version 2 as published by the free software foundation and may be copied distributed and modified under those terms this program is distributed in the hope that it will be useful but without any warranty without even the implied warranty of merchantability or fitness for a particular purpose see the gnu general public license for more details extracted by the scancode license scanner the SPDX license identifier GPL-2.0-only has been chosen to replace the boilerplate/reference in 285 file(s). Signed-off-by:
Thomas Gleixner <tglx@linutronix.de> Reviewed-by:
Alexios Zavras <alexios.zavras@intel.com> Reviewed-by:
Allison Randal <allison@lohutok.net> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190529141900.642774971@linutronix.de Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 28 May, 2019 1 commit
-
-
Dan Carpenter authored
The WARN_ON() macro takes a condition, not a warning message. I've changed this to use WARN(1, "msg... Fixes: ea8fc595 ("mmc: tegra: update hw tuning process") Signed-off-by:
Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
- 15 Apr, 2019 5 commits
-
-
Sowjanya Komatineni authored
This patch adds suspend and resume PM ops for tegra SDHCI. Acked-by:
Thierry Reding <treding@nvidia.com> Signed-off-by:
Sowjanya Komatineni <skomatineni@nvidia.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Sowjanya Komatineni authored
Tegra CQHCI/SDHCI design prevents write access to SDHCI block size register when CQE is enabled and unhalted. CQHCI driver enables CQE prior to invoking sdhci_cqe_enable which violates this Tegra specific host requirement. This patch fixes this by configuring sdhci block registers prior to CQE unhalt. This patch also has a fix for retry of unhalt due to known Tegra specific CQE resume bug where first unhalt might not succeed when clear all tasks is performed prior to resume and need a second unhalt. This patch also includes CQE enable fix for CMD CRC errors that happen with the specific sandisk emmc device when status command is sent during the transfer of last data block due to marginal timing. Tested-by:
Jon Hunter <jonathanh@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Sowjanya Komatineni <skomatineni@nvidia.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Sowjanya Komatineni authored
Tegra186 CQHCI host has a known bug where CQHCI controller selects DATA_PRESENT_SELECT bit to 1 for DCMDs with R1B response type and since DCMD does not trigger any data transfer, DCMD task complete happens leaving the DATA FSM of host controller in wait state for the data. This effects the data transfer tasks issued after the DCMDs with R1b response type resulting in timeout. SW WAR is to set CMD_TIMING to 1 in DCMD task descriptor. This bug and SW WAR is applicable only for Tegra186 and not for Tegra194. This patch implements this WAR thru NVQUIRK_CQHCI_DCMD_R1B_CMD_TIMING for Tegra186 and also implements update_dcmd_desc of cqhci_host_ops interface to set CMD_TIMING bit depending on the NVQUIRK. Tested-by:
Jon Hunter <jonathanh@nvidia.com> Reviewed-by:
Ritesh Harjani <riteshh@codeaurora.org> Signed-off-by:
Sowjanya Komatineni <skomatineni@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Sowjanya Komatineni authored
This patch includes below HW tuning related fixes. configures tuning parameters as per Tegra TRM WAR fix for manual tap change HW auto-tuning post process As per Tegra TRM, SDR50 mode tuning execution takes upto maximum of 256 tuning iterations and SDR104/HS200/HS400 modes tuning execution takes upto maximum of 128 tuning iterations. This patch programs tuning control register with maximum tuning iterations needed based on the timing along with the start tap, multiplier, and step size used by the HW tuning. Tegra210 has a known issue of glitch on trimmer output when the tap value is changed with the trimmer input clock running and the WAR is to disable card clock before sending tuning command and after sending tuning command wait for 1usec and issue SW reset followed by enabling card clock. This WAR is applicable when changing tap value manually as well. Tegra SDHCI driver has this implemented correctly for manual tap change but missing SW reset before enabling card clock during sending tuning command. Issuing SW reset during tuning command as a part of WAR and is applicable in cases where tuning is performed with single step size for more iterations. This patch includes this fix. HW auto-tuning finds the best largest passing window and sets the tap at the middle of the window. With some devices like sandisk eMMC driving fast edges and due to high tap to tap delay in the Tegra chipset, auto-tuning does not detect falling tap between the valid windows resulting in a parital window or a merged window and the best tap is set at the signal transition which is actually the worst tap location. Recommended SW solution is to detect if the best passing window picked by the HW tuning is a partial or a merged window based on min and max tap delays found from chip characterization across PVT and perform tuning correction to pick the best tap. This patch has implementation of this post HW tuning process for the tegra hosts that support HW tuning through the callback function tegra_sdhci_execute_hw_tuning and uses the tuned tap delay. Tested-by:
Jon Hunter <jonathanh@nvidia.com> Signed-off-by:
Sowjanya Komatineni <skomatineni@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Sowjanya Komatineni authored
ddr_signaling is set to true for DDR50 and DDR52 modes but is not set back to false for other modes. This programs incorrect host clock when mode change happens from DDR52/DDR50 to other SDR or HS modes like incase of mmc_retune where it switches from HS400 to HS DDR and then from HS DDR to HS mode and then to HS200. This patch fixes the ddr_signaling to set properly for non DDR modes. Tested-by:
Jon Hunter <jonathanh@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Sowjanya Komatineni <skomatineni@nvidia.com> Cc: stable@vger.kernel.org # v4.20 + Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
- 25 Feb, 2019 3 commits
-
-
Thomas Petazzoni authored
The SDHCI core is know properly checking for the state of a WP GPIO, so there is no longer any need for the sdhci-tegra code to implement ->get_ro() using mmc_gpio_get_ro(). Signed-off-by:
Thomas Petazzoni <thomas.petazzoni@bootlin.com> Tested-by:
Thierry Reding <treding@nvidia.com> Acked-by:
Thierry Reding <treding@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Sowjanya Komatineni authored
This patch adds HW Command Queue for supported Tegra SDMMC controllers. Signed-off-by:
Sowjanya Komatineni <skomatineni@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Acked-by:
Thierry Reding <treding@nvidia.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Sowjanya Komatineni authored
Program initial drive code offsets which will be used by auto calibration process. Program fixed drive strengths for SDMMC pads in pad control register when auto cal timeouts. Fixed settings are based on Pre-SI analysis of the pad design. Signed-off-by:
Sowjanya Komatineni <skomatineni@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
- 17 Dec, 2018 1 commit
-
-
Sowjanya Komatineni authored
Some of the SDMMC pads auto calibration values parsed from devicetree are assigned incorrectly. This patch fixes it. Signed-off-by:
Sowjanya Komatineni <skomatineni@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Acked-by:
Thierry Reding <treding@nvidia.com> Fixes: 51b77c8e ("mmc: tegra: Program pad autocal offsets from dt") Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
- 08 Oct, 2018 22 commits
-
-
YueHaibing authored
Fix inconsistent IS_ERR and PTR_ERR in tegra_sdhci_init_pinctrl_info, the proper pointer to be passed as argument is 'pinctrl_state_1v8' Signed-off-by:
YueHaibing <yuehaibing@huawei.com> Reviewed-by:
Aapo Vienamo <aapo.vienamo@iki.fi> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Rerun the pad calibration procedure before sdhci_request() if the 100 ms recalibration interval has been exceeded. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Acked-by:
Thierry Reding <treding@nvidia.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Implement HS400 specific delay line calibration procedure. This is a Tegra specific procedure and has to be performed regardless whether enhanced strobe or HS400 tuning is used. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Acked-by:
Thierry Reding <treding@nvidia.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Implement eMMC HS400 enhanced strobe. Enhanced strobe is an alternative mechanism to the HS400 tuning procedure. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Acked-by:
Thierry Reding <treding@nvidia.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Parse and program the HS400 DQS trim value from DT. Program a fallback value in case the property is missing. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Acked-by:
Thierry Reding <treding@nvidia.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Set nvquirks to enable higher speed modes. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Thierry Reding <treding@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Set nvquirks to enable higher speed modes. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Thierry Reding <treding@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Implement tegra210_sdhci_writew() to disable card clock and issue a reset when the tuning command is sent. This is done to prevent an intermittent hang with around 10 % failure rate during tuning. Add tegra186_sdhci_ops because this workaround is specific to Tegra210. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
tegra_sdhci_writew() defers the write to SDHCI_TRANSFER_MODE until SDHCI_COMMAND is written. This is not necessary on Tegra210 and Tegra186 and it breaks read-modify-write operations on SDHCI_TRANSFER_MODE because writes to SDHCI_TRANSFER_MODE aren't visible until SDHCI_COMMAND has been written to. This results in tuning failures on Tegra210. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Add a new sdhci_ops struct for Tegra210 and Tegra186 which doesn't set the custom tuning callback used on previous SoC generations. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Thierry Reding <treding@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Program the outbound sampling trim value in tegra_sdhci_reset(). Unlike the outbound tap value this does not depend on the signaling mode and needs to be only programmed once. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Thierry Reding <treding@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Set the default inbound timing adjustment tap value on reset and on non-tunable modes. The default tap value is not programmed on tunable modes because the tuning sequence is used instead to determine the tap value. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Thierry Reding <treding@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Parse the default inbound and outbound sampling trimmer values from the device tree. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Thierry Reding <treding@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Add quirk to disable the card clock during configuration of the tap value in tegra_sdhci_set_tap() and issue sdhci_reset() after value change. This is a workaround to avoid propagation of a potential glitch caused by setting the tap value. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Thierry Reding <treding@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Set NVQUIRK_HAS_PADCALIB on Tegra210 and Tegra186 to enable automatic pad drive strength calibration. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Thierry Reding <treding@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Run the automatic pad calibration after voltage switching if tegra_host->pad_calib_required is set. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Thierry Reding <treding@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Parse the pad drive strength calibration offsets from the device tree. Program the calibration offsets in accordance with the current signaling mode. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Thierry Reding <treding@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Disable the card clock during automatic pad drive strength calibration and re-enable it afterwards. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Thierry Reding <treding@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Automatic pad drive strength calibration is performed on a separate pad identical to the ones used for driving the actual bus. Power on the calibration pad during the calibration procedure and power it off afterwards to save power. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Reviewed-by:
Mikko Perttunen <mperttunen@nvidia.com> Acked-by:
Thierry Reding <treding@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Configure the voltage reference used by the automatic pad drive strength calibration procedure. The value is a magic number from the TRM. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Thierry Reding <treding@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Implement polling with 10 ms timeout for automatic pad drive strength calibration. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Thierry Reding <treding@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Aapo Vienamo authored
Parse the pinctrl state and nvidia,only-1-8-v properties from the device tree. Validate the pinctrl and regulator configuration before unmasking UHS modes. Implement pad voltage state reconfiguration in the mmc start_signal_voltage_switch() callback. Add NVQUIRK_NEEDS_PAD_CONTROL and add set it for Tegra210 and Tegra186. The pad configuration is done in the mmc callback because the order of pad reconfiguration and sdhci voltage switch depend on the voltage to which the transition occurs. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Thierry Reding <treding@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
- 30 Jul, 2018 1 commit
-
-
Aapo Vienamo authored
Tegra SDHCI controllers require the SDHCI clock divider to be configured to divide the clock by two in DDR50/52 modes. Incorrectly configured clock divider results in corrupted data. Prevent the possibility of incorrectly calculating the divider value due to clock rate rounding or low parent clock frequency by not assigning host->max_clk to clk_get_rate() on tegra_sdhci_set_clock(). See the comments for further details. Fixes: a8e326a9 ("mmc: tegra: implement module external clock change") Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Acked-by:
Jon Hunter <jonathanh@nvidia.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
- 16 Jul, 2018 3 commits
-
-
Aapo Vienamo authored
Implement and use tegra_sdhci_get_max_clock() which returns the true maximum host clock rate. The issue with tegra_sdhci_get_max_clock() is that it returns the current clock rate of the host instead of the maximum one, which can lead to unnecessarily small clock rates. This differs from the previous implementation of tegra_sdhci_get_max_clock() in that it doesn't divide the result by two. Signed-off-by:
Aapo Vienamo <avienamo@nvidia.com> Tested-by:
Marcel Ziswiler <marcel.ziswiler@toradex.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Stefan Agner authored
It seems that SD3.0 advertisement needs to be set for higher eMMC speed modes (namely DDR52) as well. The TRM states that the SD3.0 advertisement bit should be set for all controller instances, even for those not supporting UHS-I mode... When specifying vqmmc-supply as a fixed 1.8V regulator on a Tegra SD/MMC instance which is connected to a eMMC device, the stack enables SD3.0. However, enabling it has consequences: If SDHCI 3.0 support is advertised the stack enables Auto-CMD23. Unfortunately Auto-CMD23 seems not to work well with Tegra 3 currently. It leads to regular warnings: mmc2: Got command interrupt 0x00010000 even though no command operation was in progress. It is not entirely clear why those errors happens. It seems that a Linux 3.1 based downstream kernel which has Auto-CMD23 support does not show those warnings. Use quirk SDHCI_QUIRK2_ACMD23_BROKEN to prevent Auto-CMD23 being used for now. With this the eMMC works stable on high-speed mode while still announcing SD3.0. This allows to use mmc-ddr-1_8v to enables DDR52 mode. In DDR52 mode read speed improves from about 42MiB/s to 72MiB/s on an Apalis T30. Signed-off-by:
Stefan Agner <stefan@agner.ch> Tested-by:
Marcel Ziswiler <marcel.ziswiler@toradex.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Stefan Agner authored
Make sure the clock is doubled when using eMMC DDR52 mode. Signed-off-by:
Stefan Agner <stefan@agner.ch> Tested-by:
Marcel Ziswiler <marcel.ziswiler@toradex.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-