mmc: dw_mmc-rockchip: Add missing private data for very old controllers
The really old controllers (rk2928, rk3066, rk3188) do not support UHS speeds at all, and thus never handled phase data. For that reason it never had a parse_dt callback and no driver private data at all. Commitff6f0286c8("mmc: dw_mmc-rockchip: Add memory clock auto-gating support") makes the private data sort of mandatory, because the init function checks whether phases are configured internally or through the clock controller. This results in the old SoCs then experiencing NULL-pointer dereferences when they try to access that private-data struct. While we could have if (priv) conditionals in all places, it's way less cluttery to just give the old types their private-data struct. Fixes:ff6f0286c8("mmc: dw_mmc-rockchip: Add memory clock auto-gating support") Cc: stable@vger.kernel.org Signed-off-by: Heiko Stuebner <heiko@sntech.de> Acked-by: Shawn Lin <shawn.lin@rock-chips.com> Signed-off-by: Ulf Hansson <ulfh@kernel.org>
This commit is contained in:
parent
99982b743e
commit
1e9a4850af
1 changed files with 17 additions and 0 deletions
|
|
@ -441,6 +441,22 @@ static int dw_mci_common_parse_dt(struct dw_mci *host)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int dw_mci_rk2928_parse_dt(struct dw_mci *host)
|
||||
{
|
||||
struct dw_mci_rockchip_priv_data *priv;
|
||||
int err;
|
||||
|
||||
err = dw_mci_common_parse_dt(host);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
priv = host->priv;
|
||||
|
||||
priv->internal_phase = false;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int dw_mci_rk3288_parse_dt(struct dw_mci *host)
|
||||
{
|
||||
struct dw_mci_rockchip_priv_data *priv;
|
||||
|
|
@ -514,6 +530,7 @@ static int dw_mci_rockchip_init(struct dw_mci *host)
|
|||
|
||||
static const struct dw_mci_drv_data rk2928_drv_data = {
|
||||
.init = dw_mci_rockchip_init,
|
||||
.parse_dt = dw_mci_rk2928_parse_dt,
|
||||
};
|
||||
|
||||
static const struct dw_mci_drv_data rk3288_drv_data = {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue