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 96BD7C531DC for ; Tue, 20 Aug 2024 18:26:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:In-Reply-To: Content-Type:MIME-Version:References:Message-ID:Subject:To:Date:From:Reply-To :Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=pzB+pVm4vidLwC7IhpAgP8goZjSzlYTi2C47Cf22oE8=; b=IHMtKdxmRWMMYiw4AYSGhNeqzn 0ILZXskHieKnN985cHWdBG6c7/wqmkGywBF3GnaWw4K1uJQib6CV2R9A3vB5CqK0ylIw6MHq/SOZb htI17kn2TgFixbZQE4weZwQDDavlprjZOZjg4I2Y3Cj77NJCwyv9lSi8bDm8I9fcxMZuiUBvdhkHw oVolyRPAgCwuN0/znIS49a4CwygSLy1DrfCp395bqzWwB3bLgtxAeci+t5rHYD8/v4sDTWzFIFbzP iFpfsLuCU3SR1ZKVfPZEmzYhRPkpvSnlMhK60F6LvbHKLP0yIzjIQqJe9ZcIZqKF3y7P3iUGNdnC+ 82H9gYwg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sgTYh-00000006JGg-2OXY; Tue, 20 Aug 2024 18:26:19 +0000 Received: from mail-ej1-x643.google.com ([2a00:1450:4864:20::643]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sgTXy-00000006J8a-2kqE for linux-arm-kernel@lists.infradead.org; Tue, 20 Aug 2024 18:25:36 +0000 Received: by mail-ej1-x643.google.com with SMTP id a640c23a62f3a-a7a9e25008aso722882366b.0 for ; Tue, 20 Aug 2024 11:25:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1724178332; x=1724783132; darn=lists.infradead.org; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:date:from:from:to:cc :subject:date:message-id:reply-to; bh=pzB+pVm4vidLwC7IhpAgP8goZjSzlYTi2C47Cf22oE8=; b=fFkDyO+VrMiCBSCAnFuw81/JhrSUvRlLFOGQnda9fNzuCZk8rYef8nSd2nY0AfdOmK DraIeMuqCvT7hKokZzDmtmL+IICKMuOsq30qKg0UZnYnv6/Ds1cZ8wbsiLIVc1xN3r2V N6BUJ6lfENNiDAIWPK/6nd7XDdPnWcED+EsrAHb7vt9s0jHMMjr3Wd/gl/EgZXdUbc2/ r7QKtvKGySIYJctpTJtCNoFppzuLU934Nk/FhyHaycFDEkdItV1eIwBEGBwx9Rg4jo7Y /tKVoSg0J9OtsXtBuJM5y4yJwgK8XOJmjIWRrRdyhp/B4t2ECv3/48WRVl4hO++VHEE6 1wGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724178332; x=1724783132; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:date:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=pzB+pVm4vidLwC7IhpAgP8goZjSzlYTi2C47Cf22oE8=; b=gjxFC7kEj4nU3abCNIYWPgVNF5oPpHsGwfMp794zCCjUR9VKxX7l0Km6Nnr7U8rMlE hD13TolTg2yaea90cdNhr2jWGQbc1zKt/3cUJeUwtGbPCftV7ubKgrPB7rKsHSKe5u8s 7/l9U8sT3JLIlSMymGW9UD5PMXM80wX0o0iY/6nMQVQNjjTzaCBZY2rB0F5mdIY4kKLc Zce/Qd4FY0EzhmAr0cLjws/PXzQdFAJVD4ANosjGxMVf1fMe+zF0swTIUN94Te/OHuAg keeziINiSFRIvqKpWhAJ+nF9lSbGTfNnrrRW1JeSptcSSDzh8CNrIXHJVIl2DLsxX71Q 2axQ== X-Forwarded-Encrypted: i=1; AJvYcCVbEhMPhDztGeu6LN5fOm0dAKrmAkA1yYj31AUuWNDgkvtMM9i8XlMzIfCBCsNsxp34/7ezjXCszZCjt7wQDNKX@lists.infradead.org X-Gm-Message-State: AOJu0YxNAeHOT+c/YA09EwxxkZ9+oO0hbpK0UGeZI9oZwd7QiHGrvOZq iABQkPuat0CQnSGikHuFO54vm/EIdu8lUg2g5SrnTLdbzLNK52RgPJWGrWwH2wY= X-Google-Smtp-Source: AGHT+IG1zerY3WZqBBj0fKqRcI0KxUASN52ZzNxukv/UVKdcU3SIfQByHNmYhpZbSqxGa74FoAWAfQ== X-Received: by 2002:a17:907:f769:b0:a7d:a080:baa with SMTP id a640c23a62f3a-a83929516e5mr1176804066b.34.1724178332067; Tue, 20 Aug 2024 11:25:32 -0700 (PDT) Received: from localhost ([87.13.33.30]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a83838c6777sm801629166b.10.2024.08.20.11.25.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Aug 2024 11:25:31 -0700 (PDT) From: Andrea della Porta X-Google-Original-From: Andrea della Porta Date: Tue, 20 Aug 2024 20:25:36 +0200 To: Conor Dooley Subject: Re: [PATCH 01/11] dt-bindings: clock: Add RaspberryPi RP1 clock bindings Message-ID: Mail-Followup-To: Conor Dooley , Andrea della Porta , Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Florian Fainelli , Broadcom internal kernel review list , Linus Walleij , Catalin Marinas , Will Deacon , Derek Kiernan , Dragan Cvetic , Arnd Bergmann , Greg Kroah-Hartman , Nicolas Ferre , Claudiu Beznea , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Saravana Kannan , Bjorn Helgaas , linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, netdev@vger.kernel.org, linux-pci@vger.kernel.org, linux-arch@vger.kernel.org, Lee Jones , Andrew Lunn , Stefan Wahren References: <8d7dd7ca5da41f2a96e3ef4e2e3f29fd0d71906a.1724159867.git.andrea.porta@suse.com> <20240820-baritone-delegate-5711f7a0bc76@spud> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240820-baritone-delegate-5711f7a0bc76@spud> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240820_112534_744058_19B2A14F X-CRM114-Status: GOOD ( 40.81 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andrew Lunn , Catalin Marinas , Michael Turquette , Claudiu Beznea , Eric Dumazet , Dragan Cvetic , Will Deacon , linux-clk@vger.kernel.org, linux-arch@vger.kernel.org, Rob Herring , Florian Fainelli , Lee Jones , Saravana Kannan , Broadcom internal kernel review list , linux-pci@vger.kernel.org, Jakub Kicinski , Paolo Abeni , Linus Walleij , devicetree@vger.kernel.org, Conor Dooley , Arnd Bergmann , linux-gpio@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, Bjorn Helgaas , Andrea della Porta , linux-arm-kernel@lists.infradead.org, Derek Kiernan , Stephen Boyd , Greg Kroah-Hartman , linux-kernel@vger.kernel.org, Stefan Wahren , netdev@vger.kernel.org, Krzysztof Kozlowski , "David S. Miller" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Conor, On 17:19 Tue 20 Aug , Conor Dooley wrote: > On Tue, Aug 20, 2024 at 04:36:03PM +0200, Andrea della Porta wrote: > > Add device tree bindings for the clock generator found in RP1 multi > > function device, and relative entries in MAINTAINERS file. > > > > Signed-off-by: Andrea della Porta > > --- > > .../clock/raspberrypi,rp1-clocks.yaml | 87 +++++++++++++++++++ > > MAINTAINERS | 6 ++ > > include/dt-bindings/clock/rp1.h | 56 ++++++++++++ > > 3 files changed, 149 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/clock/raspberrypi,rp1-clocks.yaml > > create mode 100644 include/dt-bindings/clock/rp1.h > > > > diff --git a/Documentation/devicetree/bindings/clock/raspberrypi,rp1-clocks.yaml b/Documentation/devicetree/bindings/clock/raspberrypi,rp1-clocks.yaml > > new file mode 100644 > > index 000000000000..b27db86d0572 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/clock/raspberrypi,rp1-clocks.yaml > > @@ -0,0 +1,87 @@ > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/clock/raspberrypi,rp1-clocks.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: RaspberryPi RP1 clock generator > > + > > +maintainers: > > + - Andrea della Porta > > + > > +description: | > > + The RP1 contains a clock generator designed as three PLLs (CORE, AUDIO, > > + VIDEO), and each PLL output can be programmed though dividers to generate > > + the clocks to drive the sub-peripherals embedded inside the chipset. > > + > > + Link to datasheet: > > + https://datasheets.raspberrypi.com/rp1/rp1-peripherals.pdf > > + > > +properties: > > + compatible: > > + const: raspberrypi,rp1-clocks > > + > > + reg: > > + maxItems: 1 > > + > > + '#clock-cells': > > + description: > > + The index in the assigned-clocks is mapped to the output clock as per > > + definitions in dt-bindings/clock/rp1.h. > > + const: 1 > > + > > + clocks: > > + maxItems: 1 > > + > > +required: > > + - compatible > > + - reg > > + - '#clock-cells' > > + - clocks > > + > > +additionalProperties: false > > + > > +examples: > > + - | > > + #include > > + > > + rp1 { > > + #address-cells = <2>; > > + #size-cells = <2>; > > + > > + rp1_clocks: clocks@18000 { > > The unit address does not match the reg property. I'm surprised that > dtc doesn't complain about that. Agreed. I'll update the address with the reg value in the next release > > > + compatible = "raspberrypi,rp1-clocks"; > > + reg = <0xc0 0x40018000 0x0 0x10038>; > > This is a rather oddly specific size. It leads me to wonder if this > region is inside some sort of syscon area? >From downstream source code and RP1 datasheet it seems that the last addressable register is at 0xc040028014 while the range exposed through teh devicetree ends up at 0xc040028038, so it seems more of a little safe margin. I wouldn't say it is a syscon area since those register are quite specific for video clock generation and not to be intended to be shared among different peripherals. Anyway, the next register aperture is at 0xc040030000 so I would say we can extend the clock mapped register like the following: reg = <0xc0 0x40018000 0x0 0x18000>; if you think it is more readable. > > > + #clock-cells = <1>; > > + clocks = <&clk_xosc>; > > + > > + assigned-clocks = <&rp1_clocks RP1_PLL_SYS_CORE>, > FWIW, I don't think any of these assigned clocks are helpful for the > example. That said, why do you need to configure all of these assigned > clocks via devicetree when this node is the provider of them? Not sure to understand what you mean here, the example is there just to show how to compile the dt node, maybe you're referring to the fact that the consumer should setup the clock freq? Consider that the rp1-clocks is coupled to the peripherals contained in the same RP1 chip so there is not much point in letting the peripherals set the clock to their leisure. > > > + <&rp1_clocks RP1_PLL_AUDIO_CORE>, > > + /* RP1_PLL_VIDEO_CORE and dividers are now managed by VEC,DPI drivers */ > > Comments like this also do not seem relevant to the binding. Agreed, will drop in the next release. > > > Cheers, > Conor. > Many thanks, Andrea > > > + <&rp1_clocks RP1_PLL_SYS>, > > + <&rp1_clocks RP1_PLL_SYS_SEC>, > > + <&rp1_clocks RP1_PLL_AUDIO>, > > + <&rp1_clocks RP1_PLL_AUDIO_SEC>, > > + <&rp1_clocks RP1_CLK_SYS>, > > + <&rp1_clocks RP1_PLL_SYS_PRI_PH>, > > + /* RP1_CLK_SLOW_SYS is used for the frequency counter (FC0) */ > > + <&rp1_clocks RP1_CLK_SLOW_SYS>, > > + <&rp1_clocks RP1_CLK_SDIO_TIMER>, > > + <&rp1_clocks RP1_CLK_SDIO_ALT_SRC>, > > + <&rp1_clocks RP1_CLK_ETH_TSU>; > > + > > + assigned-clock-rates = <1000000000>, // RP1_PLL_SYS_CORE > > + <1536000000>, // RP1_PLL_AUDIO_CORE > > + <200000000>, // RP1_PLL_SYS > > + <125000000>, // RP1_PLL_SYS_SEC > > + <61440000>, // RP1_PLL_AUDIO > > + <192000000>, // RP1_PLL_AUDIO_SEC > > + <200000000>, // RP1_CLK_SYS > > + <100000000>, // RP1_PLL_SYS_PRI_PH > > + /* Must match the XOSC frequency */ > > + <50000000>, // RP1_CLK_SLOW_SYS > > + <1000000>, // RP1_CLK_SDIO_TIMER > > + <200000000>, // RP1_CLK_SDIO_ALT_SRC > > + <50000000>; // RP1_CLK_ETH_TSU > > + }; > > + }; > > diff --git a/MAINTAINERS b/MAINTAINERS > > index 42decde38320..6e7db9bce278 100644 > > --- a/MAINTAINERS > > +++ b/MAINTAINERS > > @@ -19116,6 +19116,12 @@ F: Documentation/devicetree/bindings/media/raspberrypi,pispbe.yaml > > F: drivers/media/platform/raspberrypi/pisp_be/ > > F: include/uapi/linux/media/raspberrypi/ > > > > +RASPBERRY PI RP1 PCI DRIVER > > +M: Andrea della Porta > > +S: Maintained > > +F: Documentation/devicetree/bindings/clock/raspberrypi,rp1-clocks.yaml > > +F: include/dt-bindings/clock/rp1.h > > + > > RC-CORE / LIRC FRAMEWORK > > M: Sean Young > > L: linux-media@vger.kernel.org > > diff --git a/include/dt-bindings/clock/rp1.h b/include/dt-bindings/clock/rp1.h > > new file mode 100644 > > index 000000000000..1ed67b8a5229 > > --- /dev/null > > +++ b/include/dt-bindings/clock/rp1.h > > @@ -0,0 +1,56 @@ > > +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ > > +/* > > + * Copyright (C) 2021 Raspberry Pi Ltd. > > + */ > > + > > +#define RP1_PLL_SYS_CORE 0 > > +#define RP1_PLL_AUDIO_CORE 1 > > +#define RP1_PLL_VIDEO_CORE 2 > > + > > +#define RP1_PLL_SYS 3 > > +#define RP1_PLL_AUDIO 4 > > +#define RP1_PLL_VIDEO 5 > > + > > +#define RP1_PLL_SYS_PRI_PH 6 > > +#define RP1_PLL_SYS_SEC_PH 7 > > +#define RP1_PLL_AUDIO_PRI_PH 8 > > + > > +#define RP1_PLL_SYS_SEC 9 > > +#define RP1_PLL_AUDIO_SEC 10 > > +#define RP1_PLL_VIDEO_SEC 11 > > + > > +#define RP1_CLK_SYS 12 > > +#define RP1_CLK_SLOW_SYS 13 > > +#define RP1_CLK_DMA 14 > > +#define RP1_CLK_UART 15 > > +#define RP1_CLK_ETH 16 > > +#define RP1_CLK_PWM0 17 > > +#define RP1_CLK_PWM1 18 > > +#define RP1_CLK_AUDIO_IN 19 > > +#define RP1_CLK_AUDIO_OUT 20 > > +#define RP1_CLK_I2S 21 > > +#define RP1_CLK_MIPI0_CFG 22 > > +#define RP1_CLK_MIPI1_CFG 23 > > +#define RP1_CLK_PCIE_AUX 24 > > +#define RP1_CLK_USBH0_MICROFRAME 25 > > +#define RP1_CLK_USBH1_MICROFRAME 26 > > +#define RP1_CLK_USBH0_SUSPEND 27 > > +#define RP1_CLK_USBH1_SUSPEND 28 > > +#define RP1_CLK_ETH_TSU 29 > > +#define RP1_CLK_ADC 30 > > +#define RP1_CLK_SDIO_TIMER 31 > > +#define RP1_CLK_SDIO_ALT_SRC 32 > > +#define RP1_CLK_GP0 33 > > +#define RP1_CLK_GP1 34 > > +#define RP1_CLK_GP2 35 > > +#define RP1_CLK_GP3 36 > > +#define RP1_CLK_GP4 37 > > +#define RP1_CLK_GP5 38 > > +#define RP1_CLK_VEC 39 > > +#define RP1_CLK_DPI 40 > > +#define RP1_CLK_MIPI0_DPI 41 > > +#define RP1_CLK_MIPI1_DPI 42 > > + > > +/* Extra PLL output channels - RP1B0 only */ > > +#define RP1_PLL_VIDEO_PRI_PH 43 > > +#define RP1_PLL_AUDIO_TERN 44 > > -- > > 2.35.3 > >