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 14DCDD6EBEF for ; Fri, 29 Nov 2024 08:57: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-Transfer-Encoding:Content-Type: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=vjZMYOSWor91ImQDjZflVZ3+XZ+KBY62m4/eLECX+mY=; b=4wjGd6Rj3woEax CxZm746pAV+rwkaVm3rxiE82VrTaDDp9+Ae6ePhcyRQlE+hFX7HB9ydE+gv2rMUwsMeARJYKl4fI7 ntiQ4NAWDXAqYEMGM0poAdiMk4j/8NakDNVm+OwSIot5WScyxfkpYrZxxevvBJRqoT6ktkfiTMJKL m47mfkPIvdLZU9M+KiNJRJ0P804azk1WovsXg5ysv7wWWfnJgIYdXdIbSu0+7cU91Jx8eUnQZgkEF il9sH+3L49Qcera9km66rB8rOw8FoTVftZW5nLh42RVYixEZr6nfYno75ya4XcnC2lwv82uroPf2C 9/fhz8GF9cgnYD0f6WUA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tGwo9-0000000HFtx-3OH4; Fri, 29 Nov 2024 08:57:01 +0000 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tGwg7-0000000HEKy-1EZL for linux-phy@lists.infradead.org; Fri, 29 Nov 2024 08:48:44 +0000 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-4349fd77b33so14642875e9.2 for ; Fri, 29 Nov 2024 00:48:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1732870121; x=1733474921; darn=lists.infradead.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=2PkQyuhys7G1VNXO6ofg16FC0sS07Akwiu7JTGVbtJ8=; b=Q1rLOjnIMI4tuucR5tRtqLDhmtfJX9lxpGfjqkrozZ4K5X4fUQDGsLcUOHaJn50g3D eLDW+y7eXqWa2irlsXTsv0/SniLwE1Uj5PpMUfdR3clcBiB837cBUA9P4cLaNZ9tyYkb QFaH7LTvfyM2cQF6JPQL2JIBNdCvOL/FwqpEc8sP4IjamwPIHuCctgP0RtZKdi/3zOql fpOl6AwF51plt+fPLwz8o0MjWRymzoDKPG1b3Z9P0w5eH0YPKn+RleEN3XbKq83Z+5x0 p3sOK2rg/sdP7BTHY7m8Vo819GAFtV+fBtHy91uboGcNXcd/B4CZZNnwYmp73a73Q+Ix 8hBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732870121; x=1733474921; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=2PkQyuhys7G1VNXO6ofg16FC0sS07Akwiu7JTGVbtJ8=; b=hvIR/l61sizghAYxmyF0QR0m/ox+bm26N1uoh3VHPJawOfIBWA7Btotju97L4exa5O rDnuBBkt3EGBHp1V2szZFe/xhEyzrWbLi1rFU54Ynvm+5EpCLOHDC7LuYPWRxDF4wlaD kYqTngTWS/eQVMSNsuhrCDCYfh/nHzemPpxRmDnV84k0Zw5ZL/omOpVWWVKWgqbxmiSP v98B+wYP9SGiAWWHvjw2t417HJSC5Kcncu5GDI2MAw1cMWG+ABB8hLjoibJZYwvW86Zk KVNqIk28VHWbhkiPO88NoI8ntr+V3Xs77krZyMwnsDMyHJoYopdCsHqPXpRc2w4dEv6a l3+w== X-Forwarded-Encrypted: i=1; AJvYcCUgO9sKgdLbwTH9OflygnwLEMnAjiICzuiCeIMYvpz7tdHz7S/97UNPqNXaAhtvsBEPhv+WU/HmLS8=@lists.infradead.org X-Gm-Message-State: AOJu0Yy2ryk5GSzLOouYKaoCFz0PA/Xrs3wTosQdiXDdoWGGKzNGKUQW Tlp+hGzYGUjnbtn4HHLdpcYEMn3KLHqq2eQOYOxOj60LBOKoP/dZI+Q8etc2qy0= X-Gm-Gg: ASbGncs9cTKTOtDQD5BA7maHnD/mfdjrBKVnKS6JpyuQ6wmJSCl6++QdjCxoE+JKpla J4ta04Dy4zdey3c5N+YXzHbpOD4+dnxexFLKbrKLst2NeA3lNwRP76QySpcBDtv831h3UFHha/v tgdvUQekZb8JqxZK9zZe3za/J713mXIAODGvOCUVm0kHpFIHJ/o+3BEI7Yd3PtqNajowVr00ceD u7pRYu3rAivztIl9ku7VJzXqmdt1sn5GS1UB7MwqcuOjY0rGWBvaRM8fQ== X-Google-Smtp-Source: AGHT+IHOrdw05njzpGOyCesmp5YA3v4j4ngUQt/RUP7bLsFXyj13G3qk8T1q/D5WDxY5zb5XKDBk4A== X-Received: by 2002:a05:600c:1d18:b0:426:8884:2c58 with SMTP id 5b1f17b1804b1-434a9dbbcc7mr100701195e9.4.1732870119927; Fri, 29 Nov 2024 00:48:39 -0800 (PST) Received: from [192.168.50.4] ([82.78.167.46]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-434b0f70cb2sm45550775e9.37.2024.11.29.00.48.37 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 29 Nov 2024 00:48:39 -0800 (PST) Message-ID: <32fa7eb8-2139-454c-8866-cb264d060616@tuxon.dev> Date: Fri, 29 Nov 2024 10:48:36 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 02/15] soc: renesas: Add SYSC driver for Renesas RZ family Content-Language: en-US To: Geert Uytterhoeven Cc: vkoul@kernel.org, kishon@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, p.zabel@pengutronix.de, magnus.damm@gmail.com, gregkh@linuxfoundation.org, yoshihiro.shimoda.uh@renesas.com, christophe.jaillet@wanadoo.fr, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-usb@vger.kernel.org, Claudiu Beznea References: <20241126092050.1825607-1-claudiu.beznea.uj@bp.renesas.com> <20241126092050.1825607-3-claudiu.beznea.uj@bp.renesas.com> From: Claudiu Beznea In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241129_004843_339154_9AD61FE8 X-CRM114-Status: GOOD ( 40.92 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org SGksIEdlZXJ0LAoKT24gMjguMTEuMjAyNCAxNzoyNCwgR2VlcnQgVXl0dGVyaG9ldmVuIHdyb3Rl Ogo+IEhpIENsYXVkaXUsCj4gCj4gVGhhbmtzIGZvciB5b3VyIHBhdGNoIQo+IAo+IE9uIFR1ZSwg Tm92IDI2LCAyMDI0IGF0IDEwOjIx4oCvQU0gQ2xhdWRpdSA8Y2xhdWRpdS5iZXpuZWFAdHV4b24u ZGV2PiB3cm90ZToKPj4gRnJvbTogQ2xhdWRpdSBCZXpuZWEgPGNsYXVkaXUuYmV6bmVhLnVqQGJw LnJlbmVzYXMuY29tPgo+Pgo+PiBUaGUgUlovRzNTIHN5c3RlbSBjb250cm9sbGVyIChTWVNDKSBo YXMgdmFyaW91cyByZWdpc3RlcnMgdGhhdCBjb250cm9sCj4+IHNpZ25hbHMgc3BlY2lmaWMgdG8g aW5kaXZpZHVhbCBJUHMuIElQIGRyaXZlcnMgbXVzdCBjb250cm9sIHRoZXNlIHNpZ25hbHMKPj4g YXQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24gcGhhc2VzLgo+Pgo+PiBBZGQgU1lTQyBkcml2ZXIg dGhhdCBhbGxvd3MgaW5kaXZpZHVhbCBTWVNDIGNvbnN1bWVycyB0byBjb250cm9sIHRoZXNlCj4+ IHNpZ25hbHMuIFRoZSBTWVNDIGRyaXZlciBleHBvcnRzIGEgc3lzY29uIHJlZ21hcCBlbmFibGlu ZyBJUCBkcml2ZXJzIHRvCj4+IHVzZSBhIHNwZWNpZmljIFNZU0Mgb2Zmc2V0IGFuZCBtYXNrIGZy b20gdGhlIGRldmljZSB0cmVlLCB3aGljaCBjYW4gdGhlbiBiZQo+PiBhY2Nlc3NlZCB0aHJvdWdo IHJlZ21hcF91cGRhdGVfYml0cygpLgo+Pgo+PiBDdXJyZW50bHksIHRoZSBTWVNDIGRyaXZlciBw cm92aWRlcyBjb250cm9sIHRvIHRoZSBVU0IgUFdSUkRZIHNpZ25hbCwgd2hpY2gKPj4gaXMgcm91 dGVkIHRvIHRoZSBVU0IgUEhZLiBUaGlzIHNpZ25hbCBuZWVkcyB0byBiZSBtYW5hZ2VkIGJlZm9y ZSBvciBhZnRlcgo+PiBwb3dlcmluZyB0aGUgVVNCIFBIWSBvZmYgb3Igb24uCj4+Cj4+IE90aGVy IFNZU0Mgc2lnbmFscyBjYW5kaWRhdGVzIChhcyBleHBvc2VkIGluIHRoZSB0aGUgaGFyZHdhcmUg bWFudWFsIG9mIHRoZQo+IAo+IHMvdGhlIHRoZS90aGUvCj4gCj4+IFJaL0czUyBTb0MpIGluY2x1 ZGU6Cj4+Cj4+ICogUENJZToKPj4gLSBBTExPV19FTlRFUl9MMSBzaWduYWwgY29udHJvbGxlZCB0 aHJvdWdoIHRoZSBTWVNfUENJRV9DRkcgcmVnaXN0ZXIKPj4gLSBQQ0lFX1JTVF9SU01fQiBzaWdu YWwgY29udHJvbGxlZCB0aHJvdWdoIHRoZSBTWVNfUENJRV9SU1RfUlNNX0IKPj4gICByZWdpc3Rl cgo+PiAtIE1PREVfUlhURVJNSU5BVElPTiBzaWduYWwgY29udHJvbGxlZCB0aHJvdWdoIFNZU19Q Q0lFX1BIWSByZWdpc3Rlcgo+Pgo+PiAqIFNQSToKPj4gLSBTRUxfU1BJX09DVEEgc2lnbmFsIGNv bnRyb2xsZWQgdGhyb3VnaCBTWVNfSVBDT05UX1NFTF9TUElfT0NUQQo+PiAgIHJlZ2lzdGVyCj4+ Cj4+ICogSTJDL0kzQzoKPj4gLSBhZl9ieXBhc3MgSTJDIHNpZ25hbHMgY29udHJvbGxlZCB0aHJv dWdoIFNZU19JMkN4X0NGRyByZWdpc3RlcnMKPj4gICAoeD0wLi4zKQo+PiAtIGFmX2J5cGFzcyBJ M0Mgc2lnbmFsIGNvbnRyb2xsZWQgdGhyb3VnaCBTWVNfSTNDX0NGRyByZWdpc3Rlcgo+Pgo+PiAq IEV0aGVybmV0Ogo+PiAtIEZFQ19HSUdBX0VOQUJMRSBFdGhlcm5ldCBzaWduYWxzIGNvbnRyb2xs ZWQgdGhyb3VnaCBTWVNfR0VUSHhfQ0ZHCj4+ICAgcmVnaXN0ZXJzICh4PTAuLjEpCj4+Cj4+IEFz IGRpZmZlcmVudCBSZW5lc2FzIFJaIFNvQyBzaGFyZXMgbW9zdCBvZiB0aGUgU1lTQyBmdW5jdGlv bmFsaXRpZXMKPj4gYXZhaWxhYmxlIG9uIHRoZSBSWi9HM1MgU29DLCB0aGUgZHJpdmVyIGlmIGZv cm1lZCBvZiBhIFNZU0MgY29yZQo+PiBwYXJ0IGFuZCBhIFNvQyBzcGVjaWZpYyBwYXJ0IGFsbG93 aW5nIGluZGl2aWR1YWwgU1lTQyBTb0MgdG8gcHJvdmlkZQo+PiBmdW5jdGlvbmFsaXRpZXMgdG8g dGhlIFNZU0MgY29yZS4KPj4KPj4gU2lnbmVkLW9mZi1ieTogQ2xhdWRpdSBCZXpuZWEgPGNsYXVk aXUuYmV6bmVhLnVqQGJwLnJlbmVzYXMuY29tPgo+IAo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBi L2RyaXZlcnMvc29jL3JlbmVzYXMvcjlhMDhnMDQ1LXN5c2MuYwo+PiBAQCAtMCwwICsxLDMxIEBA Cj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+PiArLyoKPj4gKyAqIFJa L0czUyBTeXN0ZW0gY29udHJvbGxlciBkcml2ZXIKPj4gKyAqCj4+ICsgKiBDb3B5cmlnaHQgKEMp IDIwMjQgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3JwLgo+PiArICovCj4+ICsKPj4gKyNpbmNsdWRl IDxsaW51eC9hcnJheV9zaXplLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvYml0cy5oPgo+PiArI2lu Y2x1ZGUgPGxpbnV4L2luaXQuaD4KPj4gKwo+PiArI2luY2x1ZGUgInJ6LXN5c2MuaCIKPj4gKwo+ PiArI2RlZmluZSBTWVNfVVNCX1BXUlJEWSAgICAgICAgIDB4ZDcwCj4+ICsjZGVmaW5lIFNZU19V U0JfUFdSUkRZX1BXUlJEWV9OICAgICAgICBCSVQoMCkKPj4gKyNkZWZpbmUgU1lTX01BWF9SRUcg ICAgICAgICAgICAweGUyMAo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJ6X3N5c2Nfc2ln bmFsX2luaXRfZGF0YSByemczc19zeXNjX3NpZ25hbHNfaW5pdF9kYXRhW10gX19pbml0Y29uc3Qg PSB7Cj4gCj4gVGhpcyBpcyBtYXJrZWQgX19pbml0Y29uc3QuLi4KPiAKPj4gKyAgICAgICB7Cj4+ ICsgICAgICAgICAgICAgICAubmFtZSA9ICJ1c2ItcHdycmR5IiwKPj4gKyAgICAgICAgICAgICAg IC5vZmZzZXQgPSBTWVNfVVNCX1BXUlJEWSwKPj4gKyAgICAgICAgICAgICAgIC5tYXNrID0gU1lT X1VTQl9QV1JSRFlfUFdSUkRZX04sCj4+ICsgICAgICAgICAgICAgICAucmVmY250X2luY3JfdmFs ID0gMAo+PiArICAgICAgIH0KPj4gK307Cj4+ICsKPj4gK2NvbnN0IHN0cnVjdCByel9zeXNjX2lu aXRfZGF0YSByemczc19zeXNjX2luaXRfZGF0YSA9IHsKPiAKPiAuLi4gYnV0IHRoaXMgaXMgbm90 IF9faW5pdCwgY2F1c2luZyBhIHNlY3Rpb24gbWlzbWF0Y2guCgpEbyB5b3Uga25vdyBpZiB0aGVy ZSBpcyBhIHdheSB0byBkZXRlY3QgdGhpcz8KCj4gCj4+ICsgICAgICAgLnNpZ25hbHNfaW5pdF9k YXRhID0gcnpnM3Nfc3lzY19zaWduYWxzX2luaXRfZGF0YSwKPj4gKyAgICAgICAubnVtX3NpZ25h bHMgPSBBUlJBWV9TSVpFKHJ6ZzNzX3N5c2Nfc2lnbmFsc19pbml0X2RhdGEpLAo+PiArICAgICAg IC5tYXhfcmVnaXN0ZXJfb2Zmc2V0ID0gU1lTX01BWF9SRUcsCj4+ICt9Owo+IAo+PiAtLS0gL2Rl di9udWxsCj4+ICsrKyBiL2RyaXZlcnMvc29jL3JlbmVzYXMvcnotc3lzYy5jCj4gCj4+ICsvKioK Pj4gKyAqIHN0cnVjdCByel9zeXNjIC0gUlogU1lTQyBwcml2YXRlIGRhdGEgc3RydWN0dXJlCj4+ ICsgKiBAYmFzZTogU1lTQyBiYXNlIGFkZHJlc3MKPj4gKyAqIEBkZXY6IFNZU0MgZGV2aWNlIHBv aW50ZXIKPj4gKyAqIEBzaWduYWxzOiBTWVNDIHNpZ25hbHMKPj4gKyAqIEBudW1fc2lnbmFsczog bnVtYmVyIG9mIFNZU0Mgc2lnbmFscwo+PiArICovCj4+ICtzdHJ1Y3Qgcnpfc3lzYyB7Cj4+ICsg ICAgICAgdm9pZCBfX2lvbWVtICpiYXNlOwo+PiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldjsK Pj4gKyAgICAgICBzdHJ1Y3Qgcnpfc3lzY19zaWduYWwgKnNpZ25hbHM7Cj4+ICsgICAgICAgdTgg bnVtX3NpZ25hbHM7Cj4gCj4gWW91IGNvdWxkIGNoYW5nZSBzaWduYWxzIHRvIGEgZmxleGlibGUg YXJyYXkgYXQgdGhlIGVuZCwgdGFnIGl0IHdpdGgKPiBfX2NvdW50ZWRfYnkobnVtX3NpZ25hbHMp LCBhbmQgYWxsb2NhdGUgc3BhY2UgZm9yIGJvdGggc3RydWN0IHJ6X3N5c2MKPiBhbmQgdGhlIHNp Z25hbHMgYXJyYXkgdXNpbmcgc3RydWN0X3NpemUoKSwgcmVkdWNpbmcgdGhlIG51bWJlciBvZgo+ IGFsbG9jYXRpb25zLgoKSSdsbCBsb29rIGludG8gdGhpcy4KCj4gCj4+ICt9Owo+IAo+PiArc3Rh dGljIHN0cnVjdCByel9zeXNjX3NpZ25hbCAqcnpfc3lzY19vZmZfdG9fc2lnbmFsKHN0cnVjdCBy el9zeXNjICpzeXNjLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1hc2spCj4+ICt7 Cj4+ICsgICAgICAgc3RydWN0IHJ6X3N5c2Nfc2lnbmFsICpzaWduYWxzID0gc3lzYy0+c2lnbmFs czsKPj4gKwo+PiArICAgICAgIGZvciAodTMyIGkgPSAwOyBpIDwgc3lzYy0+bnVtX3NpZ25hbHM7 IGkrKykgewo+IAo+IHMvdTMyL3Vuc2lnbmVkIGludC8KPiAKPj4gKyAgICAgICAgICAgICAgIGlm IChzaWduYWxzW2ldLmluaXRfZGF0YS0+b2Zmc2V0ICE9IG9mZnNldCkKPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgY29udGludWU7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIC8qCj4+ICsgICAg ICAgICAgICAgICAgKiBJbiBjYXNlIG1hc2sgPT0gMCB3ZSBqdXN0IHJldHVybiB0aGUgc2lnbmFs IGRhdGEgdy9vIGNoZWNraW5nIHRoZSBtYXNrLgo+PiArICAgICAgICAgICAgICAgICogVGhpcyBp cyB1c2VmdWwgd2hlbiBjYWxsaW5nIHRocm91Z2ggcnpfc3lzY19yZWdfd3JpdGUoKSB0byBjaGVj awo+PiArICAgICAgICAgICAgICAgICogaWYgdGhlIHJlcXVlc3RlZCBzZXR0aW5nIGlzIGZvciBh IG1hcHBlZCBzaWduYWwgb3Igbm90Lgo+PiArICAgICAgICAgICAgICAgICovCj4+ICsgICAgICAg ICAgICAgICBpZiAobWFzaykgewo+PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2lnbmFs c1tpXS5pbml0X2RhdGEtPm1hc2sgPT0gbWFzaykKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gJnNpZ25hbHNbaV07Cj4+ICsgICAgICAgICAgICAgICB9IGVsc2Ugewo+ PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJnNpZ25hbHNbaV07Cj4+ICsgICAgICAg ICAgICAgICB9Cj4gCj4gaWYgKCFtYXNrIHx8IHNpZ25hbHNbaV0uaW5pdF9kYXRhLT5tYXNrID09 IG1hc2spCj4gICAgICAgICByZXR1cm4gJnNpZ25hbHNbaV07CgpMb29rcyBiZXR0ZXIsIGluZGVl ZCEKCj4gCj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAgcmV0dXJuIE5VTEw7Cj4+ICt9Cj4+ ICsKPj4gK3N0YXRpYyBpbnQgcnpfc3lzY19yZWdfdXBkYXRlX2JpdHModm9pZCAqY29udGV4dCwg dW5zaWduZWQgaW50IG9mZiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgbWFzaywgdW5zaWduZWQgaW50IHZhbCkKPj4gK3sKPj4gKyAgICAgICBzdHJ1 Y3Qgcnpfc3lzYyAqc3lzYyA9IGNvbnRleHQ7Cj4+ICsgICAgICAgc3RydWN0IHJ6X3N5c2Nfc2ln bmFsICpzaWduYWw7Cj4+ICsgICAgICAgYm9vbCB1cGRhdGUgPSBmYWxzZTsKPj4gKwo+PiArICAg ICAgIHNpZ25hbCA9IHJ6X3N5c2Nfb2ZmX3RvX3NpZ25hbChzeXNjLCBvZmYsIG1hc2spOwo+PiAr ICAgICAgIGlmIChzaWduYWwpIHsKPj4gKyAgICAgICAgICAgICAgIGlmIChzaWduYWwtPmluaXRf ZGF0YS0+cmVmY250X2luY3JfdmFsID09IHZhbCkgewo+PiArICAgICAgICAgICAgICAgICAgICAg ICBpZiAoIXJlZmNvdW50X3JlYWQoJnNpZ25hbC0+cmVmY250KSkgewo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlZmNvdW50X3NldCgmc2lnbmFsLT5yZWZjbnQsIDEpOwo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSA9IHRydWU7Cj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVmY291bnRfaW5jKCZzaWduYWwtPnJlZmNudCk7Cj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIH0KPj4gKyAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIHVwZGF0ZSA9IHJlZmNvdW50X2RlY19hbmRfdGVzdCgmc2lnbmFsLT5yZWZjbnQpOwo+PiAr ICAgICAgICAgICAgICAgfQo+PiArICAgICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgICAgICAgICB1 cGRhdGUgPSB0cnVlOwo+PiArICAgICAgIH0KPiAKPiBZb3UgY291bGQgcmVkdWNlIGluZGVudGF0 aW9uL251bWJlciBvZiBsaW5lcyBieSByZW9yZGVyaW5nIHRoZSBsb2dpYzoKPiAKPiAgICAgaWYg KCFzaWduYWwpIHsKPiAgICAgICAgICAgICB1cGRhdGUgPSB0cnVlOwo+ICAgICB9IGVsc2UgaWYg KHNpZ25hbC0+aW5pdF9kYXRhLT5yZWZjbnRfaW5jcl92YWwgIT0gdmFsKSB7Cj4gICAgICAgICAg ICAgdXBkYXRlID0gcmVmY291bnRfZGVjX2FuZF90ZXN0KCZzaWduYWwtPnJlZmNudCk7Cj4gICAg IH0gZWxzZSBpZiAoIXJlZmNvdW50X3JlYWQoJnNpZ25hbC0+cmVmY250KSkgewo+ICAgICAgICAg ICAgIHJlZmNvdW50X3NldCgmc2lnbmFsLT5yZWZjbnQsIDEpOwo+ICAgICAgICAgICAgIHVwZGF0 ZSA9IHRydWU7Cj4gICAgIH0gZWxzZSB7Cj4gICAgICAgICAgICAgcmVmY291bnRfaW5jKCZzaWdu YWwtPnJlZmNudCk7Cj4gICAgIH0KCkxvb2tzIGJldHRlciwgaW5kZWVkIQoKPiAKPj4gKwo+PiAr ICAgICAgIGlmICh1cGRhdGUpIHsKPj4gKyAgICAgICAgICAgICAgIHUzMiB0bXA7Cj4+ICsKPj4g KyAgICAgICAgICAgICAgIHRtcCA9IHJlYWRsKHN5c2MtPmJhc2UgKyBvZmYpOwo+PiArICAgICAg ICAgICAgICAgdG1wICY9IH5tYXNrOwo+PiArICAgICAgICAgICAgICAgdG1wIHw9IHZhbCAmIG1h c2s7Cj4+ICsgICAgICAgICAgICAgICB3cml0ZWwodG1wLCBzeXNjLT5iYXNlICsgb2ZmKTsKPj4g KyAgICAgICB9Cj4+ICsKPj4gKyAgICAgICByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGlj IGludCByel9zeXNjX3JlZ193cml0ZSh2b2lkICpjb250ZXh0LCB1bnNpZ25lZCBpbnQgb2ZmLCB1 bnNpZ25lZCBpbnQgdmFsKQo+PiArewo+PiArICAgICAgIHN0cnVjdCByel9zeXNjICpzeXNjID0g Y29udGV4dDsKPj4gKyAgICAgICBzdHJ1Y3Qgcnpfc3lzY19zaWduYWwgKnNpZ25hbDsKPj4gKwo+ PiArICAgICAgIC8qCj4+ICsgICAgICAgICogRm9yY2UgdXNpbmcgcmVnbWFwX3VwZGF0ZV9iaXRz KCkgZm9yIHNpZ25hbHMgdG8gaGF2ZSByZWZlcmVuY2UgY291bnRlcgo+PiArICAgICAgICAqIHBl ciBpbmRpdmlkdWFsIHNpZ25hbCBpbiBjYXNlIHRoZXJlIGFyZSBtdWx0aXBsZSBzaWduYWxzIGNv bnRyb2xsZWQKPj4gKyAgICAgICAgKiB0aHJvdWdoIHRoZSBzYW1lIHJlZ2lzdGVyLgo+PiArICAg ICAgICAqLwo+PiArICAgICAgIHNpZ25hbCA9IHJ6X3N5c2Nfb2ZmX3RvX3NpZ25hbChzeXNjLCBv ZmYsIDApOwo+PiArICAgICAgIGlmIChzaWduYWwpIHsKPj4gKyAgICAgICAgICAgICAgIGRldl9l cnIoc3lzYy0+ZGV2LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAicmVnbWFwX3dyaXRlKCkg bm90IGFsbG93ZWQgb24gcmVnaXN0ZXIgY29udHJvbGxpbmcgYSBzaWduYWwuIFVzZSByZWdtYXBf dXBkYXRlX2JpdHMoKSEiKTsKPj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsK Pj4gKyAgICAgICB9Cj4+ICsKPiAKPiBDYW4geW91IGV2ZXIgZ2V0IGhlcmUsIGdpdmVuIHJ6X3N5 c2Nfd3JpdGVhYmxlX3JlZygpIGJlbG93IHdvdWxkIGhhdmUKPiByZXR1cm5lZCBmYWxzZT8gCgpZ ZXMsIGluIGNhc2UgdGhlIHVzZXIgd2FudHMgdG8gYWNjZXNzIGEgcmVnaXN0ZXIgaGF2aW5nIGEg c2lnbmFsIGFzc29jaWF0ZWQuCgpJZiB1c2VyIGRvZXMgdGhpczoKCnJlZ21hcF93cml0ZShyZWdt YXAsIHNpZ25hbF9vZmZzZXQsIHZhbHVlKTsKClRoZSByel9zeXNjX3dyaXRlYWJsZV9yZWcoKSBy ZXR1cm5zIHRydWUgKGFzIGl0IGNoZWNrcyBvbmx5IHRoZSBzaWduYWwKb2Zmc2V0IGJ1dCBub3Qg dGhlIG1hc2spIGFuZCB0aGUgcnpfc3lzY19yZWdfd3JpdGUoKSByZWFjaCB0aGlzIHBvaW50LiBJ Zgp3ZSBhbGxvdyBpdCB0byBjb250aW51ZSB3ZSBjYW4gYnJlYWsgcmVmZXJlbmNlIGNvdW50aW5n IGZvciB0aGUgZXhpc3RpbmcKaW1wbGVtZW50ZWQgc2lnbmFscywgb3IsIGlmIHRoZXJlIGFyZSBt dWx0aXBsZSBzaWduYWxzIGhhbmRsZWQgdGhvcm91Z2ggdGhlCnNhbWUgcmVnaXN0ZXIsIHdlIGNh biBicmVhayBvdGhlciBzaWduYWxzLgoKPiBJZiBub3QsIGlzIHRoZXJlIGFueSBwb2ludCBpbiBo YXZpbmcgdGhpcyBmdW5jdGlvbj8KCkkgY2hvc2UgdG8gaGF2ZSBpdCBmb3IgKGN1cnJlbnRseSB1 bmV4aXN0aW5nKSBvdGhlciB1c2UgY2FzZXMgb2YgdGhlIHN5c2NvbgorIHJlZ21hcCBleHBvcnRl ZCBieSB0aGlzIGRyaXZlci4gRm9yIHRoZSBtb21lbnQsIGl0IGlzIG5vdCBuZWNlc3NhcnksCmlu ZGVlZC4gSSBjYW4gZHJvcCBpdCBpZiB5b3UgcHJlZmVyLgoKPiAKPj4gKyAgICAgICB3cml0ZWwo dmFsLCBzeXNjLT5iYXNlICsgb2ZmKTsKPj4gKwo+PiArICAgICAgIHJldHVybiAwOwo+PiArfQo+ PiArCj4+ICtzdGF0aWMgYm9vbCByel9zeXNjX3dyaXRlYWJsZV9yZWcoc3RydWN0IGRldmljZSAq ZGV2LCB1bnNpZ25lZCBpbnQgb2ZmKQo+PiArewo+PiArICAgICAgIHN0cnVjdCByel9zeXNjICpz eXNjID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4+ICsgICAgICAgc3RydWN0IHJ6X3N5c2Nfc2ln bmFsICpzaWduYWw7Cj4+ICsKPj4gKyAgICAgICAvKiBBbnkgcmVnaXN0ZXIgY29udGFpbmluZyBh IHNpZ25hbCBpcyB3cml0ZWFibGUuICovCj4+ICsgICAgICAgc2lnbmFsID0gcnpfc3lzY19vZmZf dG9fc2lnbmFsKHN5c2MsIG9mZiwgMCk7Cj4+ICsgICAgICAgaWYgKHNpZ25hbCkKPj4gKyAgICAg ICAgICAgICAgIHJldHVybiB0cnVlOwo+PiArCj4+ICsgICAgICAgcmV0dXJuIGZhbHNlOwo+PiAr fQo+IAo+PiArc3RhdGljIGludCByel9zeXNjX3NpZ25hbHNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUg KnMsIHZvaWQgKndoYXQpCj4+ICt7Cj4+ICsgICAgICAgc3RydWN0IHJ6X3N5c2MgKnN5c2MgPSBz LT5wcml2YXRlOwo+PiArCj4+ICsgICAgICAgc2VxX3ByaW50ZihzLCAiJS0yMHMgRW5hYmxlIGNv dW50XG4iLCAiU2lnbmFsIik7Cj4+ICsgICAgICAgc2VxX3ByaW50ZihzLCAiJS0yMHMgLS0tLS0t LS0tLS0tXG4iLCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKPj4gKwo+PiArICAgICAgIGZvciAo dTggaSA9IDA7IGkgPCBzeXNjLT5udW1fc2lnbmFsczsgaSsrKSB7Cj4+ICsgICAgICAgICAgICAg ICBzZXFfcHJpbnRmKHMsICIlLTIwcyAlZFxuIiwgc3lzYy0+c2lnbmFsc1tpXS5pbml0X2RhdGEt Pm5hbWUsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmNvdW50X3JlYWQoJnN5c2Mt PnNpZ25hbHNbaV0ucmVmY250KSk7Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAgcmV0dXJu IDA7Cj4+ICt9Cj4+ICtERUZJTkVfU0hPV19BVFRSSUJVVEUocnpfc3lzY19zaWduYWxzKTsKPiAK PiBXaGF0IGlzIHRoZSB1c2UtY2FzZSBmb3IgdGhpcz8gSnVzdCAoaW5pdGlhbCkgZGVidWdnaW5n PwoKT25seSBkZWJ1Z2dpbmcuCgo+IAo+PiArCj4+ICtzdGF0aWMgdm9pZCByel9zeXNjX2RlYnVn ZnNfcmVtb3ZlKHZvaWQgKmRhdGEpCj4+ICt7Cj4+ICsgICAgICAgZGVidWdmc19yZW1vdmVfcmVj dXJzaXZlKGRhdGEpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHJ6X3N5c2Nfc2lnbmFsc19p bml0KHN0cnVjdCByel9zeXNjICpzeXNjLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCByel9zeXNjX3NpZ25hbF9pbml0X2RhdGEgKmluaXRfZGF0YSwKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgbnVtX3NpZ25hbHMpCj4+ICt7Cj4+ ICsgICAgICAgc3RydWN0IGRlbnRyeSAqcm9vdDsKPj4gKyAgICAgICBpbnQgcmV0Owo+PiArCj4+ ICsgICAgICAgc3lzYy0+c2lnbmFscyA9IGRldm1fa2NhbGxvYyhzeXNjLT5kZXYsIG51bV9zaWdu YWxzLCBzaXplb2YoKnN5c2MtPnNpZ25hbHMpLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR0ZQX0tFUk5FTCk7Cj4+ICsgICAgICAgaWYgKCFzeXNjLT5zaWduYWxzKQo+ PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4+ICsKPj4gKyAgICAgICBmb3IgKHUz MiBpID0gMDsgaSA8IG51bV9zaWduYWxzOyBpKyspIHsKPiAKPiB1bnNpZ25lZCBpbnQKPiAKPj4g KyAgICAgICAgICAgICAgIHN0cnVjdCByel9zeXNjX3NpZ25hbF9pbml0X2RhdGEgKmlkOwo+PiAr Cj4+ICsgICAgICAgICAgICAgICBpZCA9IGRldm1fa3phbGxvYyhzeXNjLT5kZXYsIHNpemVvZigq aWQpLCBHRlBfS0VSTkVMKTsKPj4gKyAgICAgICAgICAgICAgIGlmICghaWQpCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+PiArCj4+ICsgICAgICAgICAgICAgICBp ZC0+bmFtZSA9IGRldm1fa3N0cmR1cChzeXNjLT5kZXYsIGluaXRfZGF0YS0+bmFtZSwgR0ZQX0tF Uk5FTCk7Cj4+ICsgICAgICAgICAgICAgICBpZiAoIWlkLT5uYW1lKQo+PiArICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPj4gKwo+PiArICAgICAgICAgICAgICAgaWQtPm9m ZnNldCA9IGluaXRfZGF0YS0+b2Zmc2V0Owo+PiArICAgICAgICAgICAgICAgaWQtPm1hc2sgPSBp bml0X2RhdGEtPm1hc2s7Cj4+ICsgICAgICAgICAgICAgICBpZC0+cmVmY250X2luY3JfdmFsID0g aW5pdF9kYXRhLT5yZWZjbnRfaW5jcl92YWw7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIHN5c2Mt PnNpZ25hbHNbaV0uaW5pdF9kYXRhID0gaWQ7Cj4+ICsgICAgICAgICAgICAgICByZWZjb3VudF9z ZXQoJnN5c2MtPnNpZ25hbHNbaV0ucmVmY250LCAwKTsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAg ICAgICBzeXNjLT5udW1fc2lnbmFscyA9IG51bV9zaWduYWxzOwo+PiArCj4+ICsgICAgICAgcm9v dCA9IGRlYnVnZnNfY3JlYXRlX2RpcigicmVuZXNhcy1yei1zeXNjIiwgTlVMTCk7Cj4+ICsgICAg ICAgcmV0ID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KHN5c2MtPmRldiwgcnpfc3lzY19kZWJ1 Z2ZzX3JlbW92ZSwgcm9vdCk7Cj4+ICsgICAgICAgaWYgKHJldCkKPj4gKyAgICAgICAgICAgICAg IHJldHVybiByZXQ7Cj4+ICsgICAgICAgZGVidWdmc19jcmVhdGVfZmlsZSgic2lnbmFscyIsIDA0 NDQsIHJvb3QsIHN5c2MsICZyel9zeXNjX3NpZ25hbHNfZm9wcyk7Cj4+ICsKPj4gKyAgICAgICBy ZXR1cm4gMDsKPj4gK30KPiAKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL3NvYy9y ZW5lc2FzL3J6LXN5c2MuaAo+PiBAQCAtMCwwICsxLDUyIEBACj4+ICsvKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMCAqLwo+PiArLyoKPj4gKyAqIFJlbmVzYXMgUlogU3lzdGVtIENv bnRyb2xsZXIKPj4gKyAqCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjQgUmVuZXNhcyBFbGVjdHJv bmljcyBDb3JwLgo+PiArICovCj4+ICsKPj4gKyNpZm5kZWYgX19TT0NfUkVORVNBU19SWl9TWVND X0hfXwo+PiArI2RlZmluZSBfX1NPQ19SRU5FU0FTX1JaX1NZU0NfSF9fCj4+ICsKPj4gKyNpbmNs dWRlIDxsaW51eC9yZWZjb3VudC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4+ICsK Pj4gKy8qKgo+PiArICogc3RydWN0IHJ6X3N5c2Nfc2lnbmFsX2luaXRfZGF0YSAtIFJaIFNZU0Mg c2lnbmFscyBpbml0IGRhdGEKPj4gKyAqIEBuYW1lOiBzaWduYWwgbmFtZQo+PiArICogQG9mZnNl dDogcmVnaXN0ZXIgb2Zmc2V0IGNvbnRyb2xpbmcgdGhpcyBzaWduYWwKPj4gKyAqIEBtYXNrOiBi aXRtYXNrIGluIHJlZ2lzdGVyIHNwZWNpZmljIHRvIHRoaXMgc2lnbmFsCj4+ICsgKiBAcmVmY250 X2luY3JfdmFsOiBpbmNyZW1lbnQgcmVmY250IHdoZW4gc2V0dGluZyB0aGlzIHZhbHVlCj4+ICsg Ki8KPj4gK3N0cnVjdCByel9zeXNjX3NpZ25hbF9pbml0X2RhdGEgewo+PiArICAgICAgIGNvbnN0 IGNoYXIgKm5hbWU7Cj4+ICsgICAgICAgdTMyIG9mZnNldDsKPj4gKyAgICAgICB1MzIgbWFzazsK Pj4gKyAgICAgICB1MzIgcmVmY250X2luY3JfdmFsOwo+PiArfTsKPj4gKwo+PiArLyoqCj4+ICsg KiBzdHJ1Y3Qgcnpfc3lzY19zaWduYWwgLSBSWiBTWVNDIHNpZ25hbHMKPj4gKyAqIEBpbml0X2Rh dGE6IHNpZ25hbHMgaW5pdGlhbGl6YXRpb24gZGF0YQo+PiArICogQHJlZmNudDogcmVmZXJlbmNl IGNvdW50ZXIKPj4gKyAqLwo+PiArc3RydWN0IHJ6X3N5c2Nfc2lnbmFsIHsKPj4gKyAgICAgICBj b25zdCBzdHJ1Y3Qgcnpfc3lzY19zaWduYWxfaW5pdF9kYXRhICppbml0X2RhdGE7Cj4gCj4gQ2Fu J3QgeW91IGp1c3QgZW1iZWQgc3RydWN0IHJ6X3N5c2Nfc2lnbmFsX2luaXRfZGF0YT8KCk1lYW5p bmcgdG8gaGF2ZSBkaXJlY3RseSB0aGUgbWVtYmVycyBvZiBzdHJ1Y3Qgcnpfc3lzY19zaWduYWxf aW5pdF9kYXRhCmhlcmUgb3IgdG8gZHJvcCB0aGUgY29uc3QgcXVhbGlmaWVyIGFsb25nIHdpdGgg X19pbml0Y29uc3Qgb24KcnpnM3Nfc3lzY19zaWduYWxzX2luaXRfZGF0YVtdICBhbmQgcmUtdXNl IHRoZSBwbGF0Zm9tIGRhdGEgdy9vIGFsbG9jYXRlCm5ldyBtZW1vcnk/CgpUaGFuayB5b3UgZm9y IHlvdXIgcmV2aWV3LApDbGF1ZGl1CgoKPiBUaGF0IHdheSB5b3UgY291bGQgYWxsb2NhdGUgdGhl IHJ6X3N5c2Nfc2lnbmFsIGFuZAo+IHJ6X3N5c2Nfc2lnbmFsX2luaXRfZGF0YSBzdHJ1Y3R1cmVz IGluIGEgc2luZ2xlIGFsbG9jYXRpb24uCj4gCj4+ICsgICAgICAgcmVmY291bnRfdCByZWZjbnQ7 Cj4+ICt9Owo+IAo+IEdye29ldGplLGVldGluZ31zLAo+IAo+ICAgICAgICAgICAgICAgICAgICAg ICAgIEdlZXJ0Cj4gCj4gLS0KPiBHZWVydCBVeXR0ZXJob2V2ZW4gLS0gVGhlcmUncyBsb3RzIG9m IExpbnV4IGJleW9uZCBpYTMyIC0tIGdlZXJ0QGxpbnV4LW02OGsub3JnCj4gCj4gSW4gcGVyc29u YWwgY29udmVyc2F0aW9ucyB3aXRoIHRlY2huaWNhbCBwZW9wbGUsIEkgY2FsbCBteXNlbGYgYSBo YWNrZXIuIEJ1dAo+IHdoZW4gSSdtIHRhbGtpbmcgdG8gam91cm5hbGlzdHMgSSBqdXN0IHNheSAi cHJvZ3JhbW1lciIgb3Igc29tZXRoaW5nIGxpa2UgdGhhdC4KPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0tIExpbnVzIFRvcnZhbGRzCgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlz dApsaW51eC1waHlAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5v cmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1waHkK From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 39AAD176FB6 for ; Fri, 29 Nov 2024 08:48:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732870125; cv=none; b=aSRERlBCJHbtvcZmFIIyxCwWPUQB0wF1d2ney6QVdHJSDbuyxkBPE+fklhkn+UHxnmj6Ra64KSyvOfhsYuQPQtnHZYxkF6qtV7e5KizRY2Wt/E9jdVf9Nh1lJV/o1IIUrdyWJ+haUUfl7TN4ZKbcYiKMuCRhoZp3t6PT7jLumm4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732870125; c=relaxed/simple; bh=A/Ieu612X5VBXK0dP//wDTEnDsl0CWq1frDOz0M0XCY=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=f+EAkDI8Oxu5Jv9ORcDUVDSGxvX7lSYMDVp27zBAl1Ch8QVMKIcxHGymtGQMPKGFb4fx+qEoJu1Cv5pxRocjC6XFGt+qjav6Df55+xiS3YZVQ338C4UnpzK0NLmDhAG+2L7eZsCDg2ECTGwkb2DTnM/X8OPzSzPfJDgfUD9mnjQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=NK8eZdsA; arc=none smtp.client-ip=209.85.128.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="NK8eZdsA" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-43494a20379so14791045e9.0 for ; Fri, 29 Nov 2024 00:48:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1732870121; x=1733474921; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=2PkQyuhys7G1VNXO6ofg16FC0sS07Akwiu7JTGVbtJ8=; b=NK8eZdsALaQ7cvAFaoMhwZPD4q9MxBLQyEhBDSCw9QMMPpNqPzbEAOYqN0MwqFN4hg QKnK85+FJgse+shHo4wuYK9LJvt1IjyA2zsmZdL6FWx0NIGaL17mZ/zaVCmTZof/rY7a 31WTheYDel3hpLxWvxVylbmLhsDo4+jmXOW4QpK2nbsl9WTlBIq43y+FbNGT8zYZ0guc aJuMub4RiN+uQZorje8xLYomoZZR3aOT2+12MKRVfwfu8jrE3zcxBM7bxYoqJfFfP1PD 5rPFMLvJ1QwjvimkhlhhCD/9YIw2qloG+gF2jF6YxV1lHYCH7X6myJZfzhBnH4YaLeFl AHAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732870121; x=1733474921; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=2PkQyuhys7G1VNXO6ofg16FC0sS07Akwiu7JTGVbtJ8=; b=N29m8Q9M2iKjGfci06gi70WIwbnWr9M+OWLT8vBrJByt8+Yn1LGfoEqnrEi2DDQ8Ec jGBRnfPgDSf3ey23oNEnUHHSDer71Qo3UHBv8garykwvmFr9m6s52ruX402S2zIjzSNv DDypsnaBuLwKbFfV+aXRP7LsV99NUNIudsLEVITVkepeQr36bHpSkpy7sjrwxpoUk6Qj nrw1pJpYKu9ntdTJdq+YHhMD+i5vfRKWvxeaTqGrE5Lc2KsVsHLPfO1uPB2BJTcNwYkm HjLnxPDBn6XTmiGq2AvOJ/gr5xovvSw1i9b458B7hKGVxAZTStns0v/XsoB/YP9lS4Y8 eyDQ== X-Forwarded-Encrypted: i=1; AJvYcCWJmJs15pRUHBGtF09k8zbeHSL4kkmgEv5bbyNWCv2R65GYihBTEmDs/u6LkXssCdkV0TgoxKr8a5xRKXQRXR+g1Q==@vger.kernel.org X-Gm-Message-State: AOJu0YxazB2SX8E+N52Hvv3ilLE3b5aOtcNuH8GM0Jtb8oT8gLd8GQEH tRbtc6vjFDc5ltWBJM1SIbS2QfDxaXLIqz5omBetFeEaL5H8P6rmlevrhoazNaw= X-Gm-Gg: ASbGncvTNNRTHiI14yKC72p/wyXA787xroc9HGAy0wnY4e+qOowwxC/TWn4j5WKLwVe PkP/sKOxb+XCiMMgSkuSlYYQnsl9OeNoVBRWizxBhL7G3BCGYAfcRgcE15WJhLzk8LWip8aQIJK LhHuD2oVaRQOTTN+H/CCfAnvA6BBdFSzAoEHKW4AB5ZQr54u0K11mMRf2rHIF0aUt4YNBxZWrLn in11dl4qnV287xl21Uqa7RSxvS12hx+j2sel6h24OGaGSb980z6hF0FuA== X-Google-Smtp-Source: AGHT+IHOrdw05njzpGOyCesmp5YA3v4j4ngUQt/RUP7bLsFXyj13G3qk8T1q/D5WDxY5zb5XKDBk4A== X-Received: by 2002:a05:600c:1d18:b0:426:8884:2c58 with SMTP id 5b1f17b1804b1-434a9dbbcc7mr100701195e9.4.1732870119927; Fri, 29 Nov 2024 00:48:39 -0800 (PST) Received: from [192.168.50.4] ([82.78.167.46]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-434b0f70cb2sm45550775e9.37.2024.11.29.00.48.37 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 29 Nov 2024 00:48:39 -0800 (PST) Message-ID: <32fa7eb8-2139-454c-8866-cb264d060616@tuxon.dev> Date: Fri, 29 Nov 2024 10:48:36 +0200 Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 02/15] soc: renesas: Add SYSC driver for Renesas RZ family Content-Language: en-US To: Geert Uytterhoeven Cc: vkoul@kernel.org, kishon@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, p.zabel@pengutronix.de, magnus.damm@gmail.com, gregkh@linuxfoundation.org, yoshihiro.shimoda.uh@renesas.com, christophe.jaillet@wanadoo.fr, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-usb@vger.kernel.org, Claudiu Beznea References: <20241126092050.1825607-1-claudiu.beznea.uj@bp.renesas.com> <20241126092050.1825607-3-claudiu.beznea.uj@bp.renesas.com> From: Claudiu Beznea In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hi, Geert, On 28.11.2024 17:24, Geert Uytterhoeven wrote: > Hi Claudiu, > > Thanks for your patch! > > On Tue, Nov 26, 2024 at 10:21 AM Claudiu wrote: >> From: Claudiu Beznea >> >> The RZ/G3S system controller (SYSC) has various registers that control >> signals specific to individual IPs. IP drivers must control these signals >> at different configuration phases. >> >> Add SYSC driver that allows individual SYSC consumers to control these >> signals. The SYSC driver exports a syscon regmap enabling IP drivers to >> use a specific SYSC offset and mask from the device tree, which can then be >> accessed through regmap_update_bits(). >> >> Currently, the SYSC driver provides control to the USB PWRRDY signal, which >> is routed to the USB PHY. This signal needs to be managed before or after >> powering the USB PHY off or on. >> >> Other SYSC signals candidates (as exposed in the the hardware manual of the > > s/the the/the/ > >> RZ/G3S SoC) include: >> >> * PCIe: >> - ALLOW_ENTER_L1 signal controlled through the SYS_PCIE_CFG register >> - PCIE_RST_RSM_B signal controlled through the SYS_PCIE_RST_RSM_B >> register >> - MODE_RXTERMINATION signal controlled through SYS_PCIE_PHY register >> >> * SPI: >> - SEL_SPI_OCTA signal controlled through SYS_IPCONT_SEL_SPI_OCTA >> register >> >> * I2C/I3C: >> - af_bypass I2C signals controlled through SYS_I2Cx_CFG registers >> (x=0..3) >> - af_bypass I3C signal controlled through SYS_I3C_CFG register >> >> * Ethernet: >> - FEC_GIGA_ENABLE Ethernet signals controlled through SYS_GETHx_CFG >> registers (x=0..1) >> >> As different Renesas RZ SoC shares most of the SYSC functionalities >> available on the RZ/G3S SoC, the driver if formed of a SYSC core >> part and a SoC specific part allowing individual SYSC SoC to provide >> functionalities to the SYSC core. >> >> Signed-off-by: Claudiu Beznea > >> --- /dev/null >> +++ b/drivers/soc/renesas/r9a08g045-sysc.c >> @@ -0,0 +1,31 @@ >> +// SPDX-License-Identifier: GPL-2.0 >> +/* >> + * RZ/G3S System controller driver >> + * >> + * Copyright (C) 2024 Renesas Electronics Corp. >> + */ >> + >> +#include >> +#include >> +#include >> + >> +#include "rz-sysc.h" >> + >> +#define SYS_USB_PWRRDY 0xd70 >> +#define SYS_USB_PWRRDY_PWRRDY_N BIT(0) >> +#define SYS_MAX_REG 0xe20 >> + >> +static const struct rz_sysc_signal_init_data rzg3s_sysc_signals_init_data[] __initconst = { > > This is marked __initconst... > >> + { >> + .name = "usb-pwrrdy", >> + .offset = SYS_USB_PWRRDY, >> + .mask = SYS_USB_PWRRDY_PWRRDY_N, >> + .refcnt_incr_val = 0 >> + } >> +}; >> + >> +const struct rz_sysc_init_data rzg3s_sysc_init_data = { > > ... but this is not __init, causing a section mismatch. Do you know if there is a way to detect this? > >> + .signals_init_data = rzg3s_sysc_signals_init_data, >> + .num_signals = ARRAY_SIZE(rzg3s_sysc_signals_init_data), >> + .max_register_offset = SYS_MAX_REG, >> +}; > >> --- /dev/null >> +++ b/drivers/soc/renesas/rz-sysc.c > >> +/** >> + * struct rz_sysc - RZ SYSC private data structure >> + * @base: SYSC base address >> + * @dev: SYSC device pointer >> + * @signals: SYSC signals >> + * @num_signals: number of SYSC signals >> + */ >> +struct rz_sysc { >> + void __iomem *base; >> + struct device *dev; >> + struct rz_sysc_signal *signals; >> + u8 num_signals; > > You could change signals to a flexible array at the end, tag it with > __counted_by(num_signals), and allocate space for both struct rz_sysc > and the signals array using struct_size(), reducing the number of > allocations. I'll look into this. > >> +}; > >> +static struct rz_sysc_signal *rz_sysc_off_to_signal(struct rz_sysc *sysc, unsigned int offset, >> + unsigned int mask) >> +{ >> + struct rz_sysc_signal *signals = sysc->signals; >> + >> + for (u32 i = 0; i < sysc->num_signals; i++) { > > s/u32/unsigned int/ > >> + if (signals[i].init_data->offset != offset) >> + continue; >> + >> + /* >> + * In case mask == 0 we just return the signal data w/o checking the mask. >> + * This is useful when calling through rz_sysc_reg_write() to check >> + * if the requested setting is for a mapped signal or not. >> + */ >> + if (mask) { >> + if (signals[i].init_data->mask == mask) >> + return &signals[i]; >> + } else { >> + return &signals[i]; >> + } > > if (!mask || signals[i].init_data->mask == mask) > return &signals[i]; Looks better, indeed! > >> + } >> + >> + return NULL; >> +} >> + >> +static int rz_sysc_reg_update_bits(void *context, unsigned int off, >> + unsigned int mask, unsigned int val) >> +{ >> + struct rz_sysc *sysc = context; >> + struct rz_sysc_signal *signal; >> + bool update = false; >> + >> + signal = rz_sysc_off_to_signal(sysc, off, mask); >> + if (signal) { >> + if (signal->init_data->refcnt_incr_val == val) { >> + if (!refcount_read(&signal->refcnt)) { >> + refcount_set(&signal->refcnt, 1); >> + update = true; >> + } else { >> + refcount_inc(&signal->refcnt); >> + } >> + } else { >> + update = refcount_dec_and_test(&signal->refcnt); >> + } >> + } else { >> + update = true; >> + } > > You could reduce indentation/number of lines by reordering the logic: > > if (!signal) { > update = true; > } else if (signal->init_data->refcnt_incr_val != val) { > update = refcount_dec_and_test(&signal->refcnt); > } else if (!refcount_read(&signal->refcnt)) { > refcount_set(&signal->refcnt, 1); > update = true; > } else { > refcount_inc(&signal->refcnt); > } Looks better, indeed! > >> + >> + if (update) { >> + u32 tmp; >> + >> + tmp = readl(sysc->base + off); >> + tmp &= ~mask; >> + tmp |= val & mask; >> + writel(tmp, sysc->base + off); >> + } >> + >> + return 0; >> +} >> + >> +static int rz_sysc_reg_write(void *context, unsigned int off, unsigned int val) >> +{ >> + struct rz_sysc *sysc = context; >> + struct rz_sysc_signal *signal; >> + >> + /* >> + * Force using regmap_update_bits() for signals to have reference counter >> + * per individual signal in case there are multiple signals controlled >> + * through the same register. >> + */ >> + signal = rz_sysc_off_to_signal(sysc, off, 0); >> + if (signal) { >> + dev_err(sysc->dev, >> + "regmap_write() not allowed on register controlling a signal. Use regmap_update_bits()!"); >> + return -EOPNOTSUPP; >> + } >> + > > Can you ever get here, given rz_sysc_writeable_reg() below would have > returned false? Yes, in case the user wants to access a register having a signal associated. If user does this: regmap_write(regmap, signal_offset, value); The rz_sysc_writeable_reg() returns true (as it checks only the signal offset but not the mask) and the rz_sysc_reg_write() reach this point. If we allow it to continue we can break reference counting for the existing implemented signals, or, if there are multiple signals handled thorough the same register, we can break other signals. > If not, is there any point in having this function? I chose to have it for (currently unexisting) other use cases of the syscon + regmap exported by this driver. For the moment, it is not necessary, indeed. I can drop it if you prefer. > >> + writel(val, sysc->base + off); >> + >> + return 0; >> +} >> + >> +static bool rz_sysc_writeable_reg(struct device *dev, unsigned int off) >> +{ >> + struct rz_sysc *sysc = dev_get_drvdata(dev); >> + struct rz_sysc_signal *signal; >> + >> + /* Any register containing a signal is writeable. */ >> + signal = rz_sysc_off_to_signal(sysc, off, 0); >> + if (signal) >> + return true; >> + >> + return false; >> +} > >> +static int rz_sysc_signals_show(struct seq_file *s, void *what) >> +{ >> + struct rz_sysc *sysc = s->private; >> + >> + seq_printf(s, "%-20s Enable count\n", "Signal"); >> + seq_printf(s, "%-20s ------------\n", "--------------------"); >> + >> + for (u8 i = 0; i < sysc->num_signals; i++) { >> + seq_printf(s, "%-20s %d\n", sysc->signals[i].init_data->name, >> + refcount_read(&sysc->signals[i].refcnt)); >> + } >> + >> + return 0; >> +} >> +DEFINE_SHOW_ATTRIBUTE(rz_sysc_signals); > > What is the use-case for this? Just (initial) debugging? Only debugging. > >> + >> +static void rz_sysc_debugfs_remove(void *data) >> +{ >> + debugfs_remove_recursive(data); >> +} >> + >> +static int rz_sysc_signals_init(struct rz_sysc *sysc, >> + const struct rz_sysc_signal_init_data *init_data, >> + u32 num_signals) >> +{ >> + struct dentry *root; >> + int ret; >> + >> + sysc->signals = devm_kcalloc(sysc->dev, num_signals, sizeof(*sysc->signals), >> + GFP_KERNEL); >> + if (!sysc->signals) >> + return -ENOMEM; >> + >> + for (u32 i = 0; i < num_signals; i++) { > > unsigned int > >> + struct rz_sysc_signal_init_data *id; >> + >> + id = devm_kzalloc(sysc->dev, sizeof(*id), GFP_KERNEL); >> + if (!id) >> + return -ENOMEM; >> + >> + id->name = devm_kstrdup(sysc->dev, init_data->name, GFP_KERNEL); >> + if (!id->name) >> + return -ENOMEM; >> + >> + id->offset = init_data->offset; >> + id->mask = init_data->mask; >> + id->refcnt_incr_val = init_data->refcnt_incr_val; >> + >> + sysc->signals[i].init_data = id; >> + refcount_set(&sysc->signals[i].refcnt, 0); >> + } >> + >> + sysc->num_signals = num_signals; >> + >> + root = debugfs_create_dir("renesas-rz-sysc", NULL); >> + ret = devm_add_action_or_reset(sysc->dev, rz_sysc_debugfs_remove, root); >> + if (ret) >> + return ret; >> + debugfs_create_file("signals", 0444, root, sysc, &rz_sysc_signals_fops); >> + >> + return 0; >> +} > >> --- /dev/null >> +++ b/drivers/soc/renesas/rz-sysc.h >> @@ -0,0 +1,52 @@ >> +/* SPDX-License-Identifier: GPL-2.0 */ >> +/* >> + * Renesas RZ System Controller >> + * >> + * Copyright (C) 2024 Renesas Electronics Corp. >> + */ >> + >> +#ifndef __SOC_RENESAS_RZ_SYSC_H__ >> +#define __SOC_RENESAS_RZ_SYSC_H__ >> + >> +#include >> +#include >> + >> +/** >> + * struct rz_sysc_signal_init_data - RZ SYSC signals init data >> + * @name: signal name >> + * @offset: register offset controling this signal >> + * @mask: bitmask in register specific to this signal >> + * @refcnt_incr_val: increment refcnt when setting this value >> + */ >> +struct rz_sysc_signal_init_data { >> + const char *name; >> + u32 offset; >> + u32 mask; >> + u32 refcnt_incr_val; >> +}; >> + >> +/** >> + * struct rz_sysc_signal - RZ SYSC signals >> + * @init_data: signals initialization data >> + * @refcnt: reference counter >> + */ >> +struct rz_sysc_signal { >> + const struct rz_sysc_signal_init_data *init_data; > > Can't you just embed struct rz_sysc_signal_init_data? Meaning to have directly the members of struct rz_sysc_signal_init_data here or to drop the const qualifier along with __initconst on rzg3s_sysc_signals_init_data[] and re-use the platfom data w/o allocate new memory? Thank you for your review, Claudiu > That way you could allocate the rz_sysc_signal and > rz_sysc_signal_init_data structures in a single allocation. > >> + refcount_t refcnt; >> +}; > > Gr{oetje,eeting}s, > > Geert > > -- > Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org > > In personal conversations with technical people, I call myself a hacker. But > when I'm talking to journalists I just say "programmer" or something like that. > -- Linus Torvalds