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 X-Spam-Level: X-Spam-Status: No, score=-10.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E23B6C55179 for ; Wed, 28 Oct 2020 23:19:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9719B20791 for ; Wed, 28 Oct 2020 23:19:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1603927147; bh=l+5U0qx8tJKtoMZJZempBL5ocA3CXpSzaKYO1LLKqbY=; h=Date:From:To:Cc:Subject:References:In-Reply-To:List-ID:From; b=VYjyfEOUSxVc/QlwylLLkjgM5YT5Yh9bWU4S5BdC997GM7Q93aUtEy1AmLagBKEbk Cv0oX/NUGPG42r1sbLfPsW3MdN8x6hkmmooyEekQBo86XRGWLwce5TBqYaMU79nHqC /mGo7t3l/qsQx+f1ygYS8gGdL4cMlW7vOT80FUlY= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727422AbgJ1XS6 convert rfc822-to-8bit (ORCPT ); Wed, 28 Oct 2020 19:18:58 -0400 Received: from mail-lj1-f193.google.com ([209.85.208.193]:34090 "EHLO mail-lj1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728198AbgJ1XRk (ORCPT ); Wed, 28 Oct 2020 19:17:40 -0400 Received: by mail-lj1-f193.google.com with SMTP id y16so1110040ljk.1; Wed, 28 Oct 2020 16:17:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=tOzGuUmz353raLqizP2rvx4LkjDP5IM9PyiPt5zQsck=; b=jJtONSraL9jOMQSXwzrVOBF8qBnjdokxiP0xkykvx0UoBzDRKwhb5PZqWjHWdDVB9C YuS00hM/NBYa8WzAtn5OmO97bw0/3sFsEbDxz5/QGPv3wLuq3iURn1cNiVxpELI3VZAP YJI1EU4LjrnssbayFL/hxOJ+NVDcjw2xHqE+AoH4CTMD4DjdSuzqyg4D2Ism4/FNzOb1 Ysauw1RtbTsqvGr3A2WMa/RM8Zmjysq5rVe8PkZuwJBAbirBZ7OFTqA90gnd3v+PAQBe xsw9XdSsX2ldssGidVfijOHBhKlCvW6Um/lAJVrnPtzro6bfxFb0BTEbBMWnemBA1VUx LejA== X-Gm-Message-State: AOAM531j2wsgBjkMEHbaK601HeE2rQSGG2m6PHbxm6D1SGdzcMFoOvoV Ag4t4w6bV2DyA6UbXxZExyW/PPOxq+Crdg== X-Google-Smtp-Source: ABdhPJx7uTojdx8c4uChsolOHCfdvqUlE8lbp5QLK2dcQNvxdYAlOS/eER5VjqNvSaVQADiGzYDahA== X-Received: by 2002:a17:906:52d5:: with SMTP id w21mr8600918ejn.501.1603899329605; Wed, 28 Oct 2020 08:35:29 -0700 (PDT) Received: from kozik-lap ([194.230.155.184]) by smtp.googlemail.com with ESMTPSA id e2sm3163675edn.30.2020.10.28.08.35.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Oct 2020 08:35:27 -0700 (PDT) Date: Wed, 28 Oct 2020 16:35:25 +0100 From: Krzysztof Kozlowski To: Rob Herring Cc: Dmitry Osipenko , Thierry Reding , Jonathan Hunter , Georgi Djakov , Michael Turquette , Stephen Boyd , Peter De Schrijver , MyungJoo Ham , Kyungmin Park , Chanwoo Choi , Mikko Perttunen , Viresh Kumar , Peter Geis , Nicolas Chauvet , linux-tegra@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org Subject: Re: [PATCH v6 04/52] dt-bindings: memory: tegra20: emc: Document nvidia,memory-controller property Message-ID: <20201028153525.GA133954@kozik-lap> References: <20201025221735.3062-1-digetx@gmail.com> <20201025221735.3062-5-digetx@gmail.com> <20201027085417.GD4244@kozik-lap> <54191034-dcb9-7cab-333b-5bb2553f0ed1@gmail.com> <20201027193039.GA140636@kozik-lap> <20201028152303.GA4041470@bogus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8BIT In-Reply-To: <20201028152303.GA4041470@bogus> Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org On Wed, Oct 28, 2020 at 10:23:03AM -0500, Rob Herring wrote: > On Tue, Oct 27, 2020 at 08:30:39PM +0100, Krzysztof Kozlowski wrote: > > On Tue, Oct 27, 2020 at 10:17:19PM +0300, Dmitry Osipenko wrote: > > > 27.10.2020 11:54, Krzysztof Kozlowski пишет: > > > > On Mon, Oct 26, 2020 at 01:16:47AM +0300, Dmitry Osipenko wrote: > > > >> Tegra20 External Memory Controller talks to DRAM chips and it needs to be > > > >> reprogrammed when memory frequency changes. Tegra Memory Controller sits > > > >> behind EMC and these controllers are tightly coupled. This patch adds the > > > >> new phandle property which allows to properly express connection of EMC > > > >> and MC hardware in a device-tree, it also put the Tegra20 EMC binding on > > > >> par with Tegra30+ EMC bindings, which is handy to have. > > > >> > > > >> Signed-off-by: Dmitry Osipenko > > > >> --- > > > >> .../bindings/memory-controllers/nvidia,tegra20-emc.txt | 2 ++ > > > >> 1 file changed, 2 insertions(+) > > > >> > > > >> diff --git a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra20-emc.txt b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra20-emc.txt > > > >> index 567cffd37f3f..1b0d4417aad8 100644 > > > >> --- a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra20-emc.txt > > > >> +++ b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra20-emc.txt > > > >> @@ -12,6 +12,7 @@ Properties: > > > >> irrespective of ram-code configuration. > > > >> - interrupts : Should contain EMC General interrupt. > > > >> - clocks : Should contain EMC clock. > > > >> +- nvidia,memory-controller : Phandle of the Memory Controller node. > > > > > > > > It looks like you adding a required property which is an ABI break. > > > The T20 EMC driver is unused so far in upstream and it will become used > > > only once this series is applied. Hence it's fine to change the ABI. > > > > The ABI is not about upstream, but downstream. > > "If it's not upstream, it doesn't exist." > > Though we do have to account for out of tree users where the DT is not > in tree, but upstream drivers are used. Downstream as in vendor kernels > typically has loads of other crap. That's the case I am referring to. Maybe not in case of Tegra, but multiple other designs are quite popular in industrial uses and their DTSes were not upstreamed. This is anyway different case, as Dmitry explained - nothing got broken because not much was working before around this. > > > There are no other > > upstreams using this ABI. Unless you have in mind that existing T20 EMC > > driver was a noop, doing absolutely nothing, therefore there is no > > breakage of any other users? > > ABI breaks are ultimately up to the platform maintainers to decide. Cool! That reshapes significantly my existing point of view, especially about discussions on Exynos bindings (long time ago). Thanks for clarification. Best regards, Krzysztof 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 X-Spam-Level: X-Spam-Status: No, score=-10.0 required=3.0 tests=BAYES_00,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 476CEC388F7 for ; Wed, 28 Oct 2020 15:35:34 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id CCE7A2474F for ; Wed, 28 Oct 2020 15:35:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CCE7A2474F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id AF0866E580; Wed, 28 Oct 2020 15:35:32 +0000 (UTC) Received: from mail-ej1-f67.google.com (mail-ej1-f67.google.com [209.85.218.67]) by gabe.freedesktop.org (Postfix) with ESMTPS id 467186E47B for ; Wed, 28 Oct 2020 15:35:31 +0000 (UTC) Received: by mail-ej1-f67.google.com with SMTP id p9so7887579eji.4 for ; Wed, 28 Oct 2020 08:35:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=tOzGuUmz353raLqizP2rvx4LkjDP5IM9PyiPt5zQsck=; b=QNCOgad//sya6/wBhzWMmc9jqGTzLBSPd8qxDwUzK239HHPQZJDc3IwQDFaR9pRP6c Ha9+IrL9aKZxBWpnf0D8Cd4JJHJ57VZU+OcbBf2PoSQZ2+mraanYYOW5n5mVB3WfqcYC BaqSfrIJQNNFJkWf051AGGBXsP3D8d1kR54OYDhocQt8l0Xv0ezwEjDV06ZMWyJ69oUn +FdxD6r22j1BNON/sR/v8oPS5e+Bz2hDQ7adc2wn/RZf1N8DpTucx9am6NaXkHXPQuSQ KVZr+jaJY5U04NwZ2S2QGCx+Wr/YHDo4muXXAbzADMC6s3xzeXRLXfMAKxZpJukGcW3C UvEw== X-Gm-Message-State: AOAM533cZiaN+P7AsqfIKUpqnejWL2E6XjfTWlrAxMXxGf0Swk5ZdkH9 YZMKxPEy4StlXByCLZ3U004= X-Google-Smtp-Source: ABdhPJx7uTojdx8c4uChsolOHCfdvqUlE8lbp5QLK2dcQNvxdYAlOS/eER5VjqNvSaVQADiGzYDahA== X-Received: by 2002:a17:906:52d5:: with SMTP id w21mr8600918ejn.501.1603899329605; Wed, 28 Oct 2020 08:35:29 -0700 (PDT) Received: from kozik-lap ([194.230.155.184]) by smtp.googlemail.com with ESMTPSA id e2sm3163675edn.30.2020.10.28.08.35.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Oct 2020 08:35:27 -0700 (PDT) Date: Wed, 28 Oct 2020 16:35:25 +0100 From: Krzysztof Kozlowski To: Rob Herring Subject: Re: [PATCH v6 04/52] dt-bindings: memory: tegra20: emc: Document nvidia,memory-controller property Message-ID: <20201028153525.GA133954@kozik-lap> References: <20201025221735.3062-1-digetx@gmail.com> <20201025221735.3062-5-digetx@gmail.com> <20201027085417.GD4244@kozik-lap> <54191034-dcb9-7cab-333b-5bb2553f0ed1@gmail.com> <20201027193039.GA140636@kozik-lap> <20201028152303.GA4041470@bogus> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20201028152303.GA4041470@bogus> X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter De Schrijver , Mikko Perttunen , Nicolas Chauvet , Stephen Boyd , Viresh Kumar , Michael Turquette , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Jonathan Hunter , Chanwoo Choi , Kyungmin Park , Thierry Reding , MyungJoo Ham , Peter Geis , linux-tegra@vger.kernel.org, Dmitry Osipenko , Georgi Djakov , devicetree@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gV2VkLCBPY3QgMjgsIDIwMjAgYXQgMTA6MjM6MDNBTSAtMDUwMCwgUm9iIEhlcnJpbmcgd3Jv dGU6Cj4gT24gVHVlLCBPY3QgMjcsIDIwMjAgYXQgMDg6MzA6MzlQTSArMDEwMCwgS3J6eXN6dG9m IEtvemxvd3NraSB3cm90ZToKPiA+IE9uIFR1ZSwgT2N0IDI3LCAyMDIwIGF0IDEwOjE3OjE5UE0g KzAzMDAsIERtaXRyeSBPc2lwZW5rbyB3cm90ZToKPiA+ID4gMjcuMTAuMjAyMCAxMTo1NCwgS3J6 eXN6dG9mIEtvemxvd3NraSDQv9C40YjQtdGCOgo+ID4gPiA+IE9uIE1vbiwgT2N0IDI2LCAyMDIw IGF0IDAxOjE2OjQ3QU0gKzAzMDAsIERtaXRyeSBPc2lwZW5rbyB3cm90ZToKPiA+ID4gPj4gVGVn cmEyMCBFeHRlcm5hbCBNZW1vcnkgQ29udHJvbGxlciB0YWxrcyB0byBEUkFNIGNoaXBzIGFuZCBp dCBuZWVkcyB0byBiZQo+ID4gPiA+PiByZXByb2dyYW1tZWQgd2hlbiBtZW1vcnkgZnJlcXVlbmN5 IGNoYW5nZXMuIFRlZ3JhIE1lbW9yeSBDb250cm9sbGVyIHNpdHMKPiA+ID4gPj4gYmVoaW5kIEVN QyBhbmQgdGhlc2UgY29udHJvbGxlcnMgYXJlIHRpZ2h0bHkgY291cGxlZC4gVGhpcyBwYXRjaCBh ZGRzIHRoZQo+ID4gPiA+PiBuZXcgcGhhbmRsZSBwcm9wZXJ0eSB3aGljaCBhbGxvd3MgdG8gcHJv cGVybHkgZXhwcmVzcyBjb25uZWN0aW9uIG9mIEVNQwo+ID4gPiA+PiBhbmQgTUMgaGFyZHdhcmUg aW4gYSBkZXZpY2UtdHJlZSwgaXQgYWxzbyBwdXQgdGhlIFRlZ3JhMjAgRU1DIGJpbmRpbmcgb24K PiA+ID4gPj4gcGFyIHdpdGggVGVncmEzMCsgRU1DIGJpbmRpbmdzLCB3aGljaCBpcyBoYW5keSB0 byBoYXZlLgo+ID4gPiA+Pgo+ID4gPiA+PiBTaWduZWQtb2ZmLWJ5OiBEbWl0cnkgT3NpcGVua28g PGRpZ2V0eEBnbWFpbC5jb20+Cj4gPiA+ID4+IC0tLQo+ID4gPiA+PiAgLi4uL2JpbmRpbmdzL21l bW9yeS1jb250cm9sbGVycy9udmlkaWEsdGVncmEyMC1lbWMudHh0ICAgICAgICAgIHwgMiArKwo+ ID4gPiA+PiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQo+ID4gPiA+Pgo+ID4gPiA+ PiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lbW9yeS1j b250cm9sbGVycy9udmlkaWEsdGVncmEyMC1lbWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0 cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy9udmlkaWEsdGVncmEyMC1lbWMudHh0Cj4g PiA+ID4+IGluZGV4IDU2N2NmZmQzN2YzZi4uMWIwZDQ0MTdhYWQ4IDEwMDY0NAo+ID4gPiA+PiAt LS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJz L252aWRpYSx0ZWdyYTIwLWVtYy50eHQKPiA+ID4gPj4gKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZp Y2V0cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy9udmlkaWEsdGVncmEyMC1lbWMudHh0 Cj4gPiA+ID4+IEBAIC0xMiw2ICsxMiw3IEBAIFByb3BlcnRpZXM6Cj4gPiA+ID4+ICAgIGlycmVz cGVjdGl2ZSBvZiByYW0tY29kZSBjb25maWd1cmF0aW9uLgo+ID4gPiA+PiAgLSBpbnRlcnJ1cHRz IDogU2hvdWxkIGNvbnRhaW4gRU1DIEdlbmVyYWwgaW50ZXJydXB0Lgo+ID4gPiA+PiAgLSBjbG9j a3MgOiBTaG91bGQgY29udGFpbiBFTUMgY2xvY2suCj4gPiA+ID4+ICstIG52aWRpYSxtZW1vcnkt Y29udHJvbGxlciA6IFBoYW5kbGUgb2YgdGhlIE1lbW9yeSBDb250cm9sbGVyIG5vZGUuCj4gPiA+ ID4gCj4gPiA+ID4gSXQgbG9va3MgbGlrZSB5b3UgYWRkaW5nIGEgcmVxdWlyZWQgcHJvcGVydHkg d2hpY2ggaXMgYW4gQUJJIGJyZWFrLgo+ID4gPiBUaGUgVDIwIEVNQyBkcml2ZXIgaXMgdW51c2Vk IHNvIGZhciBpbiB1cHN0cmVhbSBhbmQgaXQgd2lsbCBiZWNvbWUgdXNlZAo+ID4gPiBvbmx5IG9u Y2UgdGhpcyBzZXJpZXMgaXMgYXBwbGllZC4gSGVuY2UgaXQncyBmaW5lIHRvIGNoYW5nZSB0aGUg QUJJLgo+ID4gCj4gPiBUaGUgQUJJIGlzIG5vdCBhYm91dCB1cHN0cmVhbSwgYnV0IGRvd25zdHJl YW0uIAo+IAo+ICJJZiBpdCdzIG5vdCB1cHN0cmVhbSwgaXQgZG9lc24ndCBleGlzdC4iCj4gCj4g VGhvdWdoIHdlIGRvIGhhdmUgdG8gYWNjb3VudCBmb3Igb3V0IG9mIHRyZWUgdXNlcnMgd2hlcmUg dGhlIERUIGlzIG5vdCAKPiBpbiB0cmVlLCBidXQgdXBzdHJlYW0gZHJpdmVycyBhcmUgdXNlZC4g RG93bnN0cmVhbSBhcyBpbiB2ZW5kb3Iga2VybmVscyAKPiB0eXBpY2FsbHkgaGFzIGxvYWRzIG9m IG90aGVyIGNyYXAuCgpUaGF0J3MgdGhlIGNhc2UgSSBhbSByZWZlcnJpbmcgdG8uIE1heWJlIG5v dCBpbiBjYXNlIG9mIFRlZ3JhLCBidXQKbXVsdGlwbGUgb3RoZXIgZGVzaWducyBhcmUgcXVpdGUg cG9wdWxhciBpbiBpbmR1c3RyaWFsIHVzZXMgYW5kIHRoZWlyCkRUU2VzIHdlcmUgbm90IHVwc3Ry ZWFtZWQuCgpUaGlzIGlzIGFueXdheSBkaWZmZXJlbnQgY2FzZSwgYXMgRG1pdHJ5IGV4cGxhaW5l ZCAtIG5vdGhpbmcgZ290IGJyb2tlbgpiZWNhdXNlIG5vdCBtdWNoIHdhcyB3b3JraW5nIGJlZm9y ZSBhcm91bmQgdGhpcy4KCj4gCj4gPiBUaGVyZSBhcmUgbm8gb3RoZXIKPiA+IHVwc3RyZWFtcyB1 c2luZyB0aGlzIEFCSS4gVW5sZXNzIHlvdSBoYXZlIGluIG1pbmQgdGhhdCBleGlzdGluZyBUMjAg RU1DCj4gPiBkcml2ZXIgd2FzIGEgbm9vcCwgZG9pbmcgYWJzb2x1dGVseSBub3RoaW5nLCB0aGVy ZWZvcmUgdGhlcmUgaXMgbm8KPiA+IGJyZWFrYWdlIG9mIGFueSBvdGhlciB1c2Vycz8KPiAKPiBB QkkgYnJlYWtzIGFyZSB1bHRpbWF0ZWx5IHVwIHRvIHRoZSBwbGF0Zm9ybSBtYWludGFpbmVycyB0 byBkZWNpZGUuCgpDb29sISBUaGF0IHJlc2hhcGVzIHNpZ25pZmljYW50bHkgbXkgZXhpc3Rpbmcg cG9pbnQgb2YgdmlldywgZXNwZWNpYWxseQphYm91dCBkaXNjdXNzaW9ucyBvbiBFeHlub3MgYmlu ZGluZ3MgKGxvbmcgdGltZSBhZ28pLiBUaGFua3MgZm9yCmNsYXJpZmljYXRpb24uCgpCZXN0IHJl Z2FyZHMsCktyenlzenRvZgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCg==