Please take a look at this code :
#define SDHCI_CLOCK_CTRL_TRIM_MASK 0x1f000000
#define SDHCI_CLOCK_CTRL_TRIM_SHIFT 24
static void tegra_sdhci_set_uhs_signaling(struct sdhci_host host,
unsigned timing)
{
…
/ Set trim delay */
if (set_trim_delay) {
ret = tegra_prod_set_by_name_partially(&host->ioaddr,
prod_device_states[timing], tegra_host->prods,
0, SDHCI_TEGRA_VENDOR_CLOCK_CTRL,
SDHCI_CLOCK_CTRL_TRIM_MASK <<
SDHCI_CLOCK_CTRL_TRIM_SHIFT);
…
}
This code passes a value of 0x1f000000 << 24 to it. In fact, the type of the last parameter ‘new_mask’ for tegra_prod_set_by_name_partially() is u32.
Isn’t this a bug ?