Message ID | 1650969330-9711-1-git-send-email-quic_spathi@quicinc.com |
---|---|
State | New |
Headers | show |
Series | [V1] FROMLIST: mmc: core: Export core functions required for clk scaling | expand |
On Tue, 26 Apr 2022 at 12:43, Srinivasarao Pathipati <quic_spathi@quicinc.com> wrote: > > From: Ram Prakash Gupta <rampraka@codeaurora.org> > > Export core function required for clk scaling post design change. > This would help make clk scaling part of vendor module. > > Bug: 192337957 > Link: https://lore.kernel.org/lkml/1571668177-3766-2-git-send-email- > rampraka@codeaurora.org/ > Signed-off-by: Nitin Rawat <nitirawa@codeaurora.org> > Signed-off-by: Ram Prakash Gupta <rampraka@codeaurora.org> > > Signed-off-by: kamasali <quic_kamasali@quicinc.com> > Signed-off-by: Srinivasarao Pathipati <quic_spathi@quicinc.com> NAK. These are all internal functions of the mmc core. Without knowing about the details of why you need this, I can't really help. Can you try to explain the use case behind this in more detail? Kind regards Uffe > --- > drivers/mmc/core/core.c | 3 +++ > drivers/mmc/core/core.h | 2 +- > drivers/mmc/core/mmc.c | 20 +++++++++++++------- > drivers/mmc/core/queue.c | 1 + > include/linux/mmc/mmc.h | 9 +++++++++ > 5 files changed, 27 insertions(+), 8 deletions(-) > > diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c > index 8cc2b74..7fc77d1 100644 > --- a/drivers/mmc/core/core.c > +++ b/drivers/mmc/core/core.c > @@ -920,6 +920,7 @@ void mmc_set_clock(struct mmc_host *host, unsigned int hz) > host->ios.clock = hz; > mmc_set_ios(host); > } > +EXPORT_SYMBOL_GPL(mmc_set_clock); > > int mmc_execute_tuning(struct mmc_card *card) > { > @@ -1003,6 +1004,7 @@ void mmc_set_initial_state(struct mmc_host *host) > > mmc_crypto_set_initial_state(host); > } > +EXPORT_SYMBOL_GPL(mmc_set_initial_state); > > /** > * mmc_vdd_to_ocrbitnum - Convert a voltage to the OCR bit number > @@ -1266,6 +1268,7 @@ void mmc_set_timing(struct mmc_host *host, unsigned int timing) > host->ios.timing = timing; > mmc_set_ios(host); > } > +EXPORT_SYMBOL_GPL(mmc_set_timing); > > /* > * Select appropriate driver type for host. > diff --git a/drivers/mmc/core/core.h b/drivers/mmc/core/core.h > index f5f3f62..a086152 100644 > --- a/drivers/mmc/core/core.h > +++ b/drivers/mmc/core/core.h > @@ -42,7 +42,7 @@ struct device_node *mmc_of_find_child_device(struct mmc_host *host, > void mmc_init_erase(struct mmc_card *card); > > void mmc_set_chip_select(struct mmc_host *host, int mode); > -void mmc_set_clock(struct mmc_host *host, unsigned int hz); > +extern void mmc_set_clock(struct mmc_host *host, unsigned int hz); > void mmc_set_bus_mode(struct mmc_host *host, unsigned int mode); > void mmc_set_bus_width(struct mmc_host *host, unsigned int width); > u32 mmc_select_voltage(struct mmc_host *host, u32 ocr); > diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c > index b4bcebc..2a642fc 100644 > --- a/drivers/mmc/core/mmc.c > +++ b/drivers/mmc/core/mmc.c > @@ -975,7 +975,7 @@ static int mmc_select_powerclass(struct mmc_card *card) > /* > * Set the bus speed for the selected speed mode. > */ > -static void mmc_set_bus_speed(struct mmc_card *card) > +void mmc_set_bus_speed(struct mmc_card *card) > { > unsigned int max_dtr = (unsigned int)-1; > > @@ -995,7 +995,7 @@ static void mmc_set_bus_speed(struct mmc_card *card) > * If the bus width is changed successfully, return the selected width value. > * Zero is returned instead of error value if the wide width is not supported. > */ > -static int mmc_select_bus_width(struct mmc_card *card) > +int mmc_select_bus_width(struct mmc_card *card) > { > static unsigned ext_csd_bits[] = { > EXT_CSD_BUS_WIDTH_8, > @@ -1060,11 +1060,12 @@ static int mmc_select_bus_width(struct mmc_card *card) > > return err; > } > +EXPORT_SYMBOL_GPL(mmc_select_bus_width); > > /* > * Switch to the high-speed mode > */ > -static int mmc_select_hs(struct mmc_card *card) > +int mmc_select_hs(struct mmc_card *card) > { > int err; > > @@ -1078,11 +1079,12 @@ static int mmc_select_hs(struct mmc_card *card) > > return err; > } > +EXPORT_SYMBOL_GPL(mmc_select_hs); > > /* > * Activate wide bus and DDR if supported. > */ > -static int mmc_select_hs_ddr(struct mmc_card *card) > +int mmc_select_hs_ddr(struct mmc_card *card) > { > struct mmc_host *host = card->host; > u32 bus_width, ext_csd_bits; > @@ -1151,8 +1153,9 @@ static int mmc_select_hs_ddr(struct mmc_card *card) > > return err; > } > +EXPORT_SYMBOL_GPL(mmc_select_hs_ddr); > > -static int mmc_select_hs400(struct mmc_card *card) > +int mmc_select_hs400(struct mmc_card *card) > { > struct mmc_host *host = card->host; > unsigned int max_dtr; > @@ -1246,6 +1249,7 @@ static int mmc_select_hs400(struct mmc_card *card) > __func__, err); > return err; > } > +EXPORT_SYMBOL_GPL(mmc_select_hs400); > > int mmc_hs200_to_hs400(struct mmc_card *card) > { > @@ -1524,7 +1528,7 @@ static int mmc_select_hs200(struct mmc_card *card) > /* > * Activate High Speed, HS200 or HS400ES mode if supported. > */ > -static int mmc_select_timing(struct mmc_card *card) > +int mmc_select_timing(struct mmc_card *card) > { > int err = 0; > > @@ -1559,12 +1563,13 @@ static int mmc_select_timing(struct mmc_card *card) > mmc_set_bus_speed(card); > return 0; > } > +EXPORT_SYMBOL_GPL(mmc_select_timing); > > /* > * Execute tuning sequence to seek the proper bus operating > * conditions for HS200 and HS400, which sends CMD21 to the device. > */ > -static int mmc_hs200_tuning(struct mmc_card *card) > +int mmc_hs200_tuning(struct mmc_card *card) > { > struct mmc_host *host = card->host; > > @@ -1579,6 +1584,7 @@ static int mmc_hs200_tuning(struct mmc_card *card) > > return mmc_execute_tuning(card); > } > +EXPORT_SYMBOL_GPL(mmc_hs200_tuning); > > /* > * Handle the detection and initialisation of a card. > diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c > index 7b07520..cb679a7 100644 > --- a/drivers/mmc/core/queue.c > +++ b/drivers/mmc/core/queue.c > @@ -68,6 +68,7 @@ enum mmc_issue_type mmc_issue_type(struct mmc_queue *mq, struct request *req) > > return MMC_ISSUE_SYNC; > } > +EXPORT_SYMBOL_GPL(mmc_issue_type); > > static void __mmc_cqe_recovery_notifier(struct mmc_queue *mq) > { > diff --git a/include/linux/mmc/mmc.h b/include/linux/mmc/mmc.h > index d9a65c6..2884634 100644 > --- a/include/linux/mmc/mmc.h > +++ b/include/linux/mmc/mmc.h > @@ -449,4 +449,13 @@ static inline bool mmc_ready_for_data(u32 status) > > #define mmc_driver_type_mask(n) (1 << (n)) > > +struct mmc_card; > + > +extern int mmc_select_bus_width(struct mmc_card *card); > +extern int mmc_select_hs(struct mmc_card *card); > +extern int mmc_select_hs_ddr(struct mmc_card *card); > +extern int mmc_select_hs400(struct mmc_card *card); > +extern int mmc_hs200_tuning(struct mmc_card *card); > +extern int mmc_select_timing(struct mmc_card *card); > + > #endif /* LINUX_MMC_MMC_H */ > -- > 2.7.4 >
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c index 8cc2b74..7fc77d1 100644 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c @@ -920,6 +920,7 @@ void mmc_set_clock(struct mmc_host *host, unsigned int hz) host->ios.clock = hz; mmc_set_ios(host); } +EXPORT_SYMBOL_GPL(mmc_set_clock); int mmc_execute_tuning(struct mmc_card *card) { @@ -1003,6 +1004,7 @@ void mmc_set_initial_state(struct mmc_host *host) mmc_crypto_set_initial_state(host); } +EXPORT_SYMBOL_GPL(mmc_set_initial_state); /** * mmc_vdd_to_ocrbitnum - Convert a voltage to the OCR bit number @@ -1266,6 +1268,7 @@ void mmc_set_timing(struct mmc_host *host, unsigned int timing) host->ios.timing = timing; mmc_set_ios(host); } +EXPORT_SYMBOL_GPL(mmc_set_timing); /* * Select appropriate driver type for host. diff --git a/drivers/mmc/core/core.h b/drivers/mmc/core/core.h index f5f3f62..a086152 100644 --- a/drivers/mmc/core/core.h +++ b/drivers/mmc/core/core.h @@ -42,7 +42,7 @@ struct device_node *mmc_of_find_child_device(struct mmc_host *host, void mmc_init_erase(struct mmc_card *card); void mmc_set_chip_select(struct mmc_host *host, int mode); -void mmc_set_clock(struct mmc_host *host, unsigned int hz); +extern void mmc_set_clock(struct mmc_host *host, unsigned int hz); void mmc_set_bus_mode(struct mmc_host *host, unsigned int mode); void mmc_set_bus_width(struct mmc_host *host, unsigned int width); u32 mmc_select_voltage(struct mmc_host *host, u32 ocr); diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index b4bcebc..2a642fc 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c @@ -975,7 +975,7 @@ static int mmc_select_powerclass(struct mmc_card *card) /* * Set the bus speed for the selected speed mode. */ -static void mmc_set_bus_speed(struct mmc_card *card) +void mmc_set_bus_speed(struct mmc_card *card) { unsigned int max_dtr = (unsigned int)-1; @@ -995,7 +995,7 @@ static void mmc_set_bus_speed(struct mmc_card *card) * If the bus width is changed successfully, return the selected width value. * Zero is returned instead of error value if the wide width is not supported. */ -static int mmc_select_bus_width(struct mmc_card *card) +int mmc_select_bus_width(struct mmc_card *card) { static unsigned ext_csd_bits[] = { EXT_CSD_BUS_WIDTH_8, @@ -1060,11 +1060,12 @@ static int mmc_select_bus_width(struct mmc_card *card) return err; } +EXPORT_SYMBOL_GPL(mmc_select_bus_width); /* * Switch to the high-speed mode */ -static int mmc_select_hs(struct mmc_card *card) +int mmc_select_hs(struct mmc_card *card) { int err; @@ -1078,11 +1079,12 @@ static int mmc_select_hs(struct mmc_card *card) return err; } +EXPORT_SYMBOL_GPL(mmc_select_hs); /* * Activate wide bus and DDR if supported. */ -static int mmc_select_hs_ddr(struct mmc_card *card) +int mmc_select_hs_ddr(struct mmc_card *card) { struct mmc_host *host = card->host; u32 bus_width, ext_csd_bits; @@ -1151,8 +1153,9 @@ static int mmc_select_hs_ddr(struct mmc_card *card) return err; } +EXPORT_SYMBOL_GPL(mmc_select_hs_ddr); -static int mmc_select_hs400(struct mmc_card *card) +int mmc_select_hs400(struct mmc_card *card) { struct mmc_host *host = card->host; unsigned int max_dtr; @@ -1246,6 +1249,7 @@ static int mmc_select_hs400(struct mmc_card *card) __func__, err); return err; } +EXPORT_SYMBOL_GPL(mmc_select_hs400); int mmc_hs200_to_hs400(struct mmc_card *card) { @@ -1524,7 +1528,7 @@ static int mmc_select_hs200(struct mmc_card *card) /* * Activate High Speed, HS200 or HS400ES mode if supported. */ -static int mmc_select_timing(struct mmc_card *card) +int mmc_select_timing(struct mmc_card *card) { int err = 0; @@ -1559,12 +1563,13 @@ static int mmc_select_timing(struct mmc_card *card) mmc_set_bus_speed(card); return 0; } +EXPORT_SYMBOL_GPL(mmc_select_timing); /* * Execute tuning sequence to seek the proper bus operating * conditions for HS200 and HS400, which sends CMD21 to the device. */ -static int mmc_hs200_tuning(struct mmc_card *card) +int mmc_hs200_tuning(struct mmc_card *card) { struct mmc_host *host = card->host; @@ -1579,6 +1584,7 @@ static int mmc_hs200_tuning(struct mmc_card *card) return mmc_execute_tuning(card); } +EXPORT_SYMBOL_GPL(mmc_hs200_tuning); /* * Handle the detection and initialisation of a card. diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c index 7b07520..cb679a7 100644 --- a/drivers/mmc/core/queue.c +++ b/drivers/mmc/core/queue.c @@ -68,6 +68,7 @@ enum mmc_issue_type mmc_issue_type(struct mmc_queue *mq, struct request *req) return MMC_ISSUE_SYNC; } +EXPORT_SYMBOL_GPL(mmc_issue_type); static void __mmc_cqe_recovery_notifier(struct mmc_queue *mq) { diff --git a/include/linux/mmc/mmc.h b/include/linux/mmc/mmc.h index d9a65c6..2884634 100644 --- a/include/linux/mmc/mmc.h +++ b/include/linux/mmc/mmc.h @@ -449,4 +449,13 @@ static inline bool mmc_ready_for_data(u32 status) #define mmc_driver_type_mask(n) (1 << (n)) +struct mmc_card; + +extern int mmc_select_bus_width(struct mmc_card *card); +extern int mmc_select_hs(struct mmc_card *card); +extern int mmc_select_hs_ddr(struct mmc_card *card); +extern int mmc_select_hs400(struct mmc_card *card); +extern int mmc_hs200_tuning(struct mmc_card *card); +extern int mmc_select_timing(struct mmc_card *card); + #endif /* LINUX_MMC_MMC_H */