diff --git a/arm64-dts-qcom-Add-Lenovo-Yoga-C630.patch b/arm64-dts-qcom-Add-Lenovo-Yoga-C630.patch new file mode 100644 index 000000000..f823a810b --- /dev/null +++ b/arm64-dts-qcom-Add-Lenovo-Yoga-C630.patch @@ -0,0 +1,623 @@ +From patchwork Thu Sep 5 14:51:12 2019 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Lee Jones +X-Patchwork-Id: 11133293 +Return-Path: + +Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org + [172.30.200.123]) + by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id EF29913BD + for ; + Thu, 5 Sep 2019 14:51:26 +0000 (UTC) +Received: from bombadil.infradead.org (bombadil.infradead.org + [198.137.202.133]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by mail.kernel.org (Postfix) with ESMTPS id 1997020820 + for ; + Thu, 5 Sep 2019 14:51:27 +0000 (UTC) +Authentication-Results: mail.kernel.org; + dkim=pass (2048-bit key) header.d=lists.infradead.org + header.i=@lists.infradead.org header.b="QcCmRfwJ"; + dkim=fail reason="signature verification failed" (2048-bit key) + header.d=linaro.org header.i=@linaro.org header.b="UUIx2S2a" +DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1997020820 +Authentication-Results: mail.kernel.org; + dmarc=fail (p=none dis=none) header.from=linaro.org +Authentication-Results: mail.kernel.org; + spf=none + smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org +DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; + d=lists.infradead.org; s=bombadil.20170209; h=Sender: + Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: + List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: + Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: + Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: + References:List-Owner; bh=RFMjkhfiAb3mDQJcei/M3ErXIrcuIvXho1uY3CGaFs8=; b=QcC + mRfwJTEzsniFc2PQTDfopo/phWmprscia3e6OqRIHx0I6F8qNt3pLneLcx7MATAHPJHeD2Bfz/d1W + vk/w8leYRcdrNca/SkMK3grqwTP3XueqwIC3W59cpisOR1/MTcmZZ05pTYnppFox5HNzWRfOL6Z6r + CZvdTV7DVN0DYpv+NU1GnegQ3L8w/B1BaXGHVCPJjH/dHMLJ4OqBor2LD0dBQpYwROMamQbE3enrN + WGMNjdb3YYZU47m5stsgoivzulIOlOF5PKp+VY75IwHxck1S07mqhqxB9cmIvdEke7S9T1EpoIOJs + 2cu8v9rxofEpJNocOcSJeYiEpGj6qIA==; +Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) + by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) + id 1i5t6X-0000ra-3X; Thu, 05 Sep 2019 14:51:21 +0000 +Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]) + by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) + id 1i5t6S-0000r9-W3 + for linux-arm-kernel@lists.infradead.org; Thu, 05 Sep 2019 14:51:18 +0000 +Received: by mail-wm1-x343.google.com with SMTP id n10so3441823wmj.0 + for ; + Thu, 05 Sep 2019 07:51:16 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; + h=from:to:cc:subject:date:message-id; + bh=hP6dTKrGhmI4Li1vYBwvA5G00RWYLdiehRQLahBt/08=; + b=UUIx2S2a1OTzLYcxsOGi8vjYvnpXjIXXfjjInQmQhJrOoLVMUI4bMk0pP8K4hv5+v1 + bC+ahF3FezFlzFIlypiny7EYPPxM79sdZHZnnpe6qgrTfl/6guRvEmNJy8vpPadhocR8 + IW0JAJGxuc7RH4bWScdjpjBLvTYEo3MLTNDGuJOCB05O5AH8D6gSDZPqwaUWbITmdboy + JTOLJ37XUMxPF83r7F6BQwynpfcnLc9Ytv9w1tMp0R82MmO52QP457mar3d7PWPJu/Rw + YJb6IDjcjSjZJrr3aGvnJVnETp/zGeRsmeTgNtJe37OYQ5blm4tzTlx1dRxuMiRRs6DS + rUaA== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20161025; + h=x-gm-message-state:from:to:cc:subject:date:message-id; + bh=hP6dTKrGhmI4Li1vYBwvA5G00RWYLdiehRQLahBt/08=; + b=d2RovY2av4Dyx8Ou6LJ+nAvLFVrruV6de3b6OWCOF5mnVZA2T2tJEcsrZEGXSSpkiz + 1YxSkV7YgJJElZhqlfudvkyyxth7A1ZDQnU4x3QyppMQ5lWeHg/xT9+q+h7orxiRjQeX + 2J+SRG4WqZwcpbUSe95Wy2tPFVB5GYv1eyARjCARCpYOECeprtSl1ckDVyBJ/3G4AVLm + kB1xk3Ua101/bad3LA8IW1Zo0ld7x7u42jPYO7kJhPH8Ec/l0mrAVSIJn54PKoLu/DhW + yH6q+kD4LffmAtpj4ICo/rQdtmjV7msTJZ/Dcos9IpUPi5KoXbxWdP+NoUyaVleKhEIl + IYMA== +X-Gm-Message-State: APjAAAUQgezKycPxaZ7DvJWRiVy/0dp867xlik7J0fXQ60D99YKcuW0q + aRR9aWXTADWPSkrcTkd0a071Qw== +X-Google-Smtp-Source: + APXvYqybUDyw7bzKyC0JJlkse2i6lXau2tHY0+7iUxCwZcbyfwIDTqmYWXxNn26wfhgBAKudt68zBQ== +X-Received: by 2002:a1c:a404:: with SMTP id n4mr3206745wme.137.1567695075383; + Thu, 05 Sep 2019 07:51:15 -0700 (PDT) +Received: from localhost.localdomain ([95.147.198.36]) + by smtp.gmail.com with ESMTPSA id g201sm4376858wmg.34.2019.09.05.07.51.14 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Thu, 05 Sep 2019 07:51:14 -0700 (PDT) +From: Lee Jones +To: agross@kernel.org, robh+dt@kernel.org, mark.rutland@arm.com, + bjorn.andersson@linaro.org, arnd@arndb.de +Subject: [PATCH v4 1/1] arm64: dts: qcom: Add Lenovo Yoga C630 +Date: Thu, 5 Sep 2019 15:51:12 +0100 +Message-Id: <20190905145112.7366-1-lee.jones@linaro.org> +X-Mailer: git-send-email 2.17.1 +X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 +X-CRM114-CacheID: sfid-20190905_075117_040430_5C619449 +X-CRM114-Status: GOOD ( 14.05 ) +X-Spam-Score: -0.2 (/) +X-Spam-Report: SpamAssassin version 3.4.2 on bombadil.infradead.org summary: + Content analysis details: (-0.2 points) + pts rule name description + ---- ---------------------- + -------------------------------------------------- + -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, + no trust [2a00:1450:4864:20:0:0:0:343 listed in] + [list.dnswl.org] + -0.0 SPF_PASS SPF: sender matches SPF record + 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record + -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from + envelope-from domain + -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from + author's domain + 0.1 DKIM_SIGNED Message has a DKIM or DK signature, + not necessarily + valid + -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature +X-BeenThere: linux-arm-kernel@lists.infradead.org +X-Mailman-Version: 2.1.29 +Precedence: list +List-Id: +List-Unsubscribe: + , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: + , + +Cc: devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, + linux-kernel@vger.kernel.org, soc@kernel.org, + Lee Jones , + linux-arm-kernel@lists.infradead.org +MIME-Version: 1.0 +Content-Type: text/plain; charset="us-ascii" +Sender: "linux-arm-kernel" +Errors-To: + linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org + +From: Bjorn Andersson + +The Lenovo Yoga C630 is built on the SDM850 from Qualcomm, but this seem +to be similar enough to the SDM845 that we can reuse the sdm845.dtsi. + +Supported by this patch is: keyboard, battery monitoring, UFS storage, +USB host and Bluetooth. + +Signed-off-by: Bjorn Andersson +Reviewed-by: Vinod Koul +Acked-by: Sudeep Holla +[Lee] Reorder, change licence, remove non-upstream device node +Signed-off-by: Lee Jones +--- + +Changelog: + * Reorder nodes alphabetically + * Remove superfluous node for driver not yet upstream + * Add (then remove) 'no-dma' property + * Change licence to BSD + +arch/arm64/boot/dts/qcom/Makefile | 1 + + .../boot/dts/qcom/sdm850-lenovo-yoga-c630.dts | 446 ++++++++++++++++++ + 2 files changed, 447 insertions(+) + create mode 100644 arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts + +diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile +index 0a7e5dfce6f7..670c6c65f9e9 100644 +--- a/arch/arm64/boot/dts/qcom/Makefile ++++ b/arch/arm64/boot/dts/qcom/Makefile +@@ -12,5 +12,6 @@ dtb-$(CONFIG_ARCH_QCOM) += sdm845-cheza-r2.dtb + dtb-$(CONFIG_ARCH_QCOM) += sdm845-cheza-r3.dtb + dtb-$(CONFIG_ARCH_QCOM) += sdm845-db845c.dtb + dtb-$(CONFIG_ARCH_QCOM) += sdm845-mtp.dtb ++dtb-$(CONFIG_ARCH_QCOM) += sdm850-lenovo-yoga-c630.dtb + dtb-$(CONFIG_ARCH_QCOM) += qcs404-evb-1000.dtb + dtb-$(CONFIG_ARCH_QCOM) += qcs404-evb-4000.dtb +diff --git a/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts b/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts +new file mode 100644 +index 000000000000..ded120d3aef5 +--- /dev/null ++++ b/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts +@@ -0,0 +1,446 @@ ++// SPDX-License-Identifier: BSD-3-Clause ++/* ++ * Lenovo Yoga C630 ++ * ++ * Copyright (c) 2019, Linaro Ltd. ++ */ ++ ++/dts-v1/; ++ ++#include ++#include "sdm845.dtsi" ++#include "pm8998.dtsi" ++ ++/ { ++ model = "Lenovo Yoga C630"; ++ compatible = "lenovo,yoga-c630", "qcom,sdm845"; ++ ++ aliases { ++ hsuart0 = &uart6; ++ }; ++}; ++ ++&apps_rsc { ++ pm8998-rpmh-regulators { ++ compatible = "qcom,pm8998-rpmh-regulators"; ++ qcom,pmic-id = "a"; ++ ++ vdd-l2-l8-l17-supply = <&vreg_s3a_1p35>; ++ vdd-l7-l12-l14-l15-supply = <&vreg_s5a_2p04>; ++ ++ vreg_s2a_1p125: smps2 { ++ }; ++ ++ vreg_s3a_1p35: smps3 { ++ regulator-min-microvolt = <1352000>; ++ regulator-max-microvolt = <1352000>; ++ regulator-initial-mode = ; ++ }; ++ ++ vreg_s4a_1p8: smps4 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-initial-mode = ; ++ }; ++ ++ vreg_s5a_2p04: smps5 { ++ regulator-min-microvolt = <2040000>; ++ regulator-max-microvolt = <2040000>; ++ regulator-initial-mode = ; ++ }; ++ ++ vreg_s7a_1p025: smps7 { ++ }; ++ ++ vdd_qusb_hs0: ++ vdda_hp_pcie_core: ++ vdda_mipi_csi0_0p9: ++ vdda_mipi_csi1_0p9: ++ vdda_mipi_csi2_0p9: ++ vdda_mipi_dsi0_pll: ++ vdda_mipi_dsi1_pll: ++ vdda_qlink_lv: ++ vdda_qlink_lv_ck: ++ vdda_qrefs_0p875: ++ vdda_pcie_core: ++ vdda_pll_cc_ebi01: ++ vdda_pll_cc_ebi23: ++ vdda_sp_sensor: ++ vdda_ufs1_core: ++ vdda_ufs2_core: ++ vdda_usb1_ss_core: ++ vdda_usb2_ss_core: ++ vreg_l1a_0p875: ldo1 { ++ regulator-min-microvolt = <880000>; ++ regulator-max-microvolt = <880000>; ++ regulator-initial-mode = ; ++ }; ++ ++ vddpx_10: ++ vreg_l2a_1p2: ldo2 { ++ regulator-min-microvolt = <1200000>; ++ regulator-max-microvolt = <1200000>; ++ regulator-initial-mode = ; ++ regulator-always-on; ++ }; ++ ++ vreg_l3a_1p0: ldo3 { ++ }; ++ ++ vdd_wcss_cx: ++ vdd_wcss_mx: ++ vdda_wcss_pll: ++ vreg_l5a_0p8: ldo5 { ++ regulator-min-microvolt = <800000>; ++ regulator-max-microvolt = <800000>; ++ regulator-initial-mode = ; ++ }; ++ ++ vddpx_13: ++ vreg_l6a_1p8: ldo6 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-initial-mode = ; ++ }; ++ ++ vreg_l7a_1p8: ldo7 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-initial-mode = ; ++ }; ++ ++ vreg_l8a_1p2: ldo8 { ++ }; ++ ++ vreg_l9a_1p8: ldo9 { ++ }; ++ ++ vreg_l10a_1p8: ldo10 { ++ }; ++ ++ vreg_l11a_1p0: ldo11 { ++ }; ++ ++ vdd_qfprom: ++ vdd_qfprom_sp: ++ vdda_apc1_cs_1p8: ++ vdda_gfx_cs_1p8: ++ vdda_qrefs_1p8: ++ vdda_qusb_hs0_1p8: ++ vddpx_11: ++ vreg_l12a_1p8: ldo12 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-initial-mode = ; ++ }; ++ ++ vddpx_2: ++ vreg_l13a_2p95: ldo13 { ++ }; ++ ++ vreg_l14a_1p88: ldo14 { ++ regulator-min-microvolt = <1880000>; ++ regulator-max-microvolt = <1880000>; ++ regulator-initial-mode = ; ++ regulator-always-on; ++ }; ++ ++ vreg_l15a_1p8: ldo15 { ++ }; ++ ++ vreg_l16a_2p7: ldo16 { ++ }; ++ ++ vreg_l17a_1p3: ldo17 { ++ regulator-min-microvolt = <1304000>; ++ regulator-max-microvolt = <1304000>; ++ regulator-initial-mode = ; ++ }; ++ ++ vreg_l18a_2p7: ldo18 { ++ }; ++ ++ vreg_l19a_3p0: ldo19 { ++ regulator-min-microvolt = <3100000>; ++ regulator-max-microvolt = <3108000>; ++ regulator-initial-mode = ; ++ }; ++ ++ vreg_l20a_2p95: ldo20 { ++ regulator-min-microvolt = <2960000>; ++ regulator-max-microvolt = <2960000>; ++ regulator-initial-mode = ; ++ }; ++ ++ vreg_l21a_2p95: ldo21 { ++ }; ++ ++ vreg_l22a_2p85: ldo22 { ++ }; ++ ++ vreg_l23a_3p3: ldo23 { ++ }; ++ ++ vdda_qusb_hs0_3p1: ++ vreg_l24a_3p075: ldo24 { ++ regulator-min-microvolt = <3075000>; ++ regulator-max-microvolt = <3083000>; ++ regulator-initial-mode = ; ++ }; ++ ++ vreg_l25a_3p3: ldo25 { ++ regulator-min-microvolt = <3104000>; ++ regulator-max-microvolt = <3112000>; ++ regulator-initial-mode = ; ++ }; ++ ++ vdda_hp_pcie_1p2: ++ vdda_hv_ebi0: ++ vdda_hv_ebi1: ++ vdda_hv_ebi2: ++ vdda_hv_ebi3: ++ vdda_mipi_csi_1p25: ++ vdda_mipi_dsi0_1p2: ++ vdda_mipi_dsi1_1p2: ++ vdda_pcie_1p2: ++ vdda_ufs1_1p2: ++ vdda_ufs2_1p2: ++ vdda_usb1_ss_1p2: ++ vdda_usb2_ss_1p2: ++ vreg_l26a_1p2: ldo26 { ++ regulator-min-microvolt = <1200000>; ++ regulator-max-microvolt = <1208000>; ++ regulator-initial-mode = ; ++ }; ++ ++ vreg_l28a_3p0: ldo28 { ++ }; ++ ++ vreg_lvs1a_1p8: lvs1 { ++ }; ++ ++ vreg_lvs2a_1p8: lvs2 { ++ }; ++ }; ++}; ++ ++&apps_smmu { ++ /* TODO: Figure out how to survive booting with this enabled */ ++ status = "disabled"; ++}; ++ ++&gcc { ++ protected-clocks = , ++ , ++ ; ++}; ++ ++&i2c1 { ++ status = "okay"; ++ clock-frequency = <400000>; ++}; ++ ++&i2c3 { ++ status = "okay"; ++ clock-frequency = <400000>; ++ ++ hid@15 { ++ compatible = "hid-over-i2c"; ++ reg = <0x15>; ++ hid-descr-addr = <0x1>; ++ ++ interrupts-extended = <&tlmm 37 IRQ_TYPE_EDGE_RISING>; ++ }; ++ ++ hid@2c { ++ compatible = "hid-over-i2c"; ++ reg = <0x2c>; ++ hid-descr-addr = <0x20>; ++ ++ interrupts-extended = <&tlmm 37 IRQ_TYPE_EDGE_RISING>; ++ ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2c2_hid_active>; ++ }; ++}; ++ ++&i2c5 { ++ status = "okay"; ++ clock-frequency = <400000>; ++ ++ hid@10 { ++ compatible = "hid-over-i2c"; ++ reg = <0x10>; ++ hid-descr-addr = <0x1>; ++ ++ interrupts-extended = <&tlmm 125 IRQ_TYPE_EDGE_FALLING>; ++ ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2c6_hid_active>; ++ }; ++}; ++ ++&i2c11 { ++ status = "okay"; ++ clock-frequency = <400000>; ++ ++ hid@5c { ++ compatible = "hid-over-i2c"; ++ reg = <0x5c>; ++ hid-descr-addr = <0x1>; ++ ++ interrupts-extended = <&tlmm 92 IRQ_TYPE_LEVEL_LOW>; ++ ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2c12_hid_active>; ++ }; ++}; ++ ++&qup_i2c12_default { ++ drive-strength = <2>; ++ bias-disable; ++}; ++ ++&qup_uart6_default { ++ pinmux { ++ pins = "gpio45", "gpio46", "gpio47", "gpio48"; ++ function = "qup6"; ++ }; ++ ++ cts { ++ pins = "gpio45"; ++ bias-pull-down; ++ }; ++ ++ rts-tx { ++ pins = "gpio46", "gpio47"; ++ drive-strength = <2>; ++ bias-disable; ++ }; ++ ++ rx { ++ pins = "gpio48"; ++ bias-pull-up; ++ }; ++}; ++ ++&qupv3_id_0 { ++ status = "okay"; ++}; ++ ++&qupv3_id_1 { ++ status = "okay"; ++}; ++ ++&tlmm { ++ gpio-reserved-ranges = <0 4>, <81 4>; ++ ++ i2c2_hid_active: i2c2-hid-active { ++ pins = <37>; ++ function = "gpio"; ++ ++ input-enable; ++ bias-pull-up; ++ drive-strength = <2>; ++ }; ++ ++ i2c6_hid_active: i2c6-hid-active { ++ pins = <125>; ++ function = "gpio"; ++ ++ input-enable; ++ bias-pull-up; ++ drive-strength = <2>; ++ }; ++ ++ i2c12_hid_active: i2c12-hid-active { ++ pins = <92>; ++ function = "gpio"; ++ ++ input-enable; ++ bias-pull-up; ++ drive-strength = <2>; ++ }; ++}; ++ ++&uart6 { ++ status = "okay"; ++ ++ bluetooth { ++ compatible = "qcom,wcn3990-bt"; ++ ++ vddio-supply = <&vreg_s4a_1p8>; ++ vddxo-supply = <&vreg_l7a_1p8>; ++ vddrf-supply = <&vreg_l17a_1p3>; ++ vddch0-supply = <&vreg_l25a_3p3>; ++ max-speed = <3200000>; ++ }; ++}; ++ ++&ufs_mem_hc { ++ status = "okay"; ++ ++ vcc-supply = <&vreg_l20a_2p95>; ++ vcc-max-microamp = <600000>; ++}; ++ ++&ufs_mem_phy { ++ status = "okay"; ++ ++ vdda-phy-supply = <&vdda_ufs1_core>; ++ vdda-pll-supply = <&vdda_ufs1_1p2>; ++}; ++ ++&usb_1 { ++ status = "okay"; ++}; ++ ++&usb_1_dwc3 { ++ dr_mode = "host"; ++}; ++ ++&usb_1_hsphy { ++ status = "okay"; ++ ++ vdd-supply = <&vdda_usb1_ss_core>; ++ vdda-pll-supply = <&vdda_qusb_hs0_1p8>; ++ vdda-phy-dpdm-supply = <&vdda_qusb_hs0_3p1>; ++ ++ qcom,imp-res-offset-value = <8>; ++ qcom,hstx-trim-value = ; ++ qcom,preemphasis-level = ; ++ qcom,preemphasis-width = ; ++}; ++ ++&usb_1_qmpphy { ++ status = "okay"; ++ ++ vdda-phy-supply = <&vdda_usb1_ss_1p2>; ++ vdda-pll-supply = <&vdda_usb1_ss_core>; ++}; ++ ++&usb_2 { ++ status = "okay"; ++}; ++ ++&usb_2_dwc3 { ++ dr_mode = "host"; ++}; ++ ++&usb_2_hsphy { ++ status = "okay"; ++ ++ vdd-supply = <&vdda_usb2_ss_core>; ++ vdda-pll-supply = <&vdda_qusb_hs0_1p8>; ++ vdda-phy-dpdm-supply = <&vdda_qusb_hs0_3p1>; ++ ++ qcom,imp-res-offset-value = <8>; ++ qcom,hstx-trim-value = ; ++}; ++ ++&usb_2_qmpphy { ++ status = "okay"; ++ ++ vdda-phy-supply = <&vdda_usb2_ss_1p2>; ++ vdda-pll-supply = <&vdda_usb2_ss_core>; ++}; diff --git a/arm64-qcom-i2c-geni-Disable-DMA-processing-on-the-Lenovo-Yoga-C630.patch b/arm64-qcom-i2c-geni-Disable-DMA-processing-on-the-Lenovo-Yoga-C630.patch new file mode 100644 index 000000000..a7f7c8f20 --- /dev/null +++ b/arm64-qcom-i2c-geni-Disable-DMA-processing-on-the-Lenovo-Yoga-C630.patch @@ -0,0 +1,128 @@ +From patchwork Thu Sep 5 19:24:12 2019 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Lee Jones +X-Patchwork-Id: 11133827 +Return-Path: +Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org + [172.30.200.123]) + by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id DDFD514ED + for ; + Thu, 5 Sep 2019 19:24:19 +0000 (UTC) +Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) + by mail.kernel.org (Postfix) with ESMTP id D540020870 + for ; + Thu, 5 Sep 2019 19:24:19 +0000 (UTC) +Authentication-Results: mail.kernel.org; + dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org + header.b="j/6kUy9p" +Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand + id S1727540AbfIETYS (ORCPT + ); + Thu, 5 Sep 2019 15:24:18 -0400 +Received: from mail-wr1-f49.google.com ([209.85.221.49]:36821 "EHLO + mail-wr1-f49.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org + with ESMTP id S1726008AbfIETYS (ORCPT + ); + Thu, 5 Sep 2019 15:24:18 -0400 +Received: by mail-wr1-f49.google.com with SMTP id y19so4081592wrd.3 + for ; + Thu, 05 Sep 2019 12:24:16 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=linaro.org; s=google; + h=from:to:cc:subject:date:message-id; + bh=19vbMBbLeKgWt8VsEseKuJu+9+rmeS/Lh0ZhXOFWQYc=; + b=j/6kUy9psCaV+YLvz8j0kAZ3/WrmOU3xyh5rDOj0TwK0TnwjLtaLil9Q+C9KpFvvVG + h4R8p4cZFB0U4b/PAfc9Xt4p4xJNkAIpTzL4QRjM+nkXdDcYyiwUGkr9BRJnJmO0lyZB + zmylqwjRd1oOrTQ1tPvwqUV3OUR5u6WA+rDyhn+A516vskkns0bEICMG787HdDEwjigd + +3SR4L9u7swSDpNhqxtfPsn9UFP36sehUfgx32xUcjUhX3ls4RtX+6HCZU+rkeQuILt5 + 0qlmqliIuKXWkQe+ii/gtrK+ulFQ7lEl76YfDJyqXVo4Z357rIhVFAz+mooVn5qpscmU + E+xA== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20161025; + h=x-gm-message-state:from:to:cc:subject:date:message-id; + bh=19vbMBbLeKgWt8VsEseKuJu+9+rmeS/Lh0ZhXOFWQYc=; + b=QjFuCunKeBkoabY9fIsWTo3krapsS69k52eNtOIeLBaCd7M1lvCmItn41DcbJ5ykqT + RQ0rnlNq35x9QvKNumPai3fMZp9AWt3KpJpxbpEokltyLbkGUqRWaeYTrOtuV9P9nRmT + Yj72UBVzYj4d/G+FGq8EBesWjRyEFC51+RekvPlbRZ/h1fVW7/XAy5cO1ywnHrtNe8pQ + 7gYQJ3Xh1Y09qkiO0i8iru5PSMTK3U+vPSLWVdFOeqMh+Beins6I9mbKf+UX+xa8ECK3 + mEFjYxY57YVx+SpaKrmBwEmu9YXLgXqEif1OH1FHFiKZVQ4ABPp19D4+5JOXEV1tCwUS + B6Qw== +X-Gm-Message-State: APjAAAUM7yEkrkGZ+mbleFtCMQGsXfLQSXt2Bd+K6leuP2oAs8Vj1j9k + 4bsoJvF042q/z9+6bnLlGShjoA== +X-Google-Smtp-Source: + APXvYqyThx0kWliMdrjc7dedZ/+AhabFi7TIc04exnxhWAEkAOh7foRP8Cz8ZjjhxGJCvUyUPA4lFg== +X-Received: by 2002:adf:ea0c:: with SMTP id q12mr4172788wrm.172.1567711455933; + Thu, 05 Sep 2019 12:24:15 -0700 (PDT) +Received: from localhost.localdomain ([95.147.198.36]) + by smtp.gmail.com with ESMTPSA id + q24sm7942378wmc.3.2019.09.05.12.24.14 + (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); + Thu, 05 Sep 2019 12:24:14 -0700 (PDT) +From: Lee Jones +To: alokc@codeaurora.org, agross@kernel.org, robh+dt@kernel.org, + mark.rutland@arm.com, bjorn.andersson@linaro.org, vkoul@kernel.org, + wsa@the-dreams.de +Cc: linux-i2c@vger.kernel.org, linux-arm-msm@vger.kernel.org, + devicetree@vger.kernel.org, Lee Jones +Subject: [RESEND v3 1/1] i2c: qcom-geni: Disable DMA processing on the Lenovo + Yoga C630 +Date: Thu, 5 Sep 2019 20:24:12 +0100 +Message-Id: <20190905192412.23116-1-lee.jones@linaro.org> +X-Mailer: git-send-email 2.17.1 +Sender: linux-arm-msm-owner@vger.kernel.org +Precedence: bulk +List-ID: +X-Mailing-List: linux-arm-msm@vger.kernel.org + +We have a production-level laptop (Lenovo Yoga C630) which is exhibiting +a rather horrific bug. When I2C HID devices are being scanned for at +boot-time the QCom Geni based I2C (Serial Engine) attempts to use DMA. +When it does, the laptop reboots and the user never sees the OS. + +Attempts are being made to debug the reason for the spontaneous reboot. +No luck so far, hence the requirement for this hot-fix. This workaround +will be removed once we have a viable fix. + +Signed-off-by: Lee Jones +--- + drivers/i2c/busses/i2c-qcom-geni.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qcom-geni.c +index a89bfce5388e..17abf60c94ae 100644 +--- a/drivers/i2c/busses/i2c-qcom-geni.c ++++ b/drivers/i2c/busses/i2c-qcom-geni.c +@@ -355,11 +355,13 @@ static int geni_i2c_rx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg, + { + dma_addr_t rx_dma; + unsigned long time_left; +- void *dma_buf; ++ void *dma_buf = NULL; + struct geni_se *se = &gi2c->se; + size_t len = msg->len; + +- dma_buf = i2c_get_dma_safe_msg_buf(msg, 32); ++ if (!of_machine_is_compatible("lenovo,yoga-c630")) ++ dma_buf = i2c_get_dma_safe_msg_buf(msg, 32); ++ + if (dma_buf) + geni_se_select_mode(se, GENI_SE_DMA); + else +@@ -394,11 +396,13 @@ static int geni_i2c_tx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg, + { + dma_addr_t tx_dma; + unsigned long time_left; +- void *dma_buf; ++ void *dma_buf = NULL; + struct geni_se *se = &gi2c->se; + size_t len = msg->len; + +- dma_buf = i2c_get_dma_safe_msg_buf(msg, 32); ++ if (!of_machine_is_compatible("lenovo,yoga-c630")) ++ dma_buf = i2c_get_dma_safe_msg_buf(msg, 32); ++ + if (dma_buf) + geni_se_select_mode(se, GENI_SE_DMA); + else diff --git a/arm64-tegra-jetson-tx1-fixes.patch b/arm64-tegra-jetson-tx1-fixes.patch index 4ac5ea22a..0f476970f 100644 --- a/arm64-tegra-jetson-tx1-fixes.patch +++ b/arm64-tegra-jetson-tx1-fixes.patch @@ -1,32 +1,3 @@ -From 005e0b987019fff6013dff99f44d9f6ce68f08ad Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sat, 23 Mar 2019 17:42:18 +0000 -Subject: [PATCH 1/3] arm64: tegra210: Jetson TX1: disable WP to make SD card - work - -There's some issue with Write Protect detection on the Jetson TX1 -so just apply a quirk to disable the check for the time being. - -Signed-off-by: Peter Robinson ---- - arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi -index a96e6ee70c21..072788646cbf 100644 ---- a/arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi -+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi -@@ -1456,6 +1456,7 @@ - sdhci@700b0000 { - status = "okay"; - bus-width = <4>; -+ disable-wp; - - cd-gpios = <&gpio TEGRA_GPIO(Z, 1) GPIO_ACTIVE_LOW>; - --- -2.20.1 - From aea4a7a551fd7342299d34f04a8b75f58644ac07 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sat, 23 Mar 2019 17:45:10 +0000 diff --git a/configs/fedora/generic/arm/CONFIG_SND_SOC_ES8316 b/configs/fedora/generic/arm/CONFIG_SND_SOC_ES8316 new file mode 100644 index 000000000..c173cadd5 --- /dev/null +++ b/configs/fedora/generic/arm/CONFIG_SND_SOC_ES8316 @@ -0,0 +1 @@ +CONFIG_SND_SOC_ES8316=m diff --git a/configs/fedora/generic/arm/armv7/armv7/CONFIG_RTC_DRV_SA1100 b/configs/fedora/generic/arm/armv7/armv7/CONFIG_RTC_DRV_SA1100 new file mode 100644 index 000000000..8f0586611 --- /dev/null +++ b/configs/fedora/generic/arm/armv7/armv7/CONFIG_RTC_DRV_SA1100 @@ -0,0 +1 @@ +CONFIG_RTC_DRV_SA1100=m diff --git a/configs/fedora/generic/s390x/CONFIG_HMC_DRV b/configs/fedora/generic/s390x/CONFIG_HMC_DRV new file mode 100644 index 000000000..fc68dc34b --- /dev/null +++ b/configs/fedora/generic/s390x/CONFIG_HMC_DRV @@ -0,0 +1 @@ +CONFIG_HMC_DRV=m diff --git a/gitrev b/gitrev index 3bd0e7c00..1115a0d0d 100644 --- a/gitrev +++ b/gitrev @@ -1 +1 @@ -dd469a456047af5eb1ee0bcfc8fe61f5940ef0e0 +3b47fd5ca9ead91156bcdf6435279ad0b14a650c diff --git a/kernel-aarch64-debug.config b/kernel-aarch64-debug.config index c4ee20f57..a54b26f1b 100644 --- a/kernel-aarch64-debug.config +++ b/kernel-aarch64-debug.config @@ -5824,7 +5824,7 @@ CONFIG_SND_SOC_CX2072X=m CONFIG_SND_SOC_DMIC=m CONFIG_SND_SOC_ES7134=m # CONFIG_SND_SOC_ES7241 is not set -# CONFIG_SND_SOC_ES8316 is not set +CONFIG_SND_SOC_ES8316=m CONFIG_SND_SOC_ES8328_I2C=m CONFIG_SND_SOC_ES8328=m CONFIG_SND_SOC_ES8328_SPI=m diff --git a/kernel-aarch64.config b/kernel-aarch64.config index 306687b50..0c7c20166 100644 --- a/kernel-aarch64.config +++ b/kernel-aarch64.config @@ -5802,7 +5802,7 @@ CONFIG_SND_SOC_CX2072X=m CONFIG_SND_SOC_DMIC=m CONFIG_SND_SOC_ES7134=m # CONFIG_SND_SOC_ES7241 is not set -# CONFIG_SND_SOC_ES8316 is not set +CONFIG_SND_SOC_ES8316=m CONFIG_SND_SOC_ES8328_I2C=m CONFIG_SND_SOC_ES8328=m CONFIG_SND_SOC_ES8328_SPI=m diff --git a/kernel-armv7hl-debug.config b/kernel-armv7hl-debug.config index 1b72ba619..c941773d2 100644 --- a/kernel-armv7hl-debug.config +++ b/kernel-armv7hl-debug.config @@ -5235,7 +5235,7 @@ CONFIG_RTC_DRV_RX8581=m CONFIG_RTC_DRV_S35390A=m CONFIG_RTC_DRV_S3C=m CONFIG_RTC_DRV_S5M=m -# CONFIG_RTC_DRV_SA1100 is not set +CONFIG_RTC_DRV_SA1100=m CONFIG_RTC_DRV_SD3078=m CONFIG_RTC_DRV_SNVS=m CONFIG_RTC_DRV_STK17TA8=m @@ -5995,7 +5995,7 @@ CONFIG_SND_SOC_DAVINCI_MCASP=m CONFIG_SND_SOC_DMIC=m CONFIG_SND_SOC_ES7134=m # CONFIG_SND_SOC_ES7241 is not set -# CONFIG_SND_SOC_ES8316 is not set +CONFIG_SND_SOC_ES8316=m CONFIG_SND_SOC_ES8328_I2C=m CONFIG_SND_SOC_ES8328=m CONFIG_SND_SOC_ES8328_SPI=m diff --git a/kernel-armv7hl-lpae-debug.config b/kernel-armv7hl-lpae-debug.config index 451ea80d4..cc1e5c137 100644 --- a/kernel-armv7hl-lpae-debug.config +++ b/kernel-armv7hl-lpae-debug.config @@ -5727,7 +5727,7 @@ CONFIG_SND_SOC_DAVINCI_MCASP=m CONFIG_SND_SOC_DMIC=m CONFIG_SND_SOC_ES7134=m # CONFIG_SND_SOC_ES7241 is not set -# CONFIG_SND_SOC_ES8316 is not set +CONFIG_SND_SOC_ES8316=m CONFIG_SND_SOC_ES8328_I2C=m CONFIG_SND_SOC_ES8328=m CONFIG_SND_SOC_ES8328_SPI=m diff --git a/kernel-armv7hl-lpae.config b/kernel-armv7hl-lpae.config index a8509021e..2cf58f0ed 100644 --- a/kernel-armv7hl-lpae.config +++ b/kernel-armv7hl-lpae.config @@ -5706,7 +5706,7 @@ CONFIG_SND_SOC_DAVINCI_MCASP=m CONFIG_SND_SOC_DMIC=m CONFIG_SND_SOC_ES7134=m # CONFIG_SND_SOC_ES7241 is not set -# CONFIG_SND_SOC_ES8316 is not set +CONFIG_SND_SOC_ES8316=m CONFIG_SND_SOC_ES8328_I2C=m CONFIG_SND_SOC_ES8328=m CONFIG_SND_SOC_ES8328_SPI=m diff --git a/kernel-armv7hl.config b/kernel-armv7hl.config index 86919ea0e..2838fb368 100644 --- a/kernel-armv7hl.config +++ b/kernel-armv7hl.config @@ -5215,7 +5215,7 @@ CONFIG_RTC_DRV_RX8581=m CONFIG_RTC_DRV_S35390A=m CONFIG_RTC_DRV_S3C=m CONFIG_RTC_DRV_S5M=m -# CONFIG_RTC_DRV_SA1100 is not set +CONFIG_RTC_DRV_SA1100=m CONFIG_RTC_DRV_SD3078=m CONFIG_RTC_DRV_SNVS=m CONFIG_RTC_DRV_STK17TA8=m @@ -5974,7 +5974,7 @@ CONFIG_SND_SOC_DAVINCI_MCASP=m CONFIG_SND_SOC_DMIC=m CONFIG_SND_SOC_ES7134=m # CONFIG_SND_SOC_ES7241 is not set -# CONFIG_SND_SOC_ES8316 is not set +CONFIG_SND_SOC_ES8316=m CONFIG_SND_SOC_ES8328_I2C=m CONFIG_SND_SOC_ES8328=m CONFIG_SND_SOC_ES8328_SPI=m diff --git a/kernel-s390x-debug.config b/kernel-s390x-debug.config index 63e1de814..d45e129a8 100644 --- a/kernel-s390x-debug.config +++ b/kernel-s390x-debug.config @@ -1759,7 +1759,7 @@ CONFIG_HIGH_RES_TIMERS=y # CONFIG_HIPPI is not set CONFIG_HIST_TRIGGERS=y # CONFIG_HMC6352 is not set -# CONFIG_HMC_DRV is not set +CONFIG_HMC_DRV=m CONFIG_HOLTEK_FF=y # CONFIG_HOSTAP is not set CONFIG_HOTPLUG_CPU=y diff --git a/kernel-s390x.config b/kernel-s390x.config index 3cf96eb28..a9fa33d2f 100644 --- a/kernel-s390x.config +++ b/kernel-s390x.config @@ -1742,7 +1742,7 @@ CONFIG_HIGH_RES_TIMERS=y # CONFIG_HIPPI is not set CONFIG_HIST_TRIGGERS=y # CONFIG_HMC6352 is not set -# CONFIG_HMC_DRV is not set +CONFIG_HMC_DRV=m CONFIG_HOLTEK_FF=y # CONFIG_HOSTAP is not set CONFIG_HOTPLUG_CPU=y diff --git a/kernel.spec b/kernel.spec index 37d061947..38e7aeb8a 100644 --- a/kernel.spec +++ b/kernel.spec @@ -6,7 +6,7 @@ Summary: The Linux kernel # For a stable, released kernel, released_kernel should be 1. For rawhide # and/or a kernel built from an rc or git snapshot, released_kernel should # be 0. -%global released_kernel 0 +%global released_kernel 1 # Sign modules on x86. Make sure the config files match this setting if more # architectures are added. @@ -50,7 +50,7 @@ Summary: The Linux kernel # base_sublevel is the kernel version we're starting with and patching # on top of -- for example, 3.1-rc7-git1 starts with a 3.0 base, # which yields a base_sublevel of 0. -%define base_sublevel 2 +%define base_sublevel 3 ## If this is a released kernel ## %if 0%{?released_kernel} @@ -69,7 +69,7 @@ Summary: The Linux kernel # The next upstream release sublevel (base_sublevel+1) %define upstream_sublevel %(echo $((%{base_sublevel} + 1))) # The rc snapshot level -%global rcrev 6 +%global rcrev 1 # The git snapshot level %define gitrev 0 # Set rpm version accordingly @@ -571,6 +571,12 @@ Patch320: arm64-tegra-jetson-tx1-fixes.patch # https://www.spinics.net/lists/linux-tegra/msg43110.html Patch321: arm64-tegra-Jetson-TX2-Allow-bootloader-to-configure.patch +# QCom laptop bits +# https://patchwork.kernel.org/patch/11133827/ +Patch330: arm64-qcom-i2c-geni-Disable-DMA-processing-on-the-Lenovo-Yoga-C630.patch +# https://patchwork.kernel.org/patch/11133293/ +Patch332: arm64-dts-qcom-Add-Lenovo-Yoga-C630.patch + # 400 - IBM (ppc/s390x) patches # 500 - Temp fixes/CVEs etc @@ -839,42 +845,6 @@ if [ "%{patches}" != "%%{patches}" ] ; then done fi 2>/dev/null -patch_command='patch -p1 -F1 -s' -ApplyPatch() -{ - local patch=$1 - shift - if [ ! -f $RPM_SOURCE_DIR/$patch ]; then - exit 1 - fi - if ! grep -E "^Patch[0-9]+: $patch\$" %{_specdir}/${RPM_PACKAGE_NAME%%%%%{?variant}}.spec ; then - if [ "${patch:0:8}" != "patch-5." ] ; then - echo "ERROR: Patch $patch not listed as a source patch in specfile" - exit 1 - fi - fi 2>/dev/null - case "$patch" in - *.bz2) bunzip2 < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;; - *.gz) gunzip < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;; - *.xz) unxz < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;; - *) $patch_command ${1+"$@"} < "$RPM_SOURCE_DIR/$patch" ;; - esac -} - -# don't apply patch if it's empty -ApplyOptionalPatch() -{ - local patch=$1 - shift - if [ ! -f $RPM_SOURCE_DIR/$patch ]; then - exit 1 - fi - local C=$(wc -l $RPM_SOURCE_DIR/$patch | awk '{print $1}') - if [ "$C" -gt 9 ]; then - ApplyPatch $patch ${1+"$@"} - fi -} - # First we unpack the kernel tarball. # If this isn't the first make prep, we use links to the existing clean tarball # which speeds things up quite a bit. @@ -1839,6 +1809,36 @@ fi # # %changelog +* Mon Sep 16 2019 Laura Abbott - 5.3.0-1 +- Linux v5.3 + +* Tue Sep 10 2019 Laura Abbott - 5.3.0-0.rc8.git0.1 +- Linux v5.3-rc8 + +* Tue Sep 10 2019 Laura Abbott +- Disable debugging options. + +* Thu Sep 05 2019 Laura Abbott - 5.3.0-0.rc7.git1.1 +- Linux v5.3-rc7-2-g3b47fd5ca9ea + +* Thu Sep 05 2019 Laura Abbott +- Reenable debugging options. + +* Tue Sep 03 2019 Laura Abbott - 5.3.0-0.rc7.git0.1 +- Linux v5.3-rc7 + +* Tue Sep 03 2019 Laura Abbott +- Disable debugging options. + +* Thu Aug 29 2019 Laura Abbott - 5.3.0-0.rc6.git2.1 +- Linux v5.3-rc6-119-g9cf6b756cdf2 + +* Wed Aug 28 2019 Laura Abbott - 5.3.0-0.rc6.git1.1 +- Linux v5.3-rc6-115-g9e8312f5e160 + +* Wed Aug 28 2019 Laura Abbott +- Reenable debugging options. + * Mon Aug 26 2019 Laura Abbott - 5.3.0-0.rc6.git0.1 - Linux v5.3-rc6 diff --git a/sources b/sources index a5fbd914c..147e64fc4 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -SHA512 (linux-5.2.tar.xz) = 5a28f8a34c4e0470617f5638b7112e6252109b78f23b1eed484a228530970c7ef5c130d6e5a09cf25ea2f6a0329602dcc1ec66ce893182e15b27d99bd228789c -SHA512 (patch-5.3-rc6.xz) = 67863e79064488873309ac99b8691d3e9afa230900532675c8b8699768b2eba21409aceb0925dfc7e8a2403aed2b3de3d3fcd3c9fde08435cd4e4a643dc79a70 +SHA512 (linux-5.3.tar.xz) = 6b5edef47c319a3fa7f6c20a3e0903a5acd89ec75e32dc5f99adcb60c9fe118ea312722d9c3d27e2e3900afa2455afb86e83a8b6bb131009bc79ddbe6fb0595d