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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3D664C433FE for ; Mon, 27 Dec 2021 20:04:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232654AbhL0UE2 (ORCPT ); Mon, 27 Dec 2021 15:04:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41754 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230053AbhL0UE0 (ORCPT ); Mon, 27 Dec 2021 15:04:26 -0500 Received: from mail-ed1-x536.google.com (mail-ed1-x536.google.com [IPv6:2a00:1450:4864:20::536]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E6ADBC06173E; Mon, 27 Dec 2021 12:04:25 -0800 (PST) Received: by mail-ed1-x536.google.com with SMTP id w16so65541831edc.11; Mon, 27 Dec 2021 12:04:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=P8q6ExHPHeCoatQ2Or3qWHD1pWM6+APCs/H8EAPVzyY=; b=PO260IgRHd9vbc20rDBveu9gAeHOr0WaB2czdvNwspZ3Kp9pmODWH+WIcSjWwdL2/q vDQBpAPlBpQVd2G8Q5/LGWk3RqND028G4iTkthcyt4TGaoYCXsEKR8LdKY4qJlnMqbyl 6yvCzHw09LREYZhhxM+U1MnaYj0S8ILJf8BPLzLSzih7bzGA8IiYXgRGaFK1blxhHHR9 JhjvqJtnGDPGhxTS7m/FyHLYiQFKbNnuB3yVquaFJuzcPyrBkfgN2EhObFJ5kUK7FQq/ 3Sh26fu69ISq9SCtE0zNw/WpaI7IVHsRaiBRW6omlOFQU8HIR5ke6ByqB4v1PzUai+59 ahZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=P8q6ExHPHeCoatQ2Or3qWHD1pWM6+APCs/H8EAPVzyY=; b=PChFRupO5kM563lPjfkdUlFdRCR/L9f/cp17T9IdNVZZ9wLf+YdqJEQIwOyD7BYcIy JO9xl3P7XJaoYN7221yMABZBBD1dLuxdL+nQMd7imZFUTVqXo3AEfw0Po7bqmMjxvADL 6Mh4ZkcPdNzcttCnv/u7cs2JpuHFoCPAlE/Tw83VnN7350Gh6XLpIc/HJnjZUVROMeRX JAXWYtok9v25K902O/LC5DT+OFASk2V4gWMsKPIWCH15g+HadvtEf/QDyfE0OjY4aTAJ AQKxYO4y3iQqqMwMl2o68RDFZFC6eKzaeJQzOrlUSbRSQhdHbODnU1vPSDHjQrD+YbR+ qQQQ== X-Gm-Message-State: AOAM532JQq/70KaHRSRoiC27zGk2INVGsUMTwV/AkXPZxYM0sSgIwHLL r+9nHefkZQZX3/tB6H0Jmsbav5QhAw8JwKyHSQ7cixVJvTA= X-Google-Smtp-Source: ABdhPJzxzwd3Jhu/Sm2Vh5AXMvFTI+1L7i/CnGGve5tvPMyJA49y+PpooJoz1qyw0+eD4O3IEX30qAyrZXoorjpFj6U= X-Received: by 2002:a05:6402:518a:: with SMTP id q10mr15268102edd.29.1640635464371; Mon, 27 Dec 2021 12:04:24 -0800 (PST) MIME-Version: 1.0 References: <20211221071634.25980-1-yu.tu@amlogic.com> <20211221071634.25980-4-yu.tu@amlogic.com> In-Reply-To: From: Martin Blumenstingl Date: Mon, 27 Dec 2021 21:04:13 +0100 Message-ID: Subject: Re: [PATCH 3/3] tty: serial: meson: add UART driver compatible with S4 SoC on-chip To: Yu Tu Cc: linux-serial@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-amlogic@lists.infradead.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Jiri Slaby , Neil Armstrong , Kevin Hilman , Jerome Brunet Content-Type: multipart/mixed; boundary="0000000000000f725305d42636f6" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --0000000000000f725305d42636f6 Content-Type: text/plain; charset="UTF-8" Hello, On Mon, Dec 27, 2021 at 7:56 AM Yu Tu wrote: [...] > > Does the new S4 SoC use an external 12MHz XTAL or does it use a 24MHz XTAL? > > If there's still a 24MHz XTAL then I think this description is not > > correct - at least based on how I understand the UART controller. > > > The S4 SoC uses 12MHz(UART_EE_A_REG5[27]=0x1,the bit is set in romcode). > This register description is the same as the G12A and G12B you know. Thank you for this explanation! So the problem is that we're not touching bit 26 and bit 27 - and with the updated romcode you would not get any serial output since the divider is calculated off the wrong clock. I agree with Jerome that we shouldn't put a flag in device-tree. Also I did some experimenting with Jerome's idea to implement the clocks using CCF (common clock framework), see the attached patches. It was a bit tricky because some initial clean-ups were needed in the serial driver. Note: I have only briefly tested this on a 32-bit Meson8m2 SoC, see my attached patches and the clk_summary debugfs output. In fact, I expect that there are some issues with at least one of the patches as the whole bit 26 and bit 27 code is untested. Do you see any problems with this patch? Could you try to implement CCF support with the idea from the attached patches (you don't need to re-use them, I just wrote them to make it clearer in our discussion what we're talking about). Best regards, Martin --0000000000000f725305d42636f6 Content-Type: text/plain; charset="US-ASCII"; name="clk-debug-output.txt" Content-Disposition: attachment; filename="clk-debug-output.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kxp0wahb0 IyBjYXQgL3N5cy9rZXJuZWwvZGVidWcvY2xrL2Nsa19zdW1tYXJ5IAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlbmFibGUgIHByZXBhcmUgIHByb3RlY3QgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGR1dHkgIGhhcmR3YXJlCiAgIGNsb2NrICAgICAgICAgICAgICAgICAg ICAgICAgICBjb3VudCAgICBjb3VudCAgICBjb3VudCAgICAgICAgcmF0ZSAgIGFjY3VyYWN5IHBo YXNlICBjeWNsZSAgICBlbmFibGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpbLi4uXQogeHRhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYg ICAgICAgIDYgICAgICAgIDIgICAgMjQwMDAwMDAgICAgICAgICAgMCAgICAgMCAgNTAwMDAgICAg ICAgICBZClsuLi5dCiAgICBjODEwMDRjMC5zZXJpYWwjeHRhbF9kaXYzICAgICAgICAgMCAgICAg ICAgMCAgICAgICAgMCAgICAgODAwMDAwMCAgICAgICAgICAwICAgICAwICA1MDAwMCAgICAgICAg IFkKWy4uLl0KICAgIGZpeGVkX3BsbF9kY28gICAgICAgICAgICAgICAgICAgICAxICAgICAgICAx ICAgICAgICAwICAyNTUwMDAwMDAwICAgICAgICAgIDAgICAgIDAgIDUwMDAwICAgICAgICAgWQog ICAgICAgZml4ZWRfcGxsICAgICAgICAgICAgICAgICAgICAgIDEgICAgICAgIDEgICAgICAgIDAg IDI1NTAwMDAwMDAgICAgICAgICAgMCAgICAgMCAgNTAwMDAgICAgICAgICBZClsuLi5dCiAgICAg ICAgICBmY2xrX2RpdjNfZGl2ICAgICAgICAgICAgICAgMSAgICAgICAgMSAgICAgICAgMCAgIDg1 MDAwMDAwMCAgICAgICAgICAwICAgICAwICA1MDAwMCAgICAgICAgIFkKICAgICAgICAgICAgIGZj bGtfZGl2MyAgICAgICAgICAgICAgICAyICAgICAgICAyICAgICAgICAwICAgODUwMDAwMDAwICAg ICAgICAgIDAgICAgIDAgIDUwMDAwICAgICAgICAgWQpbLi4uXQogICAgICAgICAgICAgICAgbXBl Z19jbGtfc2VsICAgICAgICAgIDEgICAgICAgIDEgICAgICAgIDAgICA4NTAwMDAwMDAgICAgICAg ICAgMCAgICAgMCAgNTAwMDAgICAgICAgICBZCiAgICAgICAgICAgICAgICAgICBtcGVnX2Nsa19k aXYgICAgICAgMSAgICAgICAgMSAgICAgICAgMCAgIDE0MTY2NjY2NyAgICAgICAgICAwICAgICAw ICA1MDAwMCAgICAgICAgIFkKICAgICAgICAgICAgICAgICAgICAgIGNsazgxICAgICAgICAgIDE3 ICAgICAgIDIwICAgICAgICAwICAgMTQxNjY2NjY3ICAgICAgICAgIDAgICAgIDAgIDUwMDAwICAg ICAgICAgWQpbLi4uXQogICAgICAgICAgICAgICAgICAgICAgICAgYzgxMDA0YzAuc2VyaWFsI2Ns azgxX2RpdjQgICAgICAgMSAgICAgICAgMSAgICAgICAgMCAgICAzNTQxNjY2NiAgICAgICAgICAw ICAgICAwICA1MDAwMCAgICAgICAgIFkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM4MTAw NGMwLnNlcmlhbCN1c2VfeHRhbCAgICAgICAxICAgICAgICAxICAgICAgICAwICAgIDM1NDE2NjY2 ICAgICAgICAgIDAgICAgIDAgIDUwMDAwICAgICAgICAgWQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYzgxMDA0YzAuc2VyaWFsI2JhdWRfZGl2ICAgICAgIDEgICAgICAgIDEgICAgICAg IDAgICAgICAxMTUzNjQgICAgICAgICAgMCAgICAgMCAgNTAwMDAgICAgICAgICBZCg== --0000000000000f725305d42636f6 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-tty-serial-meson-Drop-the-legacy-compatible-strings-.patch" Content-Disposition: attachment; filename="0001-tty-serial-meson-Drop-the-legacy-compatible-strings-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kxp3rk1u1 RnJvbSA3ZmU1YzYwOTQwNWJkNjdhMmY4YWQwNjVkNDFkYjQzODViYmQzNzZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gQmx1bWVuc3RpbmdsIDxtYXJ0aW4uYmx1bWVuc3Rp bmdsQGdvb2dsZW1haWwuY29tPgpEYXRlOiBGcmksIDI0IERlYyAyMDIxIDIzOjQ2OjM3ICswMTAw ClN1YmplY3Q6IFtQQVRDSCAxLzNdIHR0eTogc2VyaWFsOiBtZXNvbjogRHJvcCB0aGUgbGVnYWN5 IGNvbXBhdGlibGUgc3RyaW5ncwogYW5kIGNsb2NrIGNvZGUKCkFsbCBtYWlubGluZSAuZHRzIGZp bGVzIGhhdmUgYmVlbiB1c2luZyB0aGUgc3RhYmxlIFVBUlQgc2luY2UgTGludXgKNC4xNi4gRHJv cCB0aGUgbGVnYWN5IGNvbXBhdGlibGUgc3RyaW5ncyBhbmQgcmVsYXRlZCBjbG9jayBjb2RlLgoK U2lnbmVkLW9mZi1ieTogTWFydGluIEJsdW1lbnN0aW5nbCA8bWFydGluLmJsdW1lbnN0aW5nbEBn b29nbGVtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL3R0eS9zZXJpYWwvbWVzb25fdWFydC5jIHwgMzQg KystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNl cnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJp YWwvbWVzb25fdWFydC5jIGIvZHJpdmVycy90dHkvc2VyaWFsL21lc29uX3VhcnQuYwppbmRleCBl ZmVlMzkzNTkxN2YuLmU1NDgzMjQwMWU5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc2VyaWFs L21lc29uX3VhcnQuYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvbWVzb25fdWFydC5jCkBAIC02 MjIsMTAgKzYyMiw3IEBAIG1lc29uX3NlcmlhbF9lYXJseV9jb25zb2xlX3NldHVwKHN0cnVjdCBl YXJseWNvbl9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqb3B0CiAJZGV2aWNlLT5jb24tPndy aXRlID0gbWVzb25fc2VyaWFsX2Vhcmx5X2NvbnNvbGVfd3JpdGU7CiAJcmV0dXJuIDA7CiB9Ci0v KiBMZWdhY3kgYmluZGluZ3MsIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gbm8gbW9yZSB1c2VkICov Ci1PRl9FQVJMWUNPTl9ERUNMQVJFKG1lc29uLCAiYW1sb2dpYyxtZXNvbi11YXJ0IiwKLQkJICAg IG1lc29uX3NlcmlhbF9lYXJseV9jb25zb2xlX3NldHVwKTsKLS8qIFN0YWJsZSBiaW5kaW5ncyAq LworCiBPRl9FQVJMWUNPTl9ERUNMQVJFKG1lc29uLCAiYW1sb2dpYyxtZXNvbi1hby11YXJ0IiwK IAkJICAgIG1lc29uX3NlcmlhbF9lYXJseV9jb25zb2xlX3NldHVwKTsKIApAQCAtNjY4LDI1ICs2 NjUsNiBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBjbGsgKm1lc29uX3VhcnRfcHJvYmVfY2xvY2so c3RydWN0IGRldmljZSAqZGV2LAogCXJldHVybiBjbGs7CiB9CiAKLS8qCi0gKiBUaGlzIGZ1bmN0 aW9uIGdldHMgY2xvY2tzIGluIHRoZSBsZWdhY3kgbm9uLXN0YWJsZSBEVCBiaW5kaW5ncy4KLSAq IFRoaXMgY29kZSB3aWxsIGJlIHJlbW92ZSBvbmNlIGFsbCB0aGUgcGxhdGZvcm1zIHN3aXRjaCB0 byB0aGUKLSAqIG5ldyBEVCBiaW5kaW5ncy4KLSAqLwotc3RhdGljIGludCBtZXNvbl91YXJ0X3By b2JlX2Nsb2Nrc19sZWdhY3koc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKLQkJCQkJICBz dHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQotewotCXN0cnVjdCBjbGsgKmNsayA9IE5VTEw7Ci0KLQlj bGsgPSBtZXNvbl91YXJ0X3Byb2JlX2Nsb2NrKCZwZGV2LT5kZXYsIE5VTEwpOwotCWlmIChJU19F UlIoY2xrKSkKLQkJcmV0dXJuIFBUUl9FUlIoY2xrKTsKLQotCXBvcnQtPnVhcnRjbGsgPSBjbGtf Z2V0X3JhdGUoY2xrKTsKLQotCXJldHVybiAwOwotfQotCiBzdGF0aWMgaW50IG1lc29uX3VhcnRf cHJvYmVfY2xvY2tzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCiAJCQkJICAgc3RydWN0 IHVhcnRfcG9ydCAqcG9ydCkKIHsKQEAgLTc1NCwxMiArNzMyLDcgQEAgc3RhdGljIGludCBtZXNv bl91YXJ0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJaWYgKCFwb3J0KQog CQlyZXR1cm4gLUVOT01FTTsKIAotCS8qIFVzZSBsZWdhY3kgd2F5IHVudGlsIGFsbCBwbGF0Zm9y bXMgc3dpdGNoIHRvIG5ldyBiaW5kaW5ncyAqLwotCWlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJs ZShwZGV2LT5kZXYub2Zfbm9kZSwgImFtbG9naWMsbWVzb24tdWFydCIpKQotCQlyZXQgPSBtZXNv bl91YXJ0X3Byb2JlX2Nsb2Nrc19sZWdhY3kocGRldiwgcG9ydCk7Ci0JZWxzZQotCQlyZXQgPSBt ZXNvbl91YXJ0X3Byb2JlX2Nsb2NrcyhwZGV2LCBwb3J0KTsKLQorCXJldCA9IG1lc29uX3VhcnRf cHJvYmVfY2xvY2tzKHBkZXYsIHBvcnQpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKQEAg LTgwNCw5ICs3NzcsNiBAQCBzdGF0aWMgaW50IG1lc29uX3VhcnRfcmVtb3ZlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lk IG1lc29uX3VhcnRfZHRfbWF0Y2hbXSA9IHsKLQkvKiBMZWdhY3kgYmluZGluZ3MsIHNob3VsZCBi ZSByZW1vdmVkIHdoZW4gbm8gbW9yZSB1c2VkICovCi0JeyAuY29tcGF0aWJsZSA9ICJhbWxvZ2lj LG1lc29uLXVhcnQiIH0sCi0JLyogU3RhYmxlIGJpbmRpbmdzICovCiAJeyAuY29tcGF0aWJsZSA9 ICJhbWxvZ2ljLG1lc29uNi11YXJ0IiB9LAogCXsgLmNvbXBhdGlibGUgPSAiYW1sb2dpYyxtZXNv bjgtdWFydCIgfSwKIAl7IC5jb21wYXRpYmxlID0gImFtbG9naWMsbWVzb244Yi11YXJ0IiB9LAot LSAKMi4zNC4xCgo= --0000000000000f725305d42636f6 Content-Type: text/x-patch; charset="US-ASCII"; name="0002-tty-serial-meson-Request-the-register-region-in-meso.patch" Content-Disposition: attachment; filename="0002-tty-serial-meson-Request-the-register-region-in-meso.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kxp3rk1x2 RnJvbSAzYmExZGVhYjYzM2M3ZTRlZjcwNjc4NzNkYTk2M2I0MTE1NGI5M2E1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gQmx1bWVuc3RpbmdsIDxtYXJ0aW4uYmx1bWVuc3Rp bmdsQGdvb2dsZW1haWwuY29tPgpEYXRlOiBNb24sIDI3IERlYyAyMDIxIDE5OjQ4OjQzICswMTAw ClN1YmplY3Q6IFtQQVRDSCAyLzNdIHR0eTogc2VyaWFsOiBtZXNvbjogUmVxdWVzdCB0aGUgcmVn aXN0ZXIgcmVnaW9uIGluCiBtZXNvbl91YXJ0X3Byb2JlKCkKClRoaXMgc2ltcGxpZmllcyByZXNl dHRpbmcgdGhlIFVBUlQgY29udHJvbGxlciBkdXJpbmcgcHJvYmUgYW5kIHdpbGwgbWFrZQppdCBl YXNpZXIgdG8gaW50ZWdyYXRlIHRoZSBjb21tb24gY2xvY2sgY29kZSB3aGljaCB3aWxsIHJlcXVp cmUgdGhlCnJlZ2lzdGVycyBhdCBwcm9iZSB0aW1lIGFzIHdlbGwuCgpTaWduZWQtb2ZmLWJ5OiBN YXJ0aW4gQmx1bWVuc3RpbmdsIDxtYXJ0aW4uYmx1bWVuc3RpbmdsQGdvb2dsZW1haWwuY29tPgot LS0KIGRyaXZlcnMvdHR5L3NlcmlhbC9tZXNvbl91YXJ0LmMgfCAyNCArKysrKystLS0tLS0tLS0t LS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC9tZXNvbl91YXJ0LmMgYi9kcml2ZXJz L3R0eS9zZXJpYWwvbWVzb25fdWFydC5jCmluZGV4IGU1NDgzMjQwMWU5ZC4uZTE3YmFiMWIzMzY2 IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvbWVzb25fdWFydC5jCisrKyBiL2RyaXZl cnMvdHR5L3NlcmlhbC9tZXNvbl91YXJ0LmMKQEAgLTM5NSwyNCArMzk1LDExIEBAIHN0YXRpYyBp bnQgbWVzb25fdWFydF92ZXJpZnlfcG9ydChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0LAogCiBzdGF0 aWMgdm9pZCBtZXNvbl91YXJ0X3JlbGVhc2VfcG9ydChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQog ewotCWRldm1faW91bm1hcChwb3J0LT5kZXYsIHBvcnQtPm1lbWJhc2UpOwotCXBvcnQtPm1lbWJh c2UgPSBOVUxMOwotCWRldm1fcmVsZWFzZV9tZW1fcmVnaW9uKHBvcnQtPmRldiwgcG9ydC0+bWFw YmFzZSwgcG9ydC0+bWFwc2l6ZSk7CisJLyogbm90aGluZyB0byBkbyAqLwogfQogCiBzdGF0aWMg aW50IG1lc29uX3VhcnRfcmVxdWVzdF9wb3J0KHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQpCiB7Ci0J aWYgKCFkZXZtX3JlcXVlc3RfbWVtX3JlZ2lvbihwb3J0LT5kZXYsIHBvcnQtPm1hcGJhc2UsIHBv cnQtPm1hcHNpemUsCi0JCQkJICAgICBkZXZfbmFtZShwb3J0LT5kZXYpKSkgewotCQlkZXZfZXJy KHBvcnQtPmRldiwgIk1lbW9yeSByZWdpb24gYnVzeVxuIik7Ci0JCXJldHVybiAtRUJVU1k7Ci0J fQotCi0JcG9ydC0+bWVtYmFzZSA9IGRldm1faW9yZW1hcChwb3J0LT5kZXYsIHBvcnQtPm1hcGJh c2UsCi0JCQkJCSAgICAgcG9ydC0+bWFwc2l6ZSk7Ci0JaWYgKCFwb3J0LT5tZW1iYXNlKQotCQly ZXR1cm4gLUVOT01FTTsKLQogCXJldHVybiAwOwogfQogCkBAIC03MzIsNiArNzE5LDEwIEBAIHN0 YXRpYyBpbnQgbWVzb25fdWFydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQog CWlmICghcG9ydCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKKwlwb3J0LT5tZW1iYXNlID0gZGV2bV9p b3JlbWFwX3Jlc291cmNlKCZwZGV2LT5kZXYsIHJlc19tZW0pOworCWlmIChJU19FUlIocG9ydC0+ bWVtYmFzZSkpCisJCXJldHVybiBQVFJfRVJSKHBvcnQtPm1lbWJhc2UpOworCiAJcmV0ID0gbWVz b25fdWFydF9wcm9iZV9jbG9ja3MocGRldiwgcG9ydCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJl dDsKQEAgLTc1MywxMCArNzQ0LDcgQEAgc3RhdGljIGludCBtZXNvbl91YXJ0X3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcG9y dCk7CiAKIAkvKiByZXNldCBwb3J0IGJlZm9yZSByZWdpc3RlcmluZyAoYW5kIHBvc3NpYmx5IHJl Z2lzdGVyaW5nIGNvbnNvbGUpICovCi0JaWYgKG1lc29uX3VhcnRfcmVxdWVzdF9wb3J0KHBvcnQp ID49IDApIHsKLQkJbWVzb25fdWFydF9yZXNldChwb3J0KTsKLQkJbWVzb25fdWFydF9yZWxlYXNl X3BvcnQocG9ydCk7Ci0JfQorCW1lc29uX3VhcnRfcmVzZXQocG9ydCk7CiAKIAlyZXQgPSB1YXJ0 X2FkZF9vbmVfcG9ydCgmbWVzb25fdWFydF9kcml2ZXIsIHBvcnQpOwogCWlmIChyZXQpCi0tIAoy LjM0LjEKCg== --0000000000000f725305d42636f6 Content-Type: text/x-patch; charset="US-ASCII"; name="0003-tty-serial-meson-UART-clk-test-TODO.patch" Content-Disposition: attachment; filename="0003-tty-serial-meson-UART-clk-test-TODO.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kxp3rk1y3 RnJvbSAyNzFkMDA1ZWZkNWVjMzZmN2YzNzZlNzQ3ZGZhOTY2ZmZkNjhkNzI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gQmx1bWVuc3RpbmdsIDxtYXJ0aW4uYmx1bWVuc3Rp bmdsQGdvb2dsZW1haWwuY29tPgpEYXRlOiBTYXQsIDI1IERlYyAyMDIxIDAxOjMyOjUwICswMTAw ClN1YmplY3Q6IFtQQVRDSCAzLzNdIHR0eTogc2VyaWFsOiBtZXNvbjogVUFSVCBjbGsgdGVzdCAt IFRPRE8KClRPRE8KClNpZ25lZC1vZmYtYnk6IE1hcnRpbiBCbHVtZW5zdGluZ2wgPG1hcnRpbi5i bHVtZW5zdGluZ2xAZ29vZ2xlbWFpbC5jb20+Ci0tLQogZHJpdmVycy90dHkvc2VyaWFsL0tjb25m aWcgICAgICB8ICAgMSArCiBkcml2ZXJzL3R0eS9zZXJpYWwvbWVzb25fdWFydC5jIHwgMzExICsr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDI1NyBpbnNl cnRpb25zKCspLCA1NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJp YWwvS2NvbmZpZyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9LY29uZmlnCmluZGV4IGZjNTQzYWM5N2Mx My4uOGUxYzljNWMyY2RmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvS2NvbmZpZwor KysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvS2NvbmZpZwpAQCAtMTk5LDYgKzE5OSw3IEBAIGNvbmZp ZyBTRVJJQUxfS0dEQl9OTUkKIGNvbmZpZyBTRVJJQUxfTUVTT04KIAl0cmlzdGF0ZSAiTWVzb24g c2VyaWFsIHBvcnQgc3VwcG9ydCIKIAlkZXBlbmRzIG9uIEFSQ0hfTUVTT04gfHwgQ09NUElMRV9U RVNUCisJZGVwZW5kcyBvbiBDT01NT05fQ0xLCiAJc2VsZWN0IFNFUklBTF9DT1JFCiAJaGVscAog CSAgVGhpcyBlbmFibGVzIHRoZSBkcml2ZXIgZm9yIHRoZSBvbi1jaGlwIFVBUlRzIG9mIHRoZSBB bWxvZ2ljCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvbWVzb25fdWFydC5jIGIvZHJp dmVycy90dHkvc2VyaWFsL21lc29uX3VhcnQuYwppbmRleCBlMTdiYWIxYjMzNjYuLjkwMDY4Yzhm NzVjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc2VyaWFsL21lc29uX3VhcnQuYworKysgYi9k cml2ZXJzL3R0eS9zZXJpYWwvbWVzb25fdWFydC5jCkBAIC02LDYgKzYsNyBAQAogICovCiAKICNp bmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9jbGstcHJvdmlkZXIuaD4KICNp bmNsdWRlIDxsaW51eC9jb25zb2xlLmg+CiAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KICNpbmNs dWRlIDxsaW51eC9pbml0Lmg+CkBAIC02NSw5ICs2Niw3IEBACiAjZGVmaW5lIEFNTF9VQVJUX1JF Q1ZfSVJRKGMpCQkoKGMpICYgMHhmZikKIAogLyogQU1MX1VBUlRfUkVHNSBiaXRzICovCi0jZGVm aW5lIEFNTF9VQVJUX0JBVURfTUFTSwkJMHg3ZmZmZmYKICNkZWZpbmUgQU1MX1VBUlRfQkFVRF9V U0UJCUJJVCgyMykKLSNkZWZpbmUgQU1MX1VBUlRfQkFVRF9YVEFMCQlCSVQoMjQpCiAKICNkZWZp bmUgQU1MX1VBUlRfUE9SVF9OVU0JCTEyCiAjZGVmaW5lIEFNTF9VQVJUX1BPUlRfT0ZGU0VUCQk2 CkBAIC03Niw2ICs3NSwyMSBAQAogI2RlZmluZSBBTUxfVUFSVF9QT0xMX1VTRUMJCTUKICNkZWZp bmUgQU1MX1VBUlRfVElNRU9VVF9VU0VDCQkxMDAwMAogCitzdHJ1Y3QgbWVzb25fdWFydF9kYXRh IHsKKwlzdHJ1Y3QgdWFydF9wb3J0CXBvcnQ7CisJc3RydWN0IGNsawkJKnBjbGs7CisJc3RydWN0 IGNsawkJKmJhdWRfY2xrOworCXN0cnVjdCBjbGtfZGl2aWRlcgliYXVkX2RpdjsKKwlzdHJ1Y3Qg Y2xrX211eAkJdXNlX3h0YWxfbXV4OworCXN0cnVjdCBjbGtfbXV4CQl4dGFsX2Nsa19zZWxfbXV4 OworCXN0cnVjdCBjbGtfbXV4CQl4dGFsMl9jbGtfc2VsX211eDsKKwlzdHJ1Y3QgY2xrX2ZpeGVk X2ZhY3Rvcgl4dGFsX2RpdjI7CisJc3RydWN0IGNsa19maXhlZF9mYWN0b3IJeHRhbF9kaXYzOwor CXN0cnVjdCBjbGtfZml4ZWRfZmFjdG9yCWNsazgxX2RpdjQ7CisJYm9vbAkJCW5vX2NsazgxX2lu cHV0OworCWJvb2wJCQloYXNfeHRhbF9jbGtfc2VsOworfTsKKwogc3RhdGljIHN0cnVjdCB1YXJ0 X2RyaXZlciBtZXNvbl91YXJ0X2RyaXZlcjsKIAogc3RhdGljIHN0cnVjdCB1YXJ0X3BvcnQgKm1l c29uX3BvcnRzW0FNTF9VQVJUX1BPUlRfTlVNXTsKQEAgLTI2OCwxNCArMjgyLDExIEBAIHN0YXRp YyB2b2lkIG1lc29uX3VhcnRfcmVzZXQoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKIHN0YXRpYyBp bnQgbWVzb25fdWFydF9zdGFydHVwKHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQpCiB7CiAJdTMyIHZh bDsKLQlpbnQgcmV0ID0gMDsKKwlpbnQgcmV0OwogCi0JdmFsID0gcmVhZGwocG9ydC0+bWVtYmFz ZSArIEFNTF9VQVJUX0NPTlRST0wpOwotCXZhbCB8PSBBTUxfVUFSVF9DTEVBUl9FUlI7Ci0Jd3Jp dGVsKHZhbCwgcG9ydC0+bWVtYmFzZSArIEFNTF9VQVJUX0NPTlRST0wpOwotCXZhbCAmPSB+QU1M X1VBUlRfQ0xFQVJfRVJSOwotCXdyaXRlbCh2YWwsIHBvcnQtPm1lbWJhc2UgKyBBTUxfVUFSVF9D T05UUk9MKTsKKwltZXNvbl91YXJ0X3Jlc2V0KHBvcnQpOwogCisJdmFsID0gcmVhZGwocG9ydC0+ bWVtYmFzZSArIEFNTF9VQVJUX0NPTlRST0wpOwogCXZhbCB8PSAoQU1MX1VBUlRfUlhfRU4gfCBB TUxfVUFSVF9UWF9FTik7CiAJd3JpdGVsKHZhbCwgcG9ydC0+bWVtYmFzZSArIEFNTF9VQVJUX0NP TlRST0wpOwogCkBAIC0yOTMsMTkgKzMwNCwxNyBAQCBzdGF0aWMgaW50IG1lc29uX3VhcnRfc3Rh cnR1cChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQogCiBzdGF0aWMgdm9pZCBtZXNvbl91YXJ0X2No YW5nZV9zcGVlZChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0LCB1bnNpZ25lZCBsb25nIGJhdWQpCiB7 CisJc3RydWN0IG1lc29uX3VhcnRfZGF0YSAqcHJpdmF0ZV9kYXRhID0gcG9ydC0+cHJpdmF0ZV9k YXRhOwogCXUzMiB2YWw7CiAKIAl3aGlsZSAoIW1lc29uX3VhcnRfdHhfZW1wdHkocG9ydCkpCiAJ CWNwdV9yZWxheCgpOwogCi0JaWYgKHBvcnQtPnVhcnRjbGsgPT0gMjQwMDAwMDApIHsKLQkJdmFs ID0gKChwb3J0LT51YXJ0Y2xrIC8gMykgLyBiYXVkKSAtIDE7Ci0JCXZhbCB8PSBBTUxfVUFSVF9C QVVEX1hUQUw7Ci0JfSBlbHNlIHsKLQkJdmFsID0gKChwb3J0LT51YXJ0Y2xrICogMTAgLyAoYmF1 ZCAqIDQpICsgNSkgLyAxMCkgLSAxOwotCX0KKwl2YWwgPSByZWFkbChwb3J0LT5tZW1iYXNlICsg QU1MX1VBUlRfUkVHNSk7CiAJdmFsIHw9IEFNTF9VQVJUX0JBVURfVVNFOwogCXdyaXRlbCh2YWws IHBvcnQtPm1lbWJhc2UgKyBBTUxfVUFSVF9SRUc1KTsKKworCWNsa19zZXRfcmF0ZShwcml2YXRl X2RhdGEtPmJhdWRfY2xrLCBiYXVkKTsKIH0KIAogc3RhdGljIHZvaWQgbWVzb25fdWFydF9zZXRf dGVybWlvcyhzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0LApAQCAtMzk1LDExICs0MDQsMjcgQEAgc3Rh dGljIGludCBtZXNvbl91YXJ0X3ZlcmlmeV9wb3J0KHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQsCiAK IHN0YXRpYyB2b2lkIG1lc29uX3VhcnRfcmVsZWFzZV9wb3J0KHN0cnVjdCB1YXJ0X3BvcnQgKnBv cnQpCiB7Ci0JLyogbm90aGluZyB0byBkbyAqLworCXN0cnVjdCBtZXNvbl91YXJ0X2RhdGEgKnBy aXZhdGVfZGF0YSA9IHBvcnQtPnByaXZhdGVfZGF0YTsKKworCWNsa19kaXNhYmxlX3VucHJlcGFy ZShwcml2YXRlX2RhdGEtPmJhdWRfY2xrKTsKKwljbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdmF0 ZV9kYXRhLT5wY2xrKTsKIH0KIAogc3RhdGljIGludCBtZXNvbl91YXJ0X3JlcXVlc3RfcG9ydChz dHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQogeworCXN0cnVjdCBtZXNvbl91YXJ0X2RhdGEgKnByaXZh dGVfZGF0YSA9IHBvcnQtPnByaXZhdGVfZGF0YTsKKwlpbnQgcmV0OworCisJcmV0ID0gY2xrX3By ZXBhcmVfZW5hYmxlKHByaXZhdGVfZGF0YS0+cGNsayk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJl dDsKKworCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShwcml2YXRlX2RhdGEtPmJhdWRfY2xrKTsK KwlpZiAocmV0KSB7CisJCWNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2YXRlX2RhdGEtPnBjbGsp OworCQlyZXR1cm4gcmV0OworCX0KKwogCXJldHVybiAwOwogfQogCkBAIC02MjksNTYgKzY1NCwx NzUgQEAgc3RhdGljIHN0cnVjdCB1YXJ0X2RyaXZlciBtZXNvbl91YXJ0X2RyaXZlciA9IHsKIAku Y29ucwkJPSBNRVNPTl9TRVJJQUxfQ09OU09MRSwKIH07CiAKLXN0YXRpYyBpbmxpbmUgc3RydWN0 IGNsayAqbWVzb25fdWFydF9wcm9iZV9jbG9jayhzdHJ1Y3QgZGV2aWNlICpkZXYsCi0JCQkJCQkg Y29uc3QgY2hhciAqaWQpCitzdGF0aWMgaW50IG1lc29uX3VhcnRfcmVnaXN0ZXJfY2xrKHN0cnVj dCB1YXJ0X3BvcnQgKnBvcnQsCisJCQkJICAgY29uc3QgY2hhciAqbmFtZV9zdWZmaXgsCisJCQkJ ICAgY29uc3Qgc3RydWN0IGNsa19wYXJlbnRfZGF0YSAqcGFyZW50X2RhdGEsCisJCQkJICAgdW5z aWduZWQgaW50IG51bV9wYXJlbnRzLAorCQkJCSAgIGNvbnN0IHN0cnVjdCBjbGtfb3BzICpvcHMs CisJCQkJICAgc3RydWN0IGNsa19odyAqaHcpCiB7Ci0Jc3RydWN0IGNsayAqY2xrID0gTlVMTDsK KwlzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0geyB9OworCWNoYXIgY2xrX25hbWVbMzJdOwog CWludCByZXQ7CiAKLQljbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBpZCk7Ci0JaWYgKElTX0VSUihj bGspKQotCQlyZXR1cm4gY2xrOworCXNucHJpbnRmKGNsa19uYW1lLCBzaXplb2YoY2xrX25hbWUp LCAiJXMjJXMiLCBkZXZfbmFtZShwb3J0LT5kZXYpLAorCQkgbmFtZV9zdWZmaXgpOwogCi0JcmV0 ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGNsayk7Ci0JaWYgKHJldCkgewotCQlkZXZfZXJyKGRldiwg ImNvdWxkbid0IGVuYWJsZSBjbGtcbiIpOwotCQlyZXR1cm4gRVJSX1BUUihyZXQpOwotCX0KKwlp bml0Lm5hbWUgPSBjbGtfbmFtZTsKKwlpbml0Lm9wcyA9IG9wczsKKwlpbml0LmZsYWdzID0gQ0xL X1NFVF9SQVRFX1BBUkVOVDsKKwlpbml0LnBhcmVudF9kYXRhID0gcGFyZW50X2RhdGE7CisJaW5p dC5udW1fcGFyZW50cyA9IG51bV9wYXJlbnRzOworCisJaHctPmluaXQgPSAmaW5pdDsKIAotCWRl dm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsCi0JCQkodm9pZCgqKSh2b2lkICopKWNsa19kaXNh YmxlX3VucHJlcGFyZSwKLQkJCWNsayk7CisJcmV0ID0gZGV2bV9jbGtfaHdfcmVnaXN0ZXIocG9y dC0+ZGV2LCBodyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUocG9ydC0+ZGV2 LCByZXQsCisJCQkJICAgICAiRmFpbGVkIHRvIHJlZ2lzdGVyIHRoZSAnJXMnIGNsb2NrXG4iLAor CQkJCSAgICAgY2xrX25hbWUpOwogCi0JcmV0dXJuIGNsazsKKwlyZXR1cm4gcmV0OwogfQogCi1z dGF0aWMgaW50IG1lc29uX3VhcnRfcHJvYmVfY2xvY2tzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYsCi0JCQkJICAgc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKLXsKLQlzdHJ1Y3QgY2xrICpj bGtfeHRhbCA9IE5VTEw7Ci0Jc3RydWN0IGNsayAqY2xrX3BjbGsgPSBOVUxMOwotCXN0cnVjdCBj bGsgKmNsa19iYXVkID0gTlVMTDsKK3N0YXRpYyBpbnQgbWVzb25fdWFydF9wcm9iZV9jbG9ja3Mo c3RydWN0IHVhcnRfcG9ydCAqcG9ydCwKKwkJCQkgICBib29sIHJlZ2lzdGVyX2NsazgxX2RpdjQp Cit7CisJc3RydWN0IG1lc29uX3VhcnRfZGF0YSAqcHJpdmF0ZV9kYXRhID0gcG9ydC0+cHJpdmF0 ZV9kYXRhOworCXN0cnVjdCBjbGtfcGFyZW50X2RhdGEgdXNlX3h0YWxfbXV4X3BhcmVudHNbMl0g PSB7CisJCXsgLmluZGV4ID0gLTEsIH0sCisJCXsgLmluZGV4ID0gLTEsIH0sCisJfTsKKwlzdHJ1 Y3QgY2xrX3BhcmVudF9kYXRhIHh0YWxfY2xrX3NlbF9tdXhfcGFyZW50c1syXSA9IHsgfTsKKwlz dHJ1Y3QgY2xrX3BhcmVudF9kYXRhIHh0YWwyX2Nsa19zZWxfbXV4X3BhcmVudHNbMl0gPSB7IH07 CisJc3RydWN0IGNsa19wYXJlbnRfZGF0YSB4dGFsX2Rpdl9wYXJlbnQgPSB7IC5md19uYW1lID0g Inh0YWwiLCB9OworCXN0cnVjdCBjbGtfcGFyZW50X2RhdGEgY2xrODFfZGl2X3BhcmVudCA9IHsg LmZ3X25hbWUgPSAiYmF1ZCIsIH07CisJc3RydWN0IGNsa19wYXJlbnRfZGF0YSBiYXVkX2Rpdl9w YXJlbnQgPSB7IH07CisJc3RydWN0IGNsayAqY2xrX2JhdWQsICpjbGtfeHRhbDsKKwlpbnQgcmV0 OwogCi0JY2xrX3BjbGsgPSBtZXNvbl91YXJ0X3Byb2JlX2Nsb2NrKCZwZGV2LT5kZXYsICJwY2xr Iik7Ci0JaWYgKElTX0VSUihjbGtfcGNsaykpCi0JCXJldHVybiBQVFJfRVJSKGNsa19wY2xrKTsK Kwlwcml2YXRlX2RhdGEtPnBjbGsgPSBkZXZtX2Nsa19nZXQocG9ydC0+ZGV2LCAicGNsayIpOwor CWlmIChJU19FUlIocHJpdmF0ZV9kYXRhLT5wY2xrKSkKKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUo cG9ydC0+ZGV2LCBQVFJfRVJSKHByaXZhdGVfZGF0YS0+cGNsayksCisJCQkJICAgICAiRmFpbGVk IHRvIGdldCB0aGUgJ3BjbGsnIGNsb2NrXG4iKTsKKworCWNsa19iYXVkID0gZGV2bV9jbGtfZ2V0 KHBvcnQtPmRldiwgImJhdWQiKTsKKwlpZiAoSVNfRVJSKGNsa19iYXVkKSkKKwkJcmV0dXJuIGRl dl9lcnJfcHJvYmUocG9ydC0+ZGV2LCBQVFJfRVJSKGNsa19iYXVkKSwKKwkJCQkgICAgICJGYWls ZWQgdG8gZ2V0IHRoZSAnYmF1ZCcgY2xvY2tcbiIpOwogCi0JY2xrX3h0YWwgPSBtZXNvbl91YXJ0 X3Byb2JlX2Nsb2NrKCZwZGV2LT5kZXYsICJ4dGFsIik7CisJY2xrX3h0YWwgPSBkZXZtX2Nsa19n ZXQocG9ydC0+ZGV2LCAieHRhbCIpOwogCWlmIChJU19FUlIoY2xrX3h0YWwpKQotCQlyZXR1cm4g UFRSX0VSUihjbGtfeHRhbCk7CisJCXJldHVybiBkZXZfZXJyX3Byb2JlKHBvcnQtPmRldiwgUFRS X0VSUihjbGtfeHRhbCksCisJCQkJICAgICAiRmFpbGVkIHRvIGdldCB0aGUgJ3h0YWwnIGNsb2Nr XG4iKTsKKworCXByaXZhdGVfZGF0YS0+eHRhbF9kaXYzLm11bHQgPSAxOworCXByaXZhdGVfZGF0 YS0+eHRhbF9kaXYzLmRpdiA9IDM7CisJcmV0ID0gbWVzb25fdWFydF9yZWdpc3Rlcl9jbGsocG9y dCwgInh0YWxfZGl2MyIsICZ4dGFsX2Rpdl9wYXJlbnQsCisJCQkJICAgICAgMSwgJmNsa19maXhl ZF9mYWN0b3Jfb3BzLAorCQkJCSAgICAgICZwcml2YXRlX2RhdGEtPnh0YWxfZGl2My5odyk7CisJ aWYgKHJldCkKKwkJcmV0dXJuIHJldDsKIAotCWNsa19iYXVkID0gbWVzb25fdWFydF9wcm9iZV9j bG9jaygmcGRldi0+ZGV2LCAiYmF1ZCIpOwotCWlmIChJU19FUlIoY2xrX2JhdWQpKQotCQlyZXR1 cm4gUFRSX0VSUihjbGtfYmF1ZCk7CisJaWYgKHJlZ2lzdGVyX2NsazgxX2RpdjQpIHsKKwkJcHJp dmF0ZV9kYXRhLT5jbGs4MV9kaXY0Lm11bHQgPSAxOworCQlwcml2YXRlX2RhdGEtPmNsazgxX2Rp djQuZGl2ID0gNDsKKwkJcmV0ID0gbWVzb25fdWFydF9yZWdpc3Rlcl9jbGsocG9ydCwgImNsazgx X2RpdjQiLAorCQkJCQkgICAgICAmY2xrODFfZGl2X3BhcmVudCwgMSwKKwkJCQkJICAgICAgJmNs a19maXhlZF9mYWN0b3Jfb3BzLAorCQkJCQkgICAgICAmcHJpdmF0ZV9kYXRhLT5jbGs4MV9kaXY0 Lmh3KTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisKKwkJdXNlX3h0YWxfbXV4X3BhcmVu dHNbMF0uaHcgPSAmcHJpdmF0ZV9kYXRhLT5jbGs4MV9kaXY0Lmh3OworCX0KIAotCXBvcnQtPnVh cnRjbGsgPSBjbGtfZ2V0X3JhdGUoY2xrX2JhdWQpOworCWlmIChwcml2YXRlX2RhdGEtPmhhc194 dGFsX2Nsa19zZWwpIHsKKwkJcHJpdmF0ZV9kYXRhLT54dGFsX2RpdjIubXVsdCA9IDE7CisJCXBy aXZhdGVfZGF0YS0+eHRhbF9kaXYyLmRpdiA9IDI7CisJCXJldCA9IG1lc29uX3VhcnRfcmVnaXN0 ZXJfY2xrKHBvcnQsICJ4dGFsX2RpdjIiLAorCQkJCQkgICAgICAmeHRhbF9kaXZfcGFyZW50LCAx LAorCQkJCQkgICAgICAmY2xrX2ZpeGVkX2ZhY3Rvcl9vcHMsCisJCQkJCSAgICAgICZwcml2YXRl X2RhdGEtPnh0YWxfZGl2Mi5odyk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCisJCXh0 YWxfY2xrX3NlbF9tdXhfcGFyZW50c1swXS5odyA9ICZwcml2YXRlX2RhdGEtPnh0YWxfZGl2My5o dzsKKwkJeHRhbF9jbGtfc2VsX211eF9wYXJlbnRzWzFdLmZ3X25hbWUgPSAieHRhbCI7CisKKwkJ cHJpdmF0ZV9kYXRhLT54dGFsX2Nsa19zZWxfbXV4LnJlZyA9IHBvcnQtPm1lbWJhc2UgKyBBTUxf VUFSVF9SRUc1OworCQlwcml2YXRlX2RhdGEtPnh0YWxfY2xrX3NlbF9tdXgubWFzayA9IDB4MTsK KwkJcHJpdmF0ZV9kYXRhLT54dGFsX2Nsa19zZWxfbXV4LnNoaWZ0ID0gMjY7CisJCXByaXZhdGVf ZGF0YS0+eHRhbF9jbGtfc2VsX211eC5mbGFncyA9IENMS19NVVhfUk9VTkRfQ0xPU0VTVDsKKwkJ cmV0ID0gbWVzb25fdWFydF9yZWdpc3Rlcl9jbGsocG9ydCwgInh0YWxfY2xrX3NlbCIsCisJCQkJ CSAgICAgIHh0YWxfY2xrX3NlbF9tdXhfcGFyZW50cywKKwkJCQkJICAgICAgQVJSQVlfU0laRSh4 dGFsX2Nsa19zZWxfbXV4X3BhcmVudHMpLAorCQkJCQkgICAgICAmY2xrX211eF9vcHMsCisJCQkJ CSAgICAgICZwcml2YXRlX2RhdGEtPnh0YWxfY2xrX3NlbF9tdXguaHcpOworCQlpZiAocmV0KQor CQkJcmV0dXJuIHJldDsKKworCQl4dGFsMl9jbGtfc2VsX211eF9wYXJlbnRzWzBdLmh3ID0gJnBy aXZhdGVfZGF0YS0+eHRhbF9jbGtfc2VsX211eC5odzsKKwkJeHRhbDJfY2xrX3NlbF9tdXhfcGFy ZW50c1sxXS5odyA9ICZwcml2YXRlX2RhdGEtPnh0YWxfZGl2Mi5odzsKKworCQlwcml2YXRlX2Rh dGEtPnh0YWwyX2Nsa19zZWxfbXV4LnJlZyA9IHBvcnQtPm1lbWJhc2UgKyBBTUxfVUFSVF9SRUc1 OworCQlwcml2YXRlX2RhdGEtPnh0YWwyX2Nsa19zZWxfbXV4Lm1hc2sgPSAweDE7CisJCXByaXZh dGVfZGF0YS0+eHRhbDJfY2xrX3NlbF9tdXguc2hpZnQgPSAyNzsKKwkJcHJpdmF0ZV9kYXRhLT54 dGFsMl9jbGtfc2VsX211eC5mbGFncyA9IENMS19NVVhfUk9VTkRfQ0xPU0VTVDsKKwkJcmV0ID0g bWVzb25fdWFydF9yZWdpc3Rlcl9jbGsocG9ydCwgInh0YWwyX2Nsa19zZWwiLAorCQkJCQkgICAg ICB4dGFsMl9jbGtfc2VsX211eF9wYXJlbnRzLAorCQkJCQkgICAgICBBUlJBWV9TSVpFKHh0YWwy X2Nsa19zZWxfbXV4X3BhcmVudHMpLAorCQkJCQkgICAgICAmY2xrX211eF9vcHMsCisJCQkJCSAg ICAgICZwcml2YXRlX2RhdGEtPnh0YWwyX2Nsa19zZWxfbXV4Lmh3KTsKKwkJaWYgKHJldCkKKwkJ CXJldHVybiByZXQ7CisKKwkJdXNlX3h0YWxfbXV4X3BhcmVudHNbMV0uaHcgPSAmcHJpdmF0ZV9k YXRhLT54dGFsMl9jbGtfc2VsX211eC5odzsKKwl9IGVsc2UgeworCQl1c2VfeHRhbF9tdXhfcGFy ZW50c1sxXS5odyA9ICZwcml2YXRlX2RhdGEtPnh0YWxfZGl2My5odzsKKwl9CisKKwlwcml2YXRl X2RhdGEtPnVzZV94dGFsX211eC5yZWcgPSBwb3J0LT5tZW1iYXNlICsgQU1MX1VBUlRfUkVHNTsK Kwlwcml2YXRlX2RhdGEtPnVzZV94dGFsX211eC5tYXNrID0gMHgxOworCXByaXZhdGVfZGF0YS0+ dXNlX3h0YWxfbXV4LnNoaWZ0ID0gMjQ7CisJcHJpdmF0ZV9kYXRhLT51c2VfeHRhbF9tdXguZmxh Z3MgPSBDTEtfTVVYX1JPVU5EX0NMT1NFU1Q7CisJcmV0ID0gbWVzb25fdWFydF9yZWdpc3Rlcl9j bGsocG9ydCwgInVzZV94dGFsIiwgdXNlX3h0YWxfbXV4X3BhcmVudHMsCisJCQkJICAgICAgQVJS QVlfU0laRSh1c2VfeHRhbF9tdXhfcGFyZW50cyksCisJCQkJICAgICAgJmNsa19tdXhfb3BzLAor CQkJCSAgICAgICZwcml2YXRlX2RhdGEtPnVzZV94dGFsX211eC5odyk7CisJaWYgKHJldCkKKwkJ cmV0dXJuIHJldDsKKworCWJhdWRfZGl2X3BhcmVudC5odyA9ICZwcml2YXRlX2RhdGEtPnVzZV94 dGFsX211eC5odzsKKworCXByaXZhdGVfZGF0YS0+YmF1ZF9kaXYucmVnID0gcG9ydC0+bWVtYmFz ZSArIEFNTF9VQVJUX1JFRzU7CisJcHJpdmF0ZV9kYXRhLT5iYXVkX2Rpdi5zaGlmdCA9IDA7CisJ cHJpdmF0ZV9kYXRhLT5iYXVkX2Rpdi53aWR0aCA9IDIzOworCXByaXZhdGVfZGF0YS0+YmF1ZF9k aXYuZmxhZ3MgPSBDTEtfRElWSURFUl9ST1VORF9DTE9TRVNUOworCXJldCA9IG1lc29uX3VhcnRf cmVnaXN0ZXJfY2xrKHBvcnQsICJiYXVkX2RpdiIsCisJCQkJICAgICAgJmJhdWRfZGl2X3BhcmVu dCwgMSwKKwkJCQkgICAgICAmY2xrX2RpdmlkZXJfb3BzLAorCQkJCSAgICAgICZwcml2YXRlX2Rh dGEtPmJhdWRfZGl2Lmh3KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcHJpdmF0ZV9k YXRhLT5iYXVkX2NsayA9IGRldm1fY2xrX2h3X2dldF9jbGsocG9ydC0+ZGV2LAorCQkJCQkJICAg ICAmcHJpdmF0ZV9kYXRhLT5iYXVkX2Rpdi5odywKKwkJCQkJCSAgICAgImJhdWRfcmF0ZSIpOwor CWlmIChJU19FUlIocHJpdmF0ZV9kYXRhLT5iYXVkX2NsaykpCisJCXJldHVybiBkZXZfZXJyX3By b2JlKHBvcnQtPmRldiwKKwkJCQkgICAgIFBUUl9FUlIocHJpdmF0ZV9kYXRhLT5iYXVkX2Nsayks CisJCQkJICAgICAiRmFpbGVkIHRvIHJlcXVlc3QgdGhlICdiYXVkX3JhdGUnIGNsb2NrXG4iKTsK IAogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IG1lc29uX3VhcnRfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKIHsKKwlzdHJ1Y3QgbWVzb25fdWFydF9kYXRhICpwcml2YXRl X2RhdGE7CiAJc3RydWN0IHJlc291cmNlICpyZXNfbWVtLCAqcmVzX2lycTsKKwlzdHJ1Y3QgY2xr ICpjbGtfYmF1ZCwgKmNsa194dGFsOworCWJvb2wgcmVnaXN0ZXJfY2xrODFfZGl2NDsKIAlzdHJ1 Y3QgdWFydF9wb3J0ICpwb3J0OwogCXUzMiBmaWZvc2l6ZSA9IDY0OyAvKiBEZWZhdWx0IGlzIDY0 LCAxMjggZm9yIEVFIFVBUlRfMCAqLwogCWludCByZXQgPSAwOwpAQCAtNzE1LDE4ICs4NTksMzcg QEAgc3RhdGljIGludCBtZXNvbl91YXJ0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpCiAJCXJldHVybiAtRUJVU1k7CiAJfQogCi0JcG9ydCA9IGRldm1fa3phbGxvYygmcGRldi0+ ZGV2LCBzaXplb2Yoc3RydWN0IHVhcnRfcG9ydCksIEdGUF9LRVJORUwpOwotCWlmICghcG9ydCkK Kwlwcml2YXRlX2RhdGEgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpwcml2YXRl X2RhdGEpLAorCQkJCSAgICBHRlBfS0VSTkVMKTsKKwlpZiAoIXByaXZhdGVfZGF0YSkKIAkJcmV0 dXJuIC1FTk9NRU07CiAKKwlpZiAoZGV2aWNlX2dldF9tYXRjaF9kYXRhKCZwZGV2LT5kZXYpKQor CQlwcml2YXRlX2RhdGEtPmhhc194dGFsX2Nsa19zZWwgPSB0cnVlOworCisJcHJpdmF0ZV9kYXRh LT5wY2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJwY2xrIik7CisJaWYgKElTX0VSUihw cml2YXRlX2RhdGEtPnBjbGspKQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZSgmcGRldi0+ZGV2LCBQ VFJfRVJSKHByaXZhdGVfZGF0YS0+cGNsayksCisJCQkJICAgICAiRmFpbGVkIHRvIGdldCB0aGUg J3BjbGsnIGNsb2NrXG4iKTsKKworCWNsa19iYXVkID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYs ICJiYXVkIik7CisJaWYgKElTX0VSUihjbGtfYmF1ZCkpCisJCXJldHVybiBkZXZfZXJyX3Byb2Jl KCZwZGV2LT5kZXYsIFBUUl9FUlIoY2xrX2JhdWQpLAorCQkJCSAgICAgIkZhaWxlZCB0byBnZXQg dGhlICdiYXVkJyBjbG9ja1xuIik7CisKKwljbGtfeHRhbCA9IGRldm1fY2xrX2dldCgmcGRldi0+ ZGV2LCAieHRhbCIpOworCWlmIChJU19FUlIoY2xrX3h0YWwpKQorCQlyZXR1cm4gZGV2X2Vycl9w cm9iZSgmcGRldi0+ZGV2LCBQVFJfRVJSKGNsa194dGFsKSwKKwkJCQkgICAgICJGYWlsZWQgdG8g Z2V0IHRoZSAneHRhbCcgY2xvY2tcbiIpOworCisJcmVnaXN0ZXJfY2xrODFfZGl2NCA9IGNsa19n ZXRfcmF0ZShjbGtfeHRhbCkgIT0gY2xrX2dldF9yYXRlKGNsa19iYXVkKTsKKworCXBvcnQgPSAm cHJpdmF0ZV9kYXRhLT5wb3J0OworCiAJcG9ydC0+bWVtYmFzZSA9IGRldm1faW9yZW1hcF9yZXNv dXJjZSgmcGRldi0+ZGV2LCByZXNfbWVtKTsKIAlpZiAoSVNfRVJSKHBvcnQtPm1lbWJhc2UpKQog CQlyZXR1cm4gUFRSX0VSUihwb3J0LT5tZW1iYXNlKTsKIAotCXJldCA9IG1lc29uX3VhcnRfcHJv YmVfY2xvY2tzKHBkZXYsIHBvcnQpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KIAlwb3J0 LT5pb3R5cGUgPSBVUElPX01FTTsKIAlwb3J0LT5tYXBiYXNlID0gcmVzX21lbS0+c3RhcnQ7CiAJ cG9ydC0+bWFwc2l6ZSA9IHJlc291cmNlX3NpemUocmVzX21lbSk7CkBAIC03MzksNiArOTAyLDEy IEBAIHN0YXRpYyBpbnQgbWVzb25fdWFydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQogCXBvcnQtPnhfY2hhciA9IDA7CiAJcG9ydC0+b3BzID0gJm1lc29uX3VhcnRfb3BzOwog CXBvcnQtPmZpZm9zaXplID0gZmlmb3NpemU7CisJcG9ydC0+dWFydGNsayA9IGNsa19nZXRfcmF0 ZShjbGtfYmF1ZCk7CisJcG9ydC0+cHJpdmF0ZV9kYXRhID0gcHJpdmF0ZV9kYXRhOworCisJcmV0 ID0gbWVzb25fdWFydF9wcm9iZV9jbG9ja3MocG9ydCwgcmVnaXN0ZXJfY2xrODFfZGl2NCk7CisJ aWYgKHJldCkKKwkJcmV0dXJuIHJldDsKIAogCW1lc29uX3BvcnRzW3BkZXYtPmlkXSA9IHBvcnQ7 CiAJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcG9ydCk7CkBAIC03NjUsMTAgKzkzNCw0MiBA QCBzdGF0aWMgaW50IG1lc29uX3VhcnRfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpCiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1lc29uX3VhcnRfZHRf bWF0Y2hbXSA9IHsKLQl7IC5jb21wYXRpYmxlID0gImFtbG9naWMsbWVzb242LXVhcnQiIH0sCi0J eyAuY29tcGF0aWJsZSA9ICJhbWxvZ2ljLG1lc29uOC11YXJ0IiB9LAotCXsgLmNvbXBhdGlibGUg PSAiYW1sb2dpYyxtZXNvbjhiLXVhcnQiIH0sCi0JeyAuY29tcGF0aWJsZSA9ICJhbWxvZ2ljLG1l c29uLWd4LXVhcnQiIH0sCisJeworCQkuY29tcGF0aWJsZSA9ICJhbWxvZ2ljLG1lc29uNi11YXJ0 IiwKKwkJLmRhdGEgPSAodm9pZCAqKWZhbHNlLAorCX0sCisJeworCQkuY29tcGF0aWJsZSA9ICJh bWxvZ2ljLG1lc29uOC11YXJ0IiwKKwkJLmRhdGEgPSAodm9pZCAqKWZhbHNlLAorCX0sCisJewor CQkuY29tcGF0aWJsZSA9ICJhbWxvZ2ljLG1lc29uOGItdWFydCIsCisJCS5kYXRhID0gKHZvaWQg KilmYWxzZSwKKwl9LAorCXsKKwkJLmNvbXBhdGlibGUgPSAiYW1sb2dpYyxtZXNvbi1neGJiLXVh cnQiLAorCQkuZGF0YSA9ICh2b2lkICopZmFsc2UsCisJfSwKKwl7CisJCS5jb21wYXRpYmxlID0g ImFtbG9naWMsbWVzb24tZ3hsLXVhcnQiLAorCQkuZGF0YSA9ICh2b2lkICopdHJ1ZSwKKwl9LAor CXsKKwkJLmNvbXBhdGlibGUgPSAiYW1sb2dpYyxtZXNvbi1nMTJhLXVhcnQiLAorCQkuZGF0YSA9 ICh2b2lkICopdHJ1ZSwKKwl9LAorCXsKKwkJLmNvbXBhdGlibGUgPSAiYW1sb2dpYyxtZXNvbi1z NC11YXJ0IiwKKwkJLmRhdGEgPSAodm9pZCAqKXRydWUsCisJfSwKKwkvKgorCSAqIGRlcHJlY2F0 ZWQsIGRvbid0IHVzZSBhbnltb3JlIGJlY2F1c2UgaXQgZG9lc24ndCBkaWZmZXJlbnRpYXRlCisJ ICogYmV0d2VlbiBHWEJCIGFuZCBHWEwgd2hpY2ggaGF2ZSBkaWZmZXJlbnQgcmV2aXNpb25zIG9m IHRoZSBVQVJUIElQLgorCSAqLworCXsKKwkJLmNvbXBhdGlibGUgPSAiYW1sb2dpYyxtZXNvbi1n eC11YXJ0IiwKKwkJLmRhdGEgPSAodm9pZCAqKWZhbHNlLAorCX0sCiAJeyAvKiBzZW50aW5lbCAq LyB9LAogfTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1lc29uX3VhcnRfZHRfbWF0Y2gpOwot LSAKMi4zNC4xCgo= --0000000000000f725305d42636f6--