linux-stable/drivers/mmc/core
Vincent Whitchurch ff369d7b98 mmc: debugfs: Allow host caps to be modified
During board verification, there is a need to test the various supported
eMMC/SD speed modes.  However, since the framework chooses the best mode
supported by the card and the host controller's caps, this currently
necessitates changing the devicetree for every iteration.

Allow the various speed mode host capabilities to be modified via
debugfs in order to allow easier hardware verification.  The values to
be written are the raw MMC_CAP* values from include/linux/mmc/host.h.
This is rather low-level, and these defines are not guaranteed to be
stable, but it is perhaps good enough for the intended use case.

MMC_CAP_AGGRESSIVE_PM can also be set, in order to be able to
re-initialize the card without having to physically remove and re-insert
it.

 /sys/kernel/debug/mmc0# grep timing ios
 timing spec:	9 (mmc HS200)

 // Turn on MMC_CAP_AGGRESSIVE_PM and re-trigger runtime suspend
 /sys/kernel/debug/mmc0# echo $(($(cat caps) | (1 << 7))) > caps
 /sys/kernel/debug/mmc0# echo on > /sys/bus/mmc/devices/mmc0\:0001/power/control
 /sys/kernel/debug/mmc0# echo auto > /sys/bus/mmc/devices/mmc0\:0001/power/control

 // MMC_CAP2_HS200_1_8V_SDR
 /sys/kernel/debug/mmc0# echo $(($(cat caps2) & ~(1 << 5))) > caps2
 /sys/kernel/debug/mmc0# echo on > /sys/bus/mmc/devices/mmc0\:0001/power/control
 /sys/kernel/debug/mmc0# grep timing ios
 timing spec:	8 (mmc DDR52)

Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
Link: https://lore.kernel.org/r/20230929-mmc-caps-v2-2-11a4c2d94f15@axis.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
2023-10-10 13:44:49 +02:00
..
Kconfig mmc: core: Imply IOSCHED_BFQ 2023-02-02 16:02:02 +01:00
Makefile mmc: core: Add basic support for inline encryption 2021-02-01 12:02:33 +01:00
block.c mmc: core: Fix error propagation for some ioctl commands 2023-09-26 15:08:05 +02:00
block.h
bus.c mmc: core: propagate removable attribute to driver core 2023-08-09 13:21:48 +02:00
bus.h mmc: core: use sysfs_emit() instead of sprintf() 2022-02-28 13:06:23 +01:00
card.h mmc: Add MMC_QUIRK_BROKEN_SD_CACHE for Kingston Canvas Go Plus from 11/2019 2023-06-20 13:19:34 +02:00
core.c mmc: Revert "mmc: core: Allow mmc_start_host() synchronously detect a card" 2023-06-30 14:06:51 +02:00
core.h mmc: core: refactor debugfs code 2022-12-07 13:29:13 +01:00
crypto.c blk-crypto: rename blk_keyslot_manager to blk_crypto_profile 2021-10-21 10:49:32 -06:00
crypto.h mmc: core: Add basic support for inline encryption 2021-02-01 12:02:33 +01:00
debugfs.c mmc: debugfs: Allow host caps to be modified 2023-10-10 13:44:49 +02:00
host.c mmc: core: fix return value check in devm_mmc_alloc_host() 2023-02-17 11:27:36 +01:00
host.h mmc: host: factor out clearing the retune state 2021-08-24 10:15:28 +02:00
mmc.c mmc: core: Always reselect card type 2023-10-10 13:44:49 +02:00
mmc_ops.c mmc: core: Align to common busy polling behaviour for mmc ioctls 2023-02-15 13:24:03 +01:00
mmc_ops.h mmc: core: Add host specific tuning support for SD HS mode 2023-08-25 11:45:51 +02:00
mmc_test.c mmc: core: remove unnecessary (void*) conversions 2023-04-03 14:36:12 +02:00
pwrseq.c mmc: pwrseq: Use device_match_of_node() 2022-12-07 13:22:37 +01:00
pwrseq.h
pwrseq_emmc.c mmc: pwrseq: Convert to platform remove callback returning void 2023-08-15 12:48:20 +02:00
pwrseq_sd8787.c mmc: pwrseq: sd8787: Convert to platform remove callback returning void 2023-08-15 12:48:20 +02:00
pwrseq_simple.c mmc: pwrseq_simple: Convert to platform remove callback returning void 2023-08-15 12:48:20 +02:00
queue.c mmc: core: Allow dynamical updates of the number of requests for hsq 2023-09-27 12:13:18 +02:00
queue.h mmc: switch to blk_mq_alloc_disk 2021-06-30 15:34:04 -06:00
quirks.h mmc: Add MMC_QUIRK_BROKEN_SD_CACHE for Kingston Canvas Go Plus from 11/2019 2023-06-20 13:19:34 +02:00
regulator.c mmc: core: add helpers mmc_regulator_enable/disable_vqmmc 2023-03-23 11:38:34 +01:00
sd.c mmc: core: Add host specific tuning support for SD HS mode 2023-08-25 11:45:51 +02:00
sd.h mmc: core: remove unused host parameter of mmc_sd_get_csd() 2021-02-01 11:54:48 +01:00
sd_ops.c mmc: core: Add host specific tuning support for SD HS mode 2023-08-25 11:45:51 +02:00
sd_ops.h mmc: core: Add host specific tuning support for SD HS mode 2023-08-25 11:45:51 +02:00
sdio.c mmc: core: sdio: hold retuning if sdio in 1-bit mode 2023-09-26 15:08:05 +02:00
sdio_bus.c Driver core changes for 6.3-rc1 2023-02-24 12:58:55 -08:00
sdio_bus.h
sdio_cis.c mmc: sdio: fix possible resource leaks in some error paths 2023-02-14 00:06:22 +01:00
sdio_cis.h
sdio_io.c mmc: sdio: Spelling s/compement/complement/ 2023-01-23 15:51:38 +01:00
sdio_irq.c mmc: core: Switch to basic workqueue API for sdio_irq_work 2022-09-14 11:53:47 +02:00
sdio_ops.c
sdio_ops.h
sdio_uart.c tty: make tty_operations::write()'s count size_t 2023-08-11 21:12:46 +02:00
slot-gpio.c mmc: core: support setting card detect interrupt from drivers 2023-02-15 13:46:09 +01:00
slot-gpio.h