linux-stable/drivers/firmware
Marek Vasut a4b2e6063c firmware: xilinx: Clear IOCTL_SET_SD_TAPDELAY using PM_MMIO_WRITE
In case the tap delay required by Arasan SDHCI is set to 0, the current
embeddedsw firmware unconditionally writes IOU_SLCR SD_ITAPDLY to 0x100
(SD0_ITAPDLYENA=1, SD0_ITAPDLYSEL=0). Previous behavior was to keep the
IOU_SLCR SD_ITAPDLY set to 0x0. There is some sort of difference in the
behavior between SD0_ITAPDLYENA=1/0 with the same SD0_ITAPDLYSEL=0, even
though the behavior should be identical -- zero delay added to rxclk_in
line. The former breaks HS200 training in low temperature conditions.

Write IOU_SLCR SD_ITAPDLY register to 0 using PM_MMIO_WRITE which seem
to allow unrestricted WRITE access (and PM_MMIO_READ which allows read
access) to the entire address space. This way, it is possible to work
around the defect in IOCTL_SET_SD_TAPDELAY design which does not permit
clearing SDx_ITAPDLYENA bit.

Note that the embeddedsw firmware does not permit clearing the SD_ITAPDLY
SD0_ITAPDLYENA bit, this bit can only ever be set by the firmware and it
is often impossible to update the possibly broken firmware.

Signed-off-by: Marek Vasut <marex@denx.de>
Link: https://lore.kernel.org/r/20221215152023.8387-1-marex@denx.de
Signed-off-by: Michal Simek <michal.simek@amd.com>
2023-01-05 10:18:07 +01:00
..
arm_ffa firmware: arm_ffa: Move constants to header file 2022-12-01 15:51:31 +00:00
arm_scmi firmware: arm_scmi: Fix deferred_tx_wq release on error paths 2022-11-01 11:36:20 +00:00
broadcom firmware/nvram: bcm47xx: support init from IO memory 2022-11-09 10:27:10 -08:00
cirrus firmware: cs_dsp: Switch to using namespaced exports 2022-11-25 14:36:56 +00:00
efi efi: random: fix NULL-deref when refreshing seed 2022-12-20 03:13:45 +01:00
google firmware: google: fix a NULL vs IS_ERR() check in cbmem_entry_probe() 2022-11-23 20:03:14 +01:00
imx firmware: imx: scu-pd: add missed USB_1_PHY pd 2022-10-24 10:05:27 +08:00
meson
psci ARM: driver updates for 6.1 2022-10-06 11:04:57 -07:00
smccc
tegra tegra: mark BPMP driver as little-endian only 2022-11-23 14:21:23 +01:00
xilinx firmware: xilinx: Clear IOCTL_SET_SD_TAPDELAY using PM_MMIO_WRITE 2023-01-05 10:18:07 +01:00
arm_scpi.c firmware: arm_scpi: Ensure scpi_info is not assigned if the probe fails 2022-07-04 14:28:42 +01:00
arm_sdei.c
dmi-id.c driver core: make struct class.dev_uevent() take a const * 2022-11-24 17:12:15 +01:00
dmi-sysfs.c firmware: dmi-sysfs: Fix memory leak in dmi_sysfs_register_handle 2022-05-19 18:56:56 +02:00
dmi_scan.c firmware: dmi: Fortify entry point length checks 2022-09-23 14:53:14 +02:00
edd.c edd: simplify the check of 'attr->test' in edd_populate_dir() 2022-05-19 18:57:04 +02:00
iscsi_ibft.c
iscsi_ibft_find.c
Kconfig sound updates for 5.19-rc1 2022-05-25 16:55:16 -07:00
Makefile Follow-up tweaks for the EFI changes in v5.19 2022-06-03 13:39:30 -07:00
memmap.c
mtk-adsp-ipc.c firmware: mediatek: Use meaningful names for mbox 2022-06-22 13:39:30 +01:00
pcdp.c
pcdp.h
qcom_scm-legacy.c firmware: qcom_scm-legacy: correct kerneldoc 2022-06-25 22:04:31 -05:00
qcom_scm-smc.c
qcom_scm.c firmware: qcom_scm: Add bw voting support to the SCM interface 2022-06-29 21:48:32 -05:00
qcom_scm.h firmware: qcom: scm: remove unused __qcom_scm_init declaration 2022-09-13 15:14:54 -05:00
qemu_fw_cfg.c
raspberrypi.c Char/Misc driver changes for 6.2-rc1 2022-12-16 03:49:24 -08:00
scpi_pm_domain.c
stratix10-rsu.c firmware: stratix10-rsu: extend RSU driver to get DCMF status 2022-07-14 16:55:09 +02:00
stratix10-svc.c firmware: stratix10-svc: To support a command ATF Get Version 2022-07-14 16:55:09 +02:00
sysfb.c fbdev/vga16fb: Create EGA/VGA devices in sysfb code 2022-07-19 13:19:11 +02:00
sysfb_simplefb.c firmware: sysfb: Make sysfb_create_simplefb() return a pdev pointer 2022-06-29 09:51:31 +02:00
ti_sci.c firmware: ti_sci: Use devm_bitmap_zalloc when applicable 2022-11-03 21:45:10 -05:00
ti_sci.h
trusted_foundations.c
turris-mox-rwtm.c hwrng: core - treat default_quality as a maximum and default to 1024 2022-11-18 16:59:34 +08:00