The default clock frequency of sdhc2 is 50Mhz, I would like to change it to 40Mhz by adding clock-frequency = <40000000> in device tree; But when I use scope to probe the clock signal, it's still 50Mhz, anyone can help please?
&usdhc2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc2_2>;
no-1-8-v;
bus-width = <4>;
clock-frequency = <40000000>;
max-frequency = <40000000>;
keep-power-in-suspend;
enable-sdio-wakeup;
status = "okay";
};
Solved! Go to Solution.
static unsigned mmc_sdio_get_max_clock(struct mmc_card *card)
{
unsigned max_dtr;
if (mmc_card_highspeed(card)) {
/*
* The SDIO specification doesn't mention how
* the CIS transfer speed register relates to
* high-speed, but it seems that 50 MHz is
* mandatory.
*/
max_dtr = 40000000;//50000000; <-change this
} else {
max_dtr = card->cis.max_dtr;
}
if (card->type == MMC_TYPE_SD_COMBO)
max_dtr = min(max_dtr, mmc_sd_get_max_clock(card));
return max_dtr;
}
this will change all sdio port frequency,we perfer special one
static unsigned mmc_sdio_get_max_clock(struct mmc_card *card)
{
unsigned max_dtr;
if (mmc_card_highspeed(card)) {
/*
* The SDIO specification doesn't mention how
* the CIS transfer speed register relates to
* high-speed, but it seems that 50 MHz is
* mandatory.
*/
max_dtr = 40000000;//50000000; <-change this
} else {
max_dtr = card->cis.max_dtr;
}
if (card->type == MMC_TYPE_SD_COMBO)
max_dtr = min(max_dtr, mmc_sd_get_max_clock(card));
return max_dtr;
}