File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 3838#include <linux/of.h>
3939#include <linux/of_gpio.h>
4040#include <linux/mmc/slot-gpio.h>
41+ #include <linux/reboot.h>
4142
4243#include "dw_mmc.h"
44+ #include "../core/core.h"
4345
4446/* Common flag combinations */
4547#define DW_MCI_DATA_ERROR_FLAGS (SDMMC_INT_DRTO | SDMMC_INT_DCRC | \
@@ -2567,6 +2569,24 @@ static void dw_mci_slot_of_parse(struct dw_mci_slot *slot)
25672569}
25682570#endif /* CONFIG_OF */
25692571
2572+ struct dw_mci * mSdhost ;
2573+ void setmmcEmergency () {
2574+ struct mmc_host * mmc = mSdhost -> cur_slot -> mmc ;
2575+ int ret ;
2576+
2577+ mmc_power_off (mmc );
2578+ mdelay (20 );
2579+
2580+ if (!IS_ERR (mmc -> supply .vmmc )) {
2581+ ret = regulator_enable (mmc -> supply .vmmc );
2582+ }
2583+
2584+ if (!IS_ERR (mmc -> supply .vqmmc ))
2585+ regulator_set_voltage (mmc -> supply .vqmmc , 3000000 , 3300000 );
2586+
2587+ }
2588+ EXPORT_SYMBOL (setmmcEmergency );
2589+
25702590static int dw_mci_init_slot (struct dw_mci * host , unsigned int id )
25712591{
25722592 struct mmc_host * mmc ;
@@ -2596,6 +2616,9 @@ static int dw_mci_init_slot(struct dw_mci *host, unsigned int id)
25962616 mmc -> f_max = freq [1 ];
25972617 }
25982618
2619+ if (of_find_property (host -> dev -> of_node , "supports-sd" , NULL ))
2620+ mSdhost = host ;
2621+
25992622 /*if there are external regulators, get them*/
26002623 ret = mmc_regulator_get_supply (mmc );
26012624 if (ret == - EPROBE_DEFER )
Original file line number Diff line number Diff line change @@ -73,6 +73,7 @@ extern char poweroff_cmd[POWEROFF_CMD_PATH_LEN];
7373extern void orderly_poweroff (bool force );
7474extern void orderly_reboot (void );
7575
76+ extern void setmmcEmergency (void );
7677/*
7778 * Emergency restart, callable from an interrupt handler.
7879 */
Original file line number Diff line number Diff line change @@ -61,6 +61,7 @@ void (*pm_power_off_prepare)(void);
6161void emergency_restart (void )
6262{
6363 kmsg_dump (KMSG_DUMP_EMERG );
64+ setmmcEmergency ();
6465 machine_emergency_restart ();
6566}
6667EXPORT_SYMBOL_GPL (emergency_restart );
You can’t perform that action at this time.
0 commit comments