Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dab1ac3b authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "qcom: soc: bgdaemon: Wait for the modem down command sent to BG"

parents 129f2459 d68a1a39
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@
#define BGDAEMON_LDO03_LPM_VTG 0
#define BGDAEMON_LDO03_NPM_VTG 10000

#define MPPS_DOWN_EVENT_TO_BG_TIMEOUT 100

enum {
	SSR_DOMAIN_BG,
@@ -93,6 +94,7 @@ static dev_t bg_dev;
static  int                      device_open;
static  void                     *handle;
static  struct   bgcom_open_config_type   config_type;
static DECLARE_COMPLETION(bg_modem_down_wait);

/**
 * send_uevent(): send events to user space
@@ -310,6 +312,12 @@ int bg_soft_reset(void)
}
EXPORT_SYMBOL(bg_soft_reset);

static int modem_down2_bg(void)
{
	complete(&bg_modem_down_wait);
	return 0;
}

static long bg_com_ioctl(struct file *filp,
		unsigned int ui_bgcom_cmd, unsigned long arg)
{
@@ -349,6 +357,9 @@ static long bg_com_ioctl(struct file *filp,
	case BG_SOFT_RESET:
		ret = bg_soft_reset();
		break;
	case BG_MODEM_DOWN2_BG_DONE:
		ret = modem_down2_bg();
		break;
	default:
		ret = -ENOIOCTLCMD;
	}
@@ -524,11 +535,17 @@ static int ssr_modem_cb(struct notifier_block *this,
		unsigned long opcode, void *data)
{
	struct bg_event modeme;
	int ret;

	switch (opcode) {
	case SUBSYS_BEFORE_SHUTDOWN:
		modeme.e_type = MODEM_BEFORE_POWER_DOWN;
		reinit_completion(&bg_modem_down_wait);
		send_uevent(&modeme);
		ret = wait_for_completion_timeout(&bg_modem_down_wait,
			msecs_to_jiffies(MPPS_DOWN_EVENT_TO_BG_TIMEOUT));
		if (!ret)
			pr_err("Time out on modem down event\n");
		break;
	case SUBSYS_AFTER_POWERUP:
		modeme.e_type = MODEM_AFTER_POWER_UP;
+4 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@
#define BGCOM_SET_SPI_BUSY  4
#define BGCOM_REG_WRITE  5
#define BGCOM_SOFT_RESET  6
#define BGCOM_MODEM_DOWN2_BG  7
#define EXCHANGE_CODE  'V'

struct bg_ui_data {
@@ -45,4 +46,7 @@ enum bg_event_type {
#define BG_SOFT_RESET \
	_IOWR(EXCHANGE_CODE, BGCOM_SOFT_RESET, \
	struct bg_ui_data)
#define BG_MODEM_DOWN2_BG_DONE \
	_IOWR(EXCHANGE_CODE, BGCOM_MODEM_DOWN2_BG, \
	struct bg_ui_data)
#endif