mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 03:40:35 +09:00
mmc: add a file to debugfs for changing host max clock at runtime
Usage is as follows: rk3566_rgo:/ # cat /sys/kernel/debug/mmc1/max_clock 150000000 rk3566_rgo:/ # echo 200000000 > /sys/kernel/debug/mmc1/max_clock rk3566_rgo:/ # cat /sys/kernel/debug/mmc1/max_clock 200000000 rk3566_rgo:/ # echo 200000000 > /sys/kernel/debug/mmc1/clock rk3566_rgo:/ # dmesg -c [ 285.884348] mmc_host mmc1: Bus speed (slot 0) = 198000000Hz (slot req 200000000Hz, actual 198000000HZ div = 0) Signed-off-by: Alex Zhao <zzc@rock-chips.com> Change-Id: I7ac9649b231c50b0c6c066407e28954e8c94510c
This commit is contained in:
@@ -225,6 +225,31 @@ static int mmc_clock_opt_set(void *data, u64 val)
|
||||
DEFINE_SIMPLE_ATTRIBUTE(mmc_clock_fops, mmc_clock_opt_get, mmc_clock_opt_set,
|
||||
"%llu\n");
|
||||
|
||||
static int mmc_max_clock_opt_get(void *data, u64 *val)
|
||||
{
|
||||
struct mmc_host *host = data;
|
||||
|
||||
*val = host->f_max;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mmc_max_clock_opt_set(void *data, u64 val)
|
||||
{
|
||||
struct mmc_host *host = data;
|
||||
|
||||
/* We need this check due to input value is u64 */
|
||||
if (val != 0 && (val > UHS_SDR104_MAX_DTR || val < host->f_min))
|
||||
return -EINVAL;
|
||||
|
||||
host->f_max = (unsigned int) val;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
DEFINE_DEBUGFS_ATTRIBUTE(mmc_max_clock_fops, mmc_max_clock_opt_get, mmc_max_clock_opt_set,
|
||||
"%llu\n");
|
||||
|
||||
void mmc_add_host_debugfs(struct mmc_host *host)
|
||||
{
|
||||
struct dentry *root;
|
||||
@@ -253,6 +278,9 @@ void mmc_add_host_debugfs(struct mmc_host *host)
|
||||
&mmc_clock_fops))
|
||||
goto err_node;
|
||||
|
||||
debugfs_create_file_unsafe("max_clock", S_IRUSR | S_IWUSR, root, host,
|
||||
&mmc_max_clock_fops);
|
||||
|
||||
#ifdef CONFIG_FAIL_MMC_REQUEST
|
||||
if (fail_request)
|
||||
setup_fault_attr(&fail_default_attr, fail_request);
|
||||
|
||||
Reference in New Issue
Block a user