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 | \
@@ -2588,6 +2590,24 @@ static void dw_mci_slot_of_parse(struct dw_mci_slot *slot)
25882590}
25892591#endif /* CONFIG_OF */
25902592
2593+ struct dw_mci * mSdhost ;
2594+ void setmmcEmergency () {
2595+ struct mmc_host * mmc = mSdhost -> cur_slot -> mmc ;
2596+ int ret ;
2597+
2598+ mmc_power_off (mmc );
2599+ mdelay (20 );
2600+
2601+ if (!IS_ERR (mmc -> supply .vmmc )) {
2602+ ret = regulator_enable (mmc -> supply .vmmc );
2603+ }
2604+
2605+ if (!IS_ERR (mmc -> supply .vqmmc ))
2606+ regulator_set_voltage (mmc -> supply .vqmmc , 3000000 , 3300000 );
2607+
2608+ }
2609+ EXPORT_SYMBOL (setmmcEmergency );
2610+
25912611static int dw_mci_init_slot (struct dw_mci * host , unsigned int id )
25922612{
25932613 struct mmc_host * mmc ;
@@ -2619,6 +2639,9 @@ static int dw_mci_init_slot(struct dw_mci *host, unsigned int id)
26192639 mmc -> f_max = freq [1 ];
26202640 }
26212641
2642+ if (of_find_property (host -> dev -> of_node , "supports-sd" , NULL ))
2643+ mSdhost = host ;
2644+
26222645 /*if there are external regulators, get them*/
26232646 ret = mmc_regulator_get_supply (mmc );
26242647 if (ret == - EPROBE_DEFER )
Original file line number Diff line number Diff line change @@ -77,6 +77,7 @@ extern char poweroff_cmd[POWEROFF_CMD_PATH_LEN];
7777extern void orderly_poweroff (bool force );
7878extern void orderly_reboot (void );
7979
80+ extern void setmmcEmergency (void );
8081/*
8182 * Emergency restart, callable from an interrupt handler.
8283 */
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