Message ID | 20211124184603.3897245-2-john@metanate.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | mmc: dw_mmc: start deprecating mshcN aliases | expand |
On 11/25/21 3:45 AM, John Keeping wrote: > The caps field depends on the mshcN alias ID but for some devices this > is unnecessary as the capabilities are the same for all instances > sharing the same compatible. > > Add a common_caps field for this case which updates the host's > capabilities without needing the mshcN alias ID. > > Signed-off-by: John Keeping <john@metanate.com> Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com> Best Regards, Jaehoon Chung > --- > drivers/mmc/host/dw_mmc.c | 3 +++ > drivers/mmc/host/dw_mmc.h | 3 +++ > 2 files changed, 6 insertions(+) > > diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c > index 195f2b2434b0..f2a14a434bef 100644 > --- a/drivers/mmc/host/dw_mmc.c > +++ b/drivers/mmc/host/dw_mmc.c > @@ -2856,6 +2856,9 @@ static int dw_mci_init_slot_caps(struct dw_mci_slot *slot) > if (host->pdata->pm_caps) > mmc->pm_caps = host->pdata->pm_caps; > > + if (drv_data) > + mmc->caps |= drv_data->common_caps; > + > if (host->dev->of_node) { > ctrl_id = of_alias_get_id(host->dev->of_node, "mshc"); > if (ctrl_id < 0) > diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h > index ce05d81477d9..771d5afa3136 100644 > --- a/drivers/mmc/host/dw_mmc.h > +++ b/drivers/mmc/host/dw_mmc.h > @@ -550,6 +550,8 @@ struct dw_mci_slot { > * dw_mci driver data - dw-mshc implementation specific driver data. > * @caps: mmc subsystem specified capabilities of the controller(s). > * @num_caps: number of capabilities specified by @caps. > + * @common_caps: mmc subsystem specified capabilities applicable to all of > + * the controllers > * @init: early implementation specific initialization. > * @set_ios: handle bus specific extensions. > * @parse_dt: parse implementation specific device tree properties. > @@ -562,6 +564,7 @@ struct dw_mci_slot { > struct dw_mci_drv_data { > unsigned long *caps; > u32 num_caps; > + u32 common_caps; > int (*init)(struct dw_mci *host); > void (*set_ios)(struct dw_mci *host, struct mmc_ios *ios); > int (*parse_dt)(struct dw_mci *host); >
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c index 195f2b2434b0..f2a14a434bef 100644 --- a/drivers/mmc/host/dw_mmc.c +++ b/drivers/mmc/host/dw_mmc.c @@ -2856,6 +2856,9 @@ static int dw_mci_init_slot_caps(struct dw_mci_slot *slot) if (host->pdata->pm_caps) mmc->pm_caps = host->pdata->pm_caps; + if (drv_data) + mmc->caps |= drv_data->common_caps; + if (host->dev->of_node) { ctrl_id = of_alias_get_id(host->dev->of_node, "mshc"); if (ctrl_id < 0) diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h index ce05d81477d9..771d5afa3136 100644 --- a/drivers/mmc/host/dw_mmc.h +++ b/drivers/mmc/host/dw_mmc.h @@ -550,6 +550,8 @@ struct dw_mci_slot { * dw_mci driver data - dw-mshc implementation specific driver data. * @caps: mmc subsystem specified capabilities of the controller(s). * @num_caps: number of capabilities specified by @caps. + * @common_caps: mmc subsystem specified capabilities applicable to all of + * the controllers * @init: early implementation specific initialization. * @set_ios: handle bus specific extensions. * @parse_dt: parse implementation specific device tree properties. @@ -562,6 +564,7 @@ struct dw_mci_slot { struct dw_mci_drv_data { unsigned long *caps; u32 num_caps; + u32 common_caps; int (*init)(struct dw_mci *host); void (*set_ios)(struct dw_mci *host, struct mmc_ios *ios); int (*parse_dt)(struct dw_mci *host);
The caps field depends on the mshcN alias ID but for some devices this is unnecessary as the capabilities are the same for all instances sharing the same compatible. Add a common_caps field for this case which updates the host's capabilities without needing the mshcN alias ID. Signed-off-by: John Keeping <john@metanate.com> --- drivers/mmc/host/dw_mmc.c | 3 +++ drivers/mmc/host/dw_mmc.h | 3 +++ 2 files changed, 6 insertions(+)