lkml.org 
[lkml]   [2022]   [Apr]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH V1] FROMLIST: mmc: core: Export core functions required for clk scaling
Date
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>
---
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
\
 
 \ /
  Last update: 2022-04-26 12:45    [W:0.054 / U:0.312 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site