summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-11-29 15:24:37 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-11-29 15:24:37 -0800
commit63eb29fe2b2b649801c4134c49a17cd9b16cf985 (patch)
tree93ce0934b6f2fc940178f95d0eceb7296c7a4803
parentbcc563a061a702c9f0f8282ad5d575abae4af88a (diff)
parent8294fce51d68bfb0edcda90b296e145c17d2dc0c (diff)
Merge "defconfig: msm: Enable CONFIG_ESOC_DRV for msm8996 auto"
-rw-r--r--arch/arm/boot/dts/qcom/msm8996-cv2x.dtsi10
-rw-r--r--arch/arm64/configs/msm-auto-perf_defconfig1
-rw-r--r--arch/arm64/configs/msm-auto_defconfig1
-rw-r--r--drivers/esoc/esoc-mdm-4x.c9
-rw-r--r--drivers/esoc/esoc-mdm-pon.c14
5 files changed, 29 insertions, 6 deletions
diff --git a/arch/arm/boot/dts/qcom/msm8996-cv2x.dtsi b/arch/arm/boot/dts/qcom/msm8996-cv2x.dtsi
index f5391e727396..e96ed3020679 100644
--- a/arch/arm/boot/dts/qcom/msm8996-cv2x.dtsi
+++ b/arch/arm/boot/dts/qcom/msm8996-cv2x.dtsi
@@ -352,15 +352,21 @@
pinctrl-0 = <&ap2mdm_active &mdm2ap_active>;
pinctrl-1 = <&ap2mdm_sleep &mdm2ap_sleep>;
interrupt-map = <0 &tlmm 108 0x3
- 1 &tlmm 107 0x3
+ 1 &tlmm 106 0x3
2 &tlmm 112 0x3>;
qcom,mdm2ap-errfatal-gpio = <&tlmm 108 0x00>;
qcom,ap2mdm-errfatal-gpio = <&tlmm 109 0x00>;
qcom,mdm2ap-status-gpio = <&tlmm 106 0x00>;
qcom,ap2mdm-status-gpio = <&tlmm 107 0x00>;
- qcom,ap2mdm-soft-reset-gpio = <&pm8994_mpps 2 GPIO_ACTIVE_LOW>;
+ qcom,ap2mdm-soft-reset-gpio = <&pm8994_mpps 2 0x00>;
qcom,ap2mdm-vddmin-gpio = <&tlmm 111 0x00>;
qcom,mdm2ap-vddmin-gpio = <&tlmm 112 0x00>;
+ qcom,mdm-auto-boot;
+ qcom,ignore-ssr-failure;
+ qcom,mdm-link-info = "0302_02.01.00";
+ qcom,mdm-statusline-not-a-powersource;
+ qcom,mdm-userspace-handle-shutdown;
+ qcom,pil-force-shutdown;
status = "okay";
};
diff --git a/arch/arm64/configs/msm-auto-perf_defconfig b/arch/arm64/configs/msm-auto-perf_defconfig
index b13c086d7a0e..728bfc43bbee 100644
--- a/arch/arm64/configs/msm-auto-perf_defconfig
+++ b/arch/arm64/configs/msm-auto-perf_defconfig
@@ -460,6 +460,7 @@ CONFIG_ESOC=y
CONFIG_ESOC_DEV=y
CONFIG_ESOC_CLIENT=y
CONFIG_ESOC_MDM_4x=y
+CONFIG_ESOC_MDM_DRV=y
CONFIG_DMADEVICES=y
CONFIG_QCOM_BAM_DMA=y
CONFIG_QCOM_SPS_DMA=y
diff --git a/arch/arm64/configs/msm-auto_defconfig b/arch/arm64/configs/msm-auto_defconfig
index e26fc7d28b49..4c54fa07aaa2 100644
--- a/arch/arm64/configs/msm-auto_defconfig
+++ b/arch/arm64/configs/msm-auto_defconfig
@@ -465,6 +465,7 @@ CONFIG_ESOC_DEV=y
CONFIG_ESOC_CLIENT=y
CONFIG_ESOC_DEBUG=y
CONFIG_ESOC_MDM_4x=y
+CONFIG_ESOC_MDM_DRV=y
CONFIG_DMADEVICES=y
CONFIG_QCOM_BAM_DMA=y
CONFIG_QCOM_SPS_DMA=y
diff --git a/drivers/esoc/esoc-mdm-4x.c b/drivers/esoc/esoc-mdm-4x.c
index 6eab3ea187c6..b24457d575c8 100644
--- a/drivers/esoc/esoc-mdm-4x.c
+++ b/drivers/esoc/esoc-mdm-4x.c
@@ -1088,6 +1088,13 @@ static int mdm9x55_setup_hw(struct mdm_ctrl *mdm,
esoc->parent = mdm->dev;
esoc->owner = THIS_MODULE;
esoc->np = pdev->dev.of_node;
+
+ esoc->auto_boot = of_property_read_bool(esoc->np,
+ "qcom,mdm-auto-boot");
+ esoc->statusline_not_a_powersource = of_property_read_bool(esoc->np,
+ "qcom,mdm-statusline-not-a-powersource");
+ esoc->userspace_handle_shutdown = of_property_read_bool(esoc->np,
+ "qcom,mdm-userspace-handle-shutdown");
set_esoc_clink_data(esoc, mdm);
ret = esoc_clink_register(esoc);
if (ret) {
@@ -1103,6 +1110,8 @@ static int mdm9x55_setup_hw(struct mdm_ctrl *mdm,
mdm->debug_fail = false;
mdm->esoc = esoc;
mdm->init = 0;
+ if (esoc->auto_boot)
+ gpio_direction_output(MDM_GPIO(mdm, AP2MDM_STATUS), 1);
return 0;
}
diff --git a/drivers/esoc/esoc-mdm-pon.c b/drivers/esoc/esoc-mdm-pon.c
index 4ae3b7520f77..4d8ff4968038 100644
--- a/drivers/esoc/esoc-mdm-pon.c
+++ b/drivers/esoc/esoc-mdm-pon.c
@@ -141,13 +141,17 @@ static int mdm4x_power_down(struct mdm_ctrl *mdm)
static int mdm9x55_power_down(struct mdm_ctrl *mdm)
{
struct device *dev = mdm->dev;
- int soft_reset_direction = mdm->soft_reset_inverted ? 1 : 0;
+ int soft_reset_direction_assert = 0,
+ soft_reset_direction_de_assert = 1;
+
+ if (mdm->soft_reset_inverted) {
+ soft_reset_direction_assert = 1;
+ soft_reset_direction_de_assert = 0;
+ }
/* Assert the soft reset line whether mdm2ap_status went low or not */
gpio_direction_output(MDM_GPIO(mdm, AP2MDM_SOFT_RESET),
- soft_reset_direction);
+ soft_reset_direction_assert);
dev_dbg(dev, "Doing a hard reset\n");
- gpio_direction_output(MDM_GPIO(mdm, AP2MDM_SOFT_RESET),
- soft_reset_direction);
/*
* Currently, there is a debounce timer on the charm PMIC. It is
* necessary to hold the PMIC RESET low for 406ms
@@ -155,6 +159,8 @@ static int mdm9x55_power_down(struct mdm_ctrl *mdm)
* reset has occurred before the function exits.
*/
msleep(406);
+ gpio_direction_output(MDM_GPIO(mdm, AP2MDM_SOFT_RESET),
+ soft_reset_direction_de_assert);
return 0;
}