From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DEB2B3D75AB; Wed, 29 Jul 2026 20:31:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785357119; cv=none; b=i2KLdADZZcMeoYuO0gir9ic+ud3HA7gWuP/hh0/ogFWCKMAUl8jypMJCH0Ev+4bkG9op42hDK71WjczNuysKh04FqQfL/NMnh8r9eb9m3iy7NcTRlfYxDXmMmxCiBcmqtTRxZ5BL+E1A3s7mOBUr6xqjO6LSumJYY+FUALpH4ZM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785357119; c=relaxed/simple; bh=TpOPqPM0yfsdY+T7EN3hGc701SXFTUjQWJ3JCuJ9oQw=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=G6TmN93A9Pphxf20/6JnG9htuXKEfpgWxW0nqrLc3ZtL3JUISwm5cb+7aMDrPl1lrKEVaJJvapmWlX+wtM6tJT5rHP8XR9WSsePlpDonGUWFT56iTP3yLmFxiq02H+y1UScGIxijOTHvuMG65kp/AzFLmm2kFFJdOvZ/H4L8pQI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=elZPAY36; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="elZPAY36" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A80641F000E9; Wed, 29 Jul 2026 20:31:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1785357117; bh=4aKy79id/k5rZYSRIjBweFs5AzGWuqksrl9M8jcvWk4=; h=Date:Subject:To:Cc:References:From:In-Reply-To; b=elZPAY36keHsXlXbFM49u2/CGDTiCOzc9LZxYhN++GrWR+B0kFSZIEJONUae3EwAn hqjAH+kNh22vazH6aptgsmGWJezWZn0/bBGjQT9/kCihF4tvRekiuGY8FbUo5++lQV g7PqZ2evyhq/hLHKvNvN1En5GzVI0epdVZ/FRxh3ynsIVEtp6ij+5AMF+0n/lVZG/s ol5b+F7rLdOseq4TTxOHKagodTg2vYfuV07E+zg/Z+JM3eNTEK6Ckw7vZpDX9AYrRf 2eQL91UZAnu149Ej4LcblBCa6GhUGdVXmP7qBI6GdzX+trPAJSFwahtuzApj7ip1L4 E9d/F8AoTC4nA== Message-ID: <25ef6b91-62b4-4e8e-bc8f-8400dc293273@kernel.org> Date: Wed, 29 Jul 2026 21:31:50 +0100 Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v13 3/5] media: qcom: camss: Add support for PHY API devices To: Nihal Kumar Gupta , Bryan O'Donoghue , Bjorn Andersson , Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Robert Foss , Todor Tomov , Mauro Carvalho Chehab , Konrad Dybcio , Vladimir Zapolskiy , Loic Poulain , Vinod Koul , Neil Armstrong Cc: linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linux-phy@lists.infradead.org, Krzysztof Kozlowski References: <20260728-b4-linux-next-25-03-13-dtsi-x1e80100-camss-v13-0-ae811e2f0799@linaro.org> <20260728-b4-linux-next-25-03-13-dtsi-x1e80100-camss-v13-3-ae811e2f0799@linaro.org> <8210513c-288b-4d02-9688-1de10e40d9f9@oss.qualcomm.com> From: Bryan O'Donoghue Content-Language: en-GB Autocrypt: addr=bod@kernel.org; keydata= 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 In-Reply-To: <8210513c-288b-4d02-9688-1de10e40d9f9@oss.qualcomm.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 29/07/2026 14:45, Nihal Kumar Gupta wrote: > > > On 28-07-2026 15:05, Bryan O'Donoghue wrote: >> + ret = PTR_ERR(csd); >> + goto err_cleanup; >> + } >> + } >> + >> if (IS_ERR(csd)) { >> ret = PTR_ERR(csd); >> goto err_cleanup; >> @@ -4819,6 +4854,29 @@ static int camss_parse_ports(struct camss *camss) >> return ret; >> } > Hi Bryan, > > While rebasing Glymur on the following series I found an issue — > Could you please review the changes below. > > Tested on > 1. Glymur CRD with OV08X40, working as expected. > 2. Monaco EVK with IMX577(legacy path) — working as expected. > > Picked up following for testing: > - PHY driver: Add a CSI2 MIPI DPHY driver [v14] > - CAMSS PHY API: Add dt-bindings and PHY updates for CAMSS on x1e80100 silicon [v13] > - Below patchset > - Glymur DT binding/DTS: locally > > Holding off formal submission until the above stabilise. > > ---------------------------------------------------------------------- > From b86af6812bb655e885dbcd23ffd28c92177017cd Mon Sep 17 00:00:00 2001 > From: Nihal Kumar Gupta > Date: Wed, 29 Jul 2026 18:18:54 +0530 > Subject: [PATCH] media: qcom: camss: Read lane config from PHY endpoint for > PHY API path > > In the new PHY API topology the CAMSS endpoint carries only port/ID > information. The bus-type and data-lane configuration are described on > the PHY node's sensor-side endpoint (port@0), not on the CAMSS endpoint. So I don't think this model is in-keep with established DT practices - if a driver needs to parse a property it needs to have that property in the device node it handles. So with data-lanes per existing camss bindings in the IFE/CSID node everything though should work as-is for you. https://gitlab.com/Linaro/arm64-laptops/linux/-/tree/arm64-laptops-v7.2-rc2-camss-v11?ref_type=heads https://gitlab.com/Linaro/arm64-laptops/linux/-/blob/arm64-laptops-v7.2-rc2-camss-v11/arch/arm64/boot/dts/qcom/x1-crd.dtsi?ref_type=heads#L947 &camss { status = "okay"; ports { /* * port0 => csiphy0 * port1 => csiphy1 * port2 => csiphy2 * port3 => csiphy4 */ port@3 { camss_csiphy4_inep: endpoint { data-lanes = <0 1 2 3>; remote-endpoint = <&csiphy4_out_ep>; }; }; }; }; &cci1 { status = "okay"; }; &cci1_i2c1 { camera@36 { compatible = "ovti,ov08x40"; reg = <0x36>; reset-gpios = <&tlmm 237 GPIO_ACTIVE_LOW>; pinctrl-0 = <&cam_rgb_default>; pinctrl-names = "default"; clocks = <&camcc CAM_CC_MCLK4_CLK>; assigned-clocks = <&camcc CAM_CC_MCLK4_CLK>; assigned-clock-rates = <19200000>; orientation = <0>; /* front facing */ avdd-supply = <&vreg_l7b_2p8>; dovdd-supply = <&vreg_l3m_1p8>; port { ov08x40_out_ep: endpoint { data-lanes = <1 2 3 4>; link-frequencies = /bits/ 64 <400000000>; remote-endpoint = <&csiphy4_in_ep>; }; }; }; }; &csiphy4 { vdda-0p9-supply = <&vreg_l2c_0p8>; vdda-1p2-supply = <&vreg_l1c_1p2>; status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; csiphy4_in_ep: endpoint { bus-type = ; data-lanes = <0 1 2 3>; remote-endpoint = <&ov08x40_out_ep>; }; }; port@1 { reg = <1>; csiphy4_out_ep: endpoint { remote-endpoint = <&camss_csiphy4_inep>; }; }; }; }; > Add a phy_in parameter to camss_parse_endpoint_node(). Extract csiphy_id > from the CAMSS endpoint port number and read bus-type and lane properties > from phy_in. Check fwnode_device_is_available() on the PHY node and skip > disabled PHYs. Fix missing fwnode_handle_put() on the disabled-PHY early > exit path. For legacy DTS phy_in is the CAMSS endpoint itself so existing > behaviour is preserved. > > Signed-off-by: Nihal Kumar Gupta > --- > drivers/media/platform/qcom/camss/camss.c | 49 +++++++++++++++++------ > 1 file changed, 36 insertions(+), 13 deletions(-) > > diff --git a/drivers/media/platform/qcom/camss/camss.c b/drivers/media/platform/qcom/camss/camss.c > index 84097d82d99c..7254f2b28eb0 100644 > --- a/drivers/media/platform/qcom/camss/camss.c > +++ b/drivers/media/platform/qcom/camss/camss.c > @@ -4742,11 +4742,13 @@ static const struct parent_dev_ops vfe_parent_dev_ops = { > */ > static int camss_parse_endpoint_node(struct device *dev, > struct fwnode_handle *ep, > + struct fwnode_handle *phy_in, > struct camss_async_subdev *csd) > { > struct csiphy_lanes_cfg *lncfg = &csd->interface.csi2.lane_cfg; > struct v4l2_mbus_config_mipi_csi2 *mipi_csi2; > struct v4l2_fwnode_endpoint vep = { { 0 } }; > + struct v4l2_fwnode_endpoint phy_vep = { { 0 } }; > unsigned int i; > int ret; > > @@ -4754,18 +4756,26 @@ static int camss_parse_endpoint_node(struct device *dev, > if (ret) > return ret; > > + csd->interface.csiphy_id = vep.base.port; > + > + /* bus-type and lane config from csiphy endpoint (phy_in) */ > + ret = v4l2_fwnode_endpoint_parse(phy_in, &phy_vep); > + if (ret) { > + dev_err(dev, "parse_endpoint: failed to parse phy_in ep (%pfw): %d\n", > + phy_in, ret); > + return ret; > + } > + > /* > * Most SoCs support both D-PHY and C-PHY standards, but currently only > * D-PHY is supported in the driver. > */ > - if (vep.bus_type != V4L2_MBUS_CSI2_DPHY) { > - dev_err(dev, "Unsupported bus type %d\n", vep.bus_type); > + if (phy_vep.bus_type != V4L2_MBUS_CSI2_DPHY) { > + dev_err(dev, "Unsupported bus type %d\n", phy_vep.bus_type); > return -EINVAL; > } > > - csd->interface.csiphy_id = vep.base.port; > - > - mipi_csi2 = &vep.bus.mipi_csi2; > + mipi_csi2 = &phy_vep.bus.mipi_csi2; > lncfg->clk.pos = mipi_csi2->clock_lane; > lncfg->clk.pol = mipi_csi2->lane_polarities[0]; > lncfg->num_data = mipi_csi2->num_data_lanes; > @@ -4798,15 +4808,15 @@ static int camss_parse_ports(struct camss *camss) > > fwnode_graph_for_each_endpoint(fwnode, ep) { > struct camss_async_subdev *csd; > - > - if (!fwnode_device_is_available(ep)) > - continue; > + struct fwnode_handle *phy_in; > > if (camss->legacy_phy) { > csd = v4l2_async_nf_add_fwnode_remote(&camss->notifier, ep, > typeof(*csd)); > + /* legacy DTS has bus-type/data-lanes on the camss endpoint */ > + phy_in = fwnode_handle_get(ep); > } else { > - struct fwnode_handle *phy_out, *phy_node, *phy_in, *sensor_ep; > + struct fwnode_handle *phy_out, *phy_node, *sensor_ep; > > phy_out = fwnode_graph_get_remote_endpoint(ep); > if (!phy_out) > @@ -4817,31 +4827,44 @@ static int camss_parse_ports(struct camss *camss) > if (!phy_node) > continue; > > + if (!fwnode_device_is_available(phy_node)) { > + dev_info(dev, "parse_ports: phy_node=%s disabled\n", > + of_node_full_name(to_of_node(phy_node))); > + continue; > + }; This is a correct change I can take into my patch - I'll add you down as Co-developed by. > + > + /* port@0 of the phy node is the sensor-side input port */ > phy_in = fwnode_graph_get_endpoint_by_id(phy_node, 0, 0, 0); > fwnode_handle_put(phy_node); > - if (!phy_in) > + if (!phy_in) { > + dev_info(dev, "parse_ports: csiphy port@0 has no endpoint, skip\n"); > continue; > + }; > > sensor_ep = fwnode_graph_get_remote_endpoint(phy_in); > - fwnode_handle_put(phy_in); > - if (!sensor_ep) > + if (!sensor_ep) { > + fwnode_handle_put(phy_in); > continue; > + }; > > csd = v4l2_async_nf_add_fwnode(&camss->notifier, sensor_ep, > struct camss_async_subdev); > fwnode_handle_put(sensor_ep); > if (IS_ERR(csd)) { > + fwnode_handle_put(phy_in); > ret = PTR_ERR(csd); > goto err_cleanup; > } > } > > if (IS_ERR(csd)) { > + fwnode_handle_put(phy_in); > ret = PTR_ERR(csd); > goto err_cleanup; > } > > - ret = camss_parse_endpoint_node(dev, ep, csd); > + ret = camss_parse_endpoint_node(dev, ep, phy_in, csd); > + fwnode_handle_put(phy_in); > if (ret < 0) > goto err_cleanup; > } > -- > 2.34.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 2A051C54F51 for ; Wed, 29 Jul 2026 20:32:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=SshJEWqeeiCWya71DHoXpeQ90NsMGkxDMho1yAqhkWw=; b=hDZxstJmWLhNkK vDP+AEJwLx0wkvsXfDqE+AwxWW3V6U/SI+RLDq6F7mo2l09q6m89jw5N1vr4saI2UeXqYRkIX0cO0 toJZyeHUBm1m8Tc6ow4uYw8FXrEswKkK0cCiiH6XalOyzRyp1JbN+jAKrnJBWsmz0mJpVKLcrRQ13 P1jqdJRmEs2aPgx0NwvbWi2vCT4RsCKsGsk4fNNyWL3pxf1MBRCy/mC1vX1t55EtQDscZyO6UAnAO LSzqr+604p5tABcYV84hFwQ64QP64BYeXekWhr4nxP3xpnZpWEWNto5PZ2HWN/7Z7FRwezgYIN7hu 0FtjwU6hOzzeJzrHGG4w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wpAwa-00000008xgr-3GWS; Wed, 29 Jul 2026 20:32:00 +0000 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wpAwY-00000008xgY-3eFf for linux-phy@lists.infradead.org; Wed, 29 Jul 2026 20:31:59 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 81FD26001D; Wed, 29 Jul 2026 20:31:57 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A80641F000E9; Wed, 29 Jul 2026 20:31:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1785357117; bh=4aKy79id/k5rZYSRIjBweFs5AzGWuqksrl9M8jcvWk4=; h=Date:Subject:To:Cc:References:From:In-Reply-To; b=elZPAY36keHsXlXbFM49u2/CGDTiCOzc9LZxYhN++GrWR+B0kFSZIEJONUae3EwAn hqjAH+kNh22vazH6aptgsmGWJezWZn0/bBGjQT9/kCihF4tvRekiuGY8FbUo5++lQV g7PqZ2evyhq/hLHKvNvN1En5GzVI0epdVZ/FRxh3ynsIVEtp6ij+5AMF+0n/lVZG/s ol5b+F7rLdOseq4TTxOHKagodTg2vYfuV07E+zg/Z+JM3eNTEK6Ckw7vZpDX9AYrRf 2eQL91UZAnu149Ej4LcblBCa6GhUGdVXmP7qBI6GdzX+trPAJSFwahtuzApj7ip1L4 E9d/F8AoTC4nA== Message-ID: <25ef6b91-62b4-4e8e-bc8f-8400dc293273@kernel.org> Date: Wed, 29 Jul 2026 21:31:50 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v13 3/5] media: qcom: camss: Add support for PHY API devices To: Nihal Kumar Gupta , Bryan O'Donoghue , Bjorn Andersson , Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Robert Foss , Todor Tomov , Mauro Carvalho Chehab , Konrad Dybcio , Vladimir Zapolskiy , Loic Poulain , Vinod Koul , Neil Armstrong Cc: linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linux-phy@lists.infradead.org, Krzysztof Kozlowski References: <20260728-b4-linux-next-25-03-13-dtsi-x1e80100-camss-v13-0-ae811e2f0799@linaro.org> <20260728-b4-linux-next-25-03-13-dtsi-x1e80100-camss-v13-3-ae811e2f0799@linaro.org> <8210513c-288b-4d02-9688-1de10e40d9f9@oss.qualcomm.com> From: Bryan O'Donoghue Content-Language: en-GB Autocrypt: addr=bod@kernel.org; keydata= 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 In-Reply-To: <8210513c-288b-4d02-9688-1de10e40d9f9@oss.qualcomm.com> X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org T24gMjkvMDcvMjAyNiAxNDo0NSwgTmloYWwgS3VtYXIgR3VwdGEgd3JvdGU6Cj4gCj4gCj4gT24g MjgtMDctMjAyNiAxNTowNSwgQnJ5YW4gTydEb25vZ2h1ZSB3cm90ZToKPj4gKwkJCQlyZXQgPSBQ VFJfRVJSKGNzZCk7Cj4+ICsJCQkJZ290byBlcnJfY2xlYW51cDsKPj4gKwkJCX0KPj4gKwkJfQo+ PiArCj4+ICAgCQlpZiAoSVNfRVJSKGNzZCkpIHsKPj4gICAJCQlyZXQgPSBQVFJfRVJSKGNzZCk7 Cj4+ICAgCQkJZ290byBlcnJfY2xlYW51cDsKPj4gQEAgLTQ4MTksNiArNDg1NCwyOSBAQCBzdGF0 aWMgaW50IGNhbXNzX3BhcnNlX3BvcnRzKHN0cnVjdCBjYW1zcyAqY2Ftc3MpCj4+ICAgCXJldHVy biByZXQ7Cj4+ICAgfQo+IEhpIEJyeWFuLAo+IAo+IFdoaWxlIHJlYmFzaW5nIEdseW11ciBvbiB0 aGUgZm9sbG93aW5nIHNlcmllcyBJIGZvdW5kIGFuIGlzc3VlIOKAlAo+IENvdWxkIHlvdSBwbGVh c2UgcmV2aWV3IHRoZSBjaGFuZ2VzIGJlbG93Lgo+IAo+IFRlc3RlZCBvbgo+IDEuIEdseW11ciBD UkQgd2l0aCBPVjA4WDQwLCB3b3JraW5nIGFzIGV4cGVjdGVkLgo+IDIuIE1vbmFjbyBFVksgd2l0 aCBJTVg1NzcobGVnYWN5IHBhdGgpIOKAlCB3b3JraW5nIGFzIGV4cGVjdGVkLgo+IAo+IFBpY2tl ZCB1cCBmb2xsb3dpbmcgZm9yIHRlc3Rpbmc6Cj4gLSBQSFkgZHJpdmVyOiAgICAgQWRkIGEgQ1NJ MiBNSVBJIERQSFkgZHJpdmVyIFt2MTRdCj4gLSBDQU1TUyBQSFkgQVBJOiAgQWRkIGR0LWJpbmRp bmdzIGFuZCBQSFkgdXBkYXRlcyBmb3IgQ0FNU1Mgb24geDFlODAxMDAgc2lsaWNvbiBbdjEzXQo+ IC0gQmVsb3cgcGF0Y2hzZXQKPiAtIEdseW11ciBEVCBiaW5kaW5nL0RUUzogbG9jYWxseQo+IAo+ IEhvbGRpbmcgb2ZmIGZvcm1hbCBzdWJtaXNzaW9uIHVudGlsIHRoZSBhYm92ZSBzdGFiaWxpc2Uu Cj4gCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBGcm9tIGI4NmFmNjgxMmJiNjU1ZTg4NWRiY2QyM2ZmZDI4 YzkyMTc3MDE3Y2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCj4gRnJvbTogTmloYWwgS3VtYXIg R3VwdGEgPG5paGFsLmd1cHRhQG9zcy5xdWFsY29tbS5jb20+Cj4gRGF0ZTogV2VkLCAyOSBKdWwg MjAyNiAxODoxODo1NCArMDUzMAo+IFN1YmplY3Q6IFtQQVRDSF0gbWVkaWE6IHFjb206IGNhbXNz OiBSZWFkIGxhbmUgY29uZmlnIGZyb20gUEhZIGVuZHBvaW50IGZvcgo+ICAgUEhZIEFQSSBwYXRo Cj4gCj4gSW4gdGhlIG5ldyBQSFkgQVBJIHRvcG9sb2d5IHRoZSBDQU1TUyBlbmRwb2ludCBjYXJy aWVzIG9ubHkgcG9ydC9JRAo+IGluZm9ybWF0aW9uLiBUaGUgYnVzLXR5cGUgYW5kIGRhdGEtbGFu ZSBjb25maWd1cmF0aW9uIGFyZSBkZXNjcmliZWQgb24KPiB0aGUgUEhZIG5vZGUncyBzZW5zb3It c2lkZSBlbmRwb2ludCAocG9ydEAwKSwgbm90IG9uIHRoZSBDQU1TUyBlbmRwb2ludC4KClNvIEkg ZG9uJ3QgdGhpbmsgdGhpcyBtb2RlbCBpcyBpbi1rZWVwIHdpdGggZXN0YWJsaXNoZWQgRFQgcHJh Y3RpY2VzIC0gCmlmIGEgZHJpdmVyIG5lZWRzIHRvIHBhcnNlIGEgcHJvcGVydHkgaXQgbmVlZHMg dG8gaGF2ZSB0aGF0IHByb3BlcnR5IGluIAp0aGUgZGV2aWNlIG5vZGUgaXQgaGFuZGxlcy4KClNv IHdpdGggZGF0YS1sYW5lcyBwZXIgZXhpc3RpbmcgY2Ftc3MgYmluZGluZ3MgaW4gdGhlIElGRS9D U0lEIG5vZGUgCmV2ZXJ5dGhpbmcgdGhvdWdoIHNob3VsZCB3b3JrIGFzLWlzIGZvciB5b3UuCgpo dHRwczovL2dpdGxhYi5jb20vTGluYXJvL2FybTY0LWxhcHRvcHMvbGludXgvLS90cmVlL2FybTY0 LWxhcHRvcHMtdjcuMi1yYzItY2Ftc3MtdjExP3JlZl90eXBlPWhlYWRzCgpodHRwczovL2dpdGxh Yi5jb20vTGluYXJvL2FybTY0LWxhcHRvcHMvbGludXgvLS9ibG9iL2FybTY0LWxhcHRvcHMtdjcu Mi1yYzItY2Ftc3MtdjExL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS94MS1jcmQuZHRzaT9yZWZf dHlwZT1oZWFkcyNMOTQ3CgomY2Ftc3MgewoJc3RhdHVzID0gIm9rYXkiOwoKCXBvcnRzIHsKCQkv KgoJCSAqIHBvcnQwID0+IGNzaXBoeTAKCQkgKiBwb3J0MSA9PiBjc2lwaHkxCgkJICogcG9ydDIg PT4gY3NpcGh5MgoJCSAqIHBvcnQzID0+IGNzaXBoeTQKCQkgKi8KCQlwb3J0QDMgewoJCQljYW1z c19jc2lwaHk0X2luZXA6IGVuZHBvaW50IHsKCQkJCWRhdGEtbGFuZXMgPSA8MCAxIDIgMz47CgkJ CQlyZW1vdGUtZW5kcG9pbnQgPSA8JmNzaXBoeTRfb3V0X2VwPjsKCQkJfTsKCQl9OwoJfTsKfTsK CiZjY2kxIHsKCXN0YXR1cyA9ICJva2F5IjsKfTsKCiZjY2kxX2kyYzEgewoJY2FtZXJhQDM2IHsK CQljb21wYXRpYmxlID0gIm92dGksb3YwOHg0MCI7CgkJcmVnID0gPDB4MzY+OwoKCQlyZXNldC1n cGlvcyA9IDwmdGxtbSAyMzcgR1BJT19BQ1RJVkVfTE9XPjsKCQlwaW5jdHJsLTAgPSA8JmNhbV9y Z2JfZGVmYXVsdD47CgkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKCgkJY2xvY2tzID0gPCZj YW1jYyBDQU1fQ0NfTUNMSzRfQ0xLPjsKCQlhc3NpZ25lZC1jbG9ja3MgPSA8JmNhbWNjIENBTV9D Q19NQ0xLNF9DTEs+OwoJCWFzc2lnbmVkLWNsb2NrLXJhdGVzID0gPDE5MjAwMDAwPjsKCgkJb3Jp ZW50YXRpb24gPSA8MD47IC8qIGZyb250IGZhY2luZyAqLwoKCQlhdmRkLXN1cHBseSA9IDwmdnJl Z19sN2JfMnA4PjsKCQlkb3ZkZC1zdXBwbHkgPSA8JnZyZWdfbDNtXzFwOD47CgoJCXBvcnQgewoJ CQlvdjA4eDQwX291dF9lcDogZW5kcG9pbnQgewoJCQkJZGF0YS1sYW5lcyA9IDwxIDIgMyA0PjsK CQkJCWxpbmstZnJlcXVlbmNpZXMgPSAvYml0cy8gNjQgPDQwMDAwMDAwMD47CgkJCQlyZW1vdGUt ZW5kcG9pbnQgPSA8JmNzaXBoeTRfaW5fZXA+OwoJCQl9OwoJCX07Cgl9Owp9OwoKJmNzaXBoeTQg ewoJdmRkYS0wcDktc3VwcGx5ID0gPCZ2cmVnX2wyY18wcDg+OwoJdmRkYS0xcDItc3VwcGx5ID0g PCZ2cmVnX2wxY18xcDI+OwoKCXN0YXR1cyA9ICJva2F5IjsKCglwb3J0cyB7CgkJI2FkZHJlc3Mt Y2VsbHMgPSA8MT47CgkJI3NpemUtY2VsbHMgPSA8MD47CgoJCXBvcnRAMCB7CgkJCXJlZyA9IDww PjsKCQkJY3NpcGh5NF9pbl9lcDogZW5kcG9pbnQgewoJCQkJYnVzLXR5cGUgPSA8TUVESUFfQlVT X1RZUEVfQ1NJMl9EUEhZPjsKCQkJCWRhdGEtbGFuZXMgPSA8MCAxIDIgMz47CgkJCQlyZW1vdGUt ZW5kcG9pbnQgPSA8Jm92MDh4NDBfb3V0X2VwPjsKCQkJfTsKCQl9OwoKCQlwb3J0QDEgewoJCQly ZWcgPSA8MT47CgkJCWNzaXBoeTRfb3V0X2VwOiBlbmRwb2ludCB7CgkJCQlyZW1vdGUtZW5kcG9p bnQgPSA8JmNhbXNzX2NzaXBoeTRfaW5lcD47CgkJCX07CgkJfTsKCX07Cn07CgoKPiBBZGQgYSBw aHlfaW4gcGFyYW1ldGVyIHRvIGNhbXNzX3BhcnNlX2VuZHBvaW50X25vZGUoKS4gRXh0cmFjdCBj c2lwaHlfaWQKPiBmcm9tIHRoZSBDQU1TUyBlbmRwb2ludCBwb3J0IG51bWJlciBhbmQgcmVhZCBi dXMtdHlwZSBhbmQgbGFuZSBwcm9wZXJ0aWVzCj4gZnJvbSBwaHlfaW4uIENoZWNrIGZ3bm9kZV9k ZXZpY2VfaXNfYXZhaWxhYmxlKCkgb24gdGhlIFBIWSBub2RlIGFuZCBza2lwCj4gZGlzYWJsZWQg UEhZcy4gRml4IG1pc3NpbmcgZndub2RlX2hhbmRsZV9wdXQoKSBvbiB0aGUgZGlzYWJsZWQtUEhZ IGVhcmx5Cj4gZXhpdCBwYXRoLiBGb3IgbGVnYWN5IERUUyBwaHlfaW4gaXMgdGhlIENBTVNTIGVu ZHBvaW50IGl0c2VsZiBzbyBleGlzdGluZwo+IGJlaGF2aW91ciBpcyBwcmVzZXJ2ZWQuCj4gCj4g U2lnbmVkLW9mZi1ieTogTmloYWwgS3VtYXIgR3VwdGEgPG5paGFsLmd1cHRhQG9zcy5xdWFsY29t bS5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vY2Ftc3MvY2Ftc3Mu YyB8IDQ5ICsrKysrKysrKysrKysrKysrLS0tLS0tCj4gICAxIGZpbGUgY2hhbmdlZCwgMzYgaW5z ZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vcWNvbS9jYW1zcy9jYW1zcy5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9x Y29tL2NhbXNzL2NhbXNzLmMKPiBpbmRleCA4NDA5N2Q4MmQ5OWMuLjcyNTRmMmIyOGViMCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vY2Ftc3MvY2Ftc3MuYwo+ICsr KyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9jYW1zcy9jYW1zcy5jCj4gQEAgLTQ3NDIs MTEgKzQ3NDIsMTMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwYXJlbnRfZGV2X29wcyB2ZmVfcGFy ZW50X2Rldl9vcHMgPSB7Cj4gICAgKi8KPiAgIHN0YXRpYyBpbnQgY2Ftc3NfcGFyc2VfZW5kcG9p bnRfbm9kZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gICAJCQkJICAgICBzdHJ1Y3QgZndub2RlX2hh bmRsZSAqZXAsCj4gKwkJCQkgICAgIHN0cnVjdCBmd25vZGVfaGFuZGxlICpwaHlfaW4sCj4gICAJ CQkJICAgICBzdHJ1Y3QgY2Ftc3NfYXN5bmNfc3ViZGV2ICpjc2QpCj4gICB7Cj4gICAJc3RydWN0 IGNzaXBoeV9sYW5lc19jZmcgKmxuY2ZnID0gJmNzZC0+aW50ZXJmYWNlLmNzaTIubGFuZV9jZmc7 Cj4gICAJc3RydWN0IHY0bDJfbWJ1c19jb25maWdfbWlwaV9jc2kyICptaXBpX2NzaTI7Cj4gICAJ c3RydWN0IHY0bDJfZndub2RlX2VuZHBvaW50IHZlcCA9IHsgeyAwIH0gfTsKPiArCXN0cnVjdCB2 NGwyX2Z3bm9kZV9lbmRwb2ludCBwaHlfdmVwID0geyB7IDAgfSB9Owo+ICAgCXVuc2lnbmVkIGlu dCBpOwo+ICAgCWludCByZXQ7Cj4gCj4gQEAgLTQ3NTQsMTggKzQ3NTYsMjYgQEAgc3RhdGljIGlu dCBjYW1zc19wYXJzZV9lbmRwb2ludF9ub2RlKHN0cnVjdCBkZXZpY2UgKmRldiwKPiAgIAlpZiAo cmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+IAo+ICsJY3NkLT5pbnRlcmZhY2UuY3NpcGh5X2lkID0g dmVwLmJhc2UucG9ydDsKPiArCj4gKwkvKiBidXMtdHlwZSBhbmQgbGFuZSBjb25maWcgZnJvbSBj c2lwaHkgZW5kcG9pbnQgKHBoeV9pbikgKi8KPiArCXJldCA9IHY0bDJfZndub2RlX2VuZHBvaW50 X3BhcnNlKHBoeV9pbiwgJnBoeV92ZXApOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoZGV2 LCAicGFyc2VfZW5kcG9pbnQ6IGZhaWxlZCB0byBwYXJzZSBwaHlfaW4gZXAgKCVwZncpOiAlZFxu IiwKPiArCQkJcGh5X2luLCByZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICAgCS8q Cj4gICAJICogTW9zdCBTb0NzIHN1cHBvcnQgYm90aCBELVBIWSBhbmQgQy1QSFkgc3RhbmRhcmRz LCBidXQgY3VycmVudGx5IG9ubHkKPiAgIAkgKiBELVBIWSBpcyBzdXBwb3J0ZWQgaW4gdGhlIGRy aXZlci4KPiAgIAkgKi8KPiAtCWlmICh2ZXAuYnVzX3R5cGUgIT0gVjRMMl9NQlVTX0NTSTJfRFBI WSkgewo+IC0JCWRldl9lcnIoZGV2LCAiVW5zdXBwb3J0ZWQgYnVzIHR5cGUgJWRcbiIsIHZlcC5i dXNfdHlwZSk7Cj4gKwlpZiAocGh5X3ZlcC5idXNfdHlwZSAhPSBWNEwyX01CVVNfQ1NJMl9EUEhZ KSB7Cj4gKwkJZGV2X2VycihkZXYsICJVbnN1cHBvcnRlZCBidXMgdHlwZSAlZFxuIiwgcGh5X3Zl cC5idXNfdHlwZSk7Cj4gICAJCXJldHVybiAtRUlOVkFMOwo+ICAgCX0KPiAKPiAtCWNzZC0+aW50 ZXJmYWNlLmNzaXBoeV9pZCA9IHZlcC5iYXNlLnBvcnQ7Cj4gLQo+IC0JbWlwaV9jc2kyID0gJnZl cC5idXMubWlwaV9jc2kyOwo+ICsJbWlwaV9jc2kyID0gJnBoeV92ZXAuYnVzLm1pcGlfY3NpMjsK PiAgIAlsbmNmZy0+Y2xrLnBvcyA9IG1pcGlfY3NpMi0+Y2xvY2tfbGFuZTsKPiAgIAlsbmNmZy0+ Y2xrLnBvbCA9IG1pcGlfY3NpMi0+bGFuZV9wb2xhcml0aWVzWzBdOwo+ICAgCWxuY2ZnLT5udW1f ZGF0YSA9IG1pcGlfY3NpMi0+bnVtX2RhdGFfbGFuZXM7Cj4gQEAgLTQ3OTgsMTUgKzQ4MDgsMTUg QEAgc3RhdGljIGludCBjYW1zc19wYXJzZV9wb3J0cyhzdHJ1Y3QgY2Ftc3MgKmNhbXNzKQo+IAo+ ICAgCWZ3bm9kZV9ncmFwaF9mb3JfZWFjaF9lbmRwb2ludChmd25vZGUsIGVwKSB7Cj4gICAJCXN0 cnVjdCBjYW1zc19hc3luY19zdWJkZXYgKmNzZDsKPiAtCj4gLQkJaWYgKCFmd25vZGVfZGV2aWNl X2lzX2F2YWlsYWJsZShlcCkpCj4gLQkJCWNvbnRpbnVlOwo+ICsJCXN0cnVjdCBmd25vZGVfaGFu ZGxlICpwaHlfaW47Cj4gCj4gICAJCWlmIChjYW1zcy0+bGVnYWN5X3BoeSkgewo+ICAgCQkJY3Nk ID0gdjRsMl9hc3luY19uZl9hZGRfZndub2RlX3JlbW90ZSgmY2Ftc3MtPm5vdGlmaWVyLCBlcCwK PiAgIAkJCQkJCQkgICAgICB0eXBlb2YoKmNzZCkpOwo+ICsJCQkvKiBsZWdhY3kgRFRTIGhhcyBi dXMtdHlwZS9kYXRhLWxhbmVzIG9uIHRoZSBjYW1zcyBlbmRwb2ludCAqLwo+ICsJCQlwaHlfaW4g PSBmd25vZGVfaGFuZGxlX2dldChlcCk7Cj4gICAJCX0gZWxzZSB7Cj4gLQkJCXN0cnVjdCBmd25v ZGVfaGFuZGxlICpwaHlfb3V0LCAqcGh5X25vZGUsICpwaHlfaW4sICpzZW5zb3JfZXA7Cj4gKwkJ CXN0cnVjdCBmd25vZGVfaGFuZGxlICpwaHlfb3V0LCAqcGh5X25vZGUsICpzZW5zb3JfZXA7Cj4g Cj4gICAJCQlwaHlfb3V0ID0gZndub2RlX2dyYXBoX2dldF9yZW1vdGVfZW5kcG9pbnQoZXApOwo+ ICAgCQkJaWYgKCFwaHlfb3V0KQo+IEBAIC00ODE3LDMxICs0ODI3LDQ0IEBAIHN0YXRpYyBpbnQg Y2Ftc3NfcGFyc2VfcG9ydHMoc3RydWN0IGNhbXNzICpjYW1zcykKPiAgIAkJCWlmICghcGh5X25v ZGUpCj4gICAJCQkJY29udGludWU7Cj4gCj4gKwkJCWlmICghZndub2RlX2RldmljZV9pc19hdmFp bGFibGUocGh5X25vZGUpKSB7Cj4gKwkJCQlkZXZfaW5mbyhkZXYsICJwYXJzZV9wb3J0czogcGh5 X25vZGU9JXMgZGlzYWJsZWRcbiIsCj4gKwkJCQkgb2Zfbm9kZV9mdWxsX25hbWUodG9fb2Zfbm9k ZShwaHlfbm9kZSkpKTsKPiArCQkJCWNvbnRpbnVlOwo+ICsJCQl9OwoKVGhpcyBpcyBhIGNvcnJl Y3QgY2hhbmdlIEkgY2FuIHRha2UgaW50byBteSBwYXRjaCAtIEknbGwgYWRkIHlvdSBkb3duIGFz IApDby1kZXZlbG9wZWQgYnkuCgo+ICsKPiArCQkJLyogcG9ydEAwIG9mIHRoZSBwaHkgbm9kZSBp cyB0aGUgc2Vuc29yLXNpZGUgaW5wdXQgcG9ydCAqLwo+ICAgCQkJcGh5X2luID0gZndub2RlX2dy YXBoX2dldF9lbmRwb2ludF9ieV9pZChwaHlfbm9kZSwgMCwgMCwgMCk7Cj4gICAJCQlmd25vZGVf aGFuZGxlX3B1dChwaHlfbm9kZSk7Cj4gLQkJCWlmICghcGh5X2luKQo+ICsJCQlpZiAoIXBoeV9p bikgewo+ICsJCQkJZGV2X2luZm8oZGV2LCAicGFyc2VfcG9ydHM6IGNzaXBoeSBwb3J0QDAgaGFz IG5vIGVuZHBvaW50LCBza2lwXG4iKTsKPiAgIAkJCQljb250aW51ZTsKPiArCQkJfTsKPiAKPiAg IAkJCXNlbnNvcl9lcCA9IGZ3bm9kZV9ncmFwaF9nZXRfcmVtb3RlX2VuZHBvaW50KHBoeV9pbik7 Cj4gLQkJCWZ3bm9kZV9oYW5kbGVfcHV0KHBoeV9pbik7Cj4gLQkJCWlmICghc2Vuc29yX2VwKQo+ ICsJCQlpZiAoIXNlbnNvcl9lcCkgewo+ICsJCQkJZndub2RlX2hhbmRsZV9wdXQocGh5X2luKTsK PiAgIAkJCQljb250aW51ZTsKPiArCQkJfTsKPiAKPiAgIAkJCWNzZCA9IHY0bDJfYXN5bmNfbmZf YWRkX2Z3bm9kZSgmY2Ftc3MtPm5vdGlmaWVyLCBzZW5zb3JfZXAsCj4gICAJCQkJCQlzdHJ1Y3Qg Y2Ftc3NfYXN5bmNfc3ViZGV2KTsKPiAgIAkJCWZ3bm9kZV9oYW5kbGVfcHV0KHNlbnNvcl9lcCk7 Cj4gICAJCQlpZiAoSVNfRVJSKGNzZCkpIHsKPiArCQkJCWZ3bm9kZV9oYW5kbGVfcHV0KHBoeV9p bik7Cj4gICAJCQkJcmV0ID0gUFRSX0VSUihjc2QpOwo+ICAgCQkJCWdvdG8gZXJyX2NsZWFudXA7 Cj4gICAJCQl9Cj4gICAJCX0KPiAKPiAgIAkJaWYgKElTX0VSUihjc2QpKSB7Cj4gKwkJCWZ3bm9k ZV9oYW5kbGVfcHV0KHBoeV9pbik7Cj4gICAJCQlyZXQgPSBQVFJfRVJSKGNzZCk7Cj4gICAJCQln b3RvIGVycl9jbGVhbnVwOwo+ICAgCQl9Cj4gCj4gLQkJcmV0ID0gY2Ftc3NfcGFyc2VfZW5kcG9p bnRfbm9kZShkZXYsIGVwLCBjc2QpOwo+ICsJCXJldCA9IGNhbXNzX3BhcnNlX2VuZHBvaW50X25v ZGUoZGV2LCBlcCwgcGh5X2luLCBjc2QpOwo+ICsJCWZ3bm9kZV9oYW5kbGVfcHV0KHBoeV9pbik7 Cj4gICAJCWlmIChyZXQgPCAwKQo+ICAgCQkJZ290byBlcnJfY2xlYW51cDsKPiAgIAl9Cj4gLS0K PiAyLjM0LjEKCgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1waHkK