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

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

Merge "soc: qcom: bgrsb: avoids RSB disable command repetition"

parents c1327811 80156b21
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -49,6 +49,8 @@
#define BGRSB_POWER_DISABLE 0
#define BGRSB_GLINK_POWER_ENABLE 6
#define BGRSB_GLINK_POWER_DISABLE 7
#define BGRSB_IN_TWM 8
#define BGRSB_OUT_TWM 9


struct bgrsb_regulator {
@@ -137,10 +139,12 @@ struct bgrsb_priv {
	bool is_calibrd;

	bool is_cnfgrd;
	bool blk_rsb_cmnds;
};

static void *bgrsb_drv;
static int bgrsb_enable(struct bgrsb_priv *dev, bool enable);
static bool is_in_twm;

int bgrsb_send_input(struct event *evnt)
{
@@ -418,6 +422,7 @@ static void bgrsb_bgdown_work(struct work_struct *work)
	}

	dev->is_cnfgrd = false;
	dev->blk_rsb_cmnds = false;
	pr_info("RSB current state is : %d\n", dev->bgrsb_current_state);

	if (dev->bgrsb_current_state == BGRSB_STATE_INIT) {
@@ -457,6 +462,8 @@ static void bgrsb_glink_bgdown_work(struct work_struct *work)
	}

	dev->is_cnfgrd = false;
	if (is_in_twm)
		dev->blk_rsb_cmnds = true;

	if (dev->handle)
		glink_close(dev->handle);
@@ -832,9 +839,13 @@ static int split_bg_work(struct bgrsb_priv *dev, char *str)
		dev->bttn_configs = (uint8_t)val;
		queue_work(dev->bgrsb_wq, &dev->bttn_configr_work);
		break;
	case BGRSB_IN_TWM:
		is_in_twm = true;
	case BGRSB_GLINK_POWER_DISABLE:
		queue_work(dev->bgrsb_wq, &dev->rsb_glink_down_work);
		break;
	case BGRSB_OUT_TWM:
		is_in_twm = false;
	case BGRSB_GLINK_POWER_ENABLE:
		queue_work(dev->bgrsb_wq, &dev->rsb_glink_up_work);
		break;
@@ -851,6 +862,12 @@ static int store_enable(struct device *pdev, struct device_attribute *attr,
	if (!arr)
		return -ENOMEM;

	if (dev->blk_rsb_cmnds) {
		pr_err("Device is in TWM state\n");
		kfree(arr);
		return count;
	}

	if (!dev->is_cnfgrd) {
		kfree(arr);
		return -ENOMEDIUM;