From: Daniel Thompson <daniel.thompson@linaro.org>
To: Arnd Bergmann <arnd@arndb.de>
Cc: "Mark Rutland" <mark.rutland@arm.com>,
"linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>,
"Linus Walleij" <linus.walleij@linaro.org>,
"Will Deacon" <will.deacon@arm.com>,
"Stefan Agner" <stefan@agner.ch>,
"Nikolay Borisov" <Nikolay.Borisov@arm.com>,
"Peter Meerwald" <pmeerw@pmeerw.net>,
"linux-api@vger.kernel.org" <linux-api@vger.kernel.org>,
"Lee Jones" <lee.jones@linaro.org>,
"Mauro Carvalho Chehab" <mchehab@osg.samsung.com>,
"Kees Cook" <keescook@chromium.org>,
Linux-Arch <linux-arch@vger.kernel.org>,
"Russell King" <linux@arm.linux.org.uk>,
"Jonathan Corbet" <corbet@lwn.net>, "Jiri Slaby" <jslaby@suse.cz>,
"Daniel Lezcano" <daniel.lezcano@linaro.org>,
"Chanwoo Choi" <cw00.choi@samsung.com>,
"Andy Shevchenko" <andy.shevchenko@gmail.com>,
"Antti Palosaari" <crope@iki.fi>,
"Geert Uytterhoeven" <geert@linux-m68k.org>,
"linux-serial@vger.kernel.org" <linux-serial@vger.kernel.org>
Subject: Re: [PATCH v8 14/16] ARM: dts: Introduce STM32F429 MCU
Date: Wed, 13 May 2015 16:20:34 +0100 [thread overview]
Message-ID: <55536BC2.30603@linaro.org> (raw)
In-Reply-To: <3125409.QXbEmPolyh@wuerfel>
On 13/05/15 14:27, Arnd Bergmann wrote:
> On Wednesday 13 May 2015 13:58:05 Daniel Thompson wrote:
>> On 13/05/15 12:45, Maxime Coquelin wrote:
>>> 2015-05-12 23:21 GMT+02:00 Arnd Bergmann <arnd@arndb.de>:
>>>> On Saturday 09 May 2015 09:53:56 Maxime Coquelin wrote:
>>>>> +#include <dt-bindings/mfd/stm32f4-rcc.h>
>>>>> +
>>>>>
>>>>
>>>> Can you find a way to avoid this dependency?
>>>>
>>>> Maybe you can change the bindings so that the numbers you pass as
>>>> arguments to the reset and clock specifiers reflect the numbers that
>>>> the hardware use?
>>>
>>> If I understand correctly, you prefer the way I did in v7 [0]?
>
> Yes, that looks better. I would probably not list all the possible
> values in the binding though, when the intention is to use the
> hardware specific values, and being able to reuse the binding
> and driver for variations of the same chip.
Indeed. It was that long list that originally provoked me to comment in
the first place.
>>> Note that doing that won't break the DT binary compatibility, as the
>>> raw reset values, or the ones from defines are the same.
>>>
>>> Daniel, could you share an example of the bindings you would use for the clocks?
>>
>> For the most cases, where there is a clock gate just before the
>> peripheral it looks pretty much like the reset driver and I use the bit
>> offset of the clock gating bit as the index.
>
> Is this bit always the same index as the one for the reset driver?
For the all reset bits:
clock idx = reset idx + 256
The opposite is not true; the clock bits are a superset of the reset
bits (the reset bits act on cells but some cells have >1 clock).
>> However there are a couple of clocks without gating just before the
>> clock reaches the peripheral:
>>
>> 1. A hard coded /8. I think this will have to be given a synthetic
>> number.
>
> If this is just a divider, why not use a separate DT node for that,
> like this:
>
> clock {
> compatible = "fixed-factor-clock";
> clocks = <&parentclk>;
> #clock-cells = <0>;
> clock-div = <8>;
> clock-mult = <1>;
> };
>
> No need to assign a number for this.
I'd wondered about doing that.
It will certainly work but it seemed a bit odd to me to have one (really
tiny) part of the RCC cell included seperately in the platform
description whilst all the complicated bits end up aggregated into the
RCC cell.
Is there much prior art that uses this type of trick to avoid having
magic numbers into the bindings?
>> 2. Ungated dividers. For these I am using the bit offset of the LSB of
>> the mux field.
>
> Do these ones also come with resets?
No. They mostly run to the core and its intimate peripherals (i.e. only
reset line comes from WDT).
>> So I think there is only one value that is completely unrelated to the
>> hardware and will use a magic constant instead.
>>
>> I had planned to macros similar to the STM32F4_AxB_RESET() family of
>> macros in both clk driver and DT in order to reuse the bit layouts from
>> dt-bindings/mfd/stm32f4-rcc.h .
>>
>> Normal case would have looked like this:
>>
>> timer3: timer@40000000 {
>> compatible = "st,stm32-timer";
>> reg = <0x40000000 0x400>;
>> interrupts = <28>;
>> resets = <&rcc STM32F4_APB1_RESET(TIM3)>;
>> clocks = <&rcc STM32F4_APB1_CLK(TIM3)>;
>> status = "disabled";
>> };
>>
>> Without the macros it looks like this:
>>
>> timer3: timer@40000000 {
>> compatible = "st,stm32-timer";
>> reg = <0x40000000 0x400>;
>> interrupts = <28>;
>> resets = <&rcc 257>;
>> clocks = <&rcc 513>;
>> status = "disabled";
>> };
>>
>> However we could perhaps be more literate even if we don't use the macros?
>>
>> timer3: timer@40000000 {
>> compatible = "st,stm32-timer";
>> reg = <0x40000000 0x400>;
>> interrupts = <28>;
>> resets = <&rcc ((0x20*8) + 1)>;
>> clocks = <&rcc ((0x40*8) + 1)>;
>> status = "disabled";
>> };
>
> How about #address-cells = <2>, so you can do
>
> resets = <&rcc 8 1>;
> clocks = <&rcc 8 1>;
>
> with the first cell being an index for the block and the second cell the
> bit number within that block.
That would suit me very well (although is the 0x20/0x40 not the 8 that
we would need in the middle column).
Maxime: Does that suit reset driver?
Daniel.
next prev parent reply other threads:[~2015-05-13 15:20 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-09 7:53 [PATCH v8 00/16] Add support to STMicroelectronics STM32 family Maxime Coquelin
2015-05-09 7:53 ` [PATCH v8 01/16] scripts: link-vmlinux: Don't pass page offset to kallsyms if XIP Kernel Maxime Coquelin
2015-05-18 11:47 ` Maxime Coquelin
2015-05-20 23:04 ` Andreas Färber
[not found] ` <555D12F8.4000403-l3A5Bk7waGM@public.gmane.org>
2015-05-21 5:40 ` Michal Marek
2015-05-21 7:42 ` Maxime Coquelin
2015-05-22 20:20 ` Andreas Färber
2015-05-09 7:53 ` [PATCH v8 02/16] ARM: ARMv7-M: Enlarge vector table up to 256 entries Maxime Coquelin
2015-05-09 7:53 ` [PATCH v8 03/16] dt-bindings: Document the ARM System timer bindings Maxime Coquelin
2015-05-09 7:53 ` [PATCH v8 04/16] clocksource/drivers: Add ARM System timer driver Maxime Coquelin
2015-05-18 11:55 ` Maxime Coquelin
[not found] ` <CALszF6BiKwDKejfpVgs6ojTxC4LSRfLSEaszXTGVy7xfbHLHZg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-18 12:49 ` Daniel Lezcano
2015-05-18 12:57 ` Maxime Coquelin
2015-05-09 7:53 ` [PATCH v8 05/16] dt-bindings: mfd: Add STM32F4 RCC numeric constants into DT include file Maxime Coquelin
2015-05-09 7:53 ` [PATCH v8 07/16] drivers: reset: Add STM32 reset driver Maxime Coquelin
[not found] ` <1431158038-3813-8-git-send-email-mcoquelin.stm32-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-05-20 23:45 ` Andreas Färber
2015-05-21 7:46 ` Maxime Coquelin
2015-05-21 17:58 ` Andreas Färber
2015-05-21 19:57 ` Maxime Coquelin
2015-05-21 22:01 ` Andreas Färber
2015-05-22 14:04 ` Maxime Coquelin
2015-05-09 7:53 ` [PATCH v8 08/16] dt-bindings: Document the STM32 timer bindings Maxime Coquelin
2015-05-09 7:53 ` [PATCH v8 09/16] clockevents/drivers: Add STM32 Timer driver Maxime Coquelin
2015-05-18 12:59 ` Maxime Coquelin
2015-05-18 13:10 ` Daniel Lezcano
2015-05-18 14:03 ` Maxime Coquelin
2015-05-19 8:16 ` Daniel Lezcano
2015-05-19 8:55 ` Maxime Coquelin
[not found] ` <CALszF6CwGuKqgbX6gVrya1-_YOgvtrgC7pVqKTNjCRif_o532A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-19 9:06 ` Daniel Lezcano
2015-05-19 9:44 ` Maxime Coquelin
2015-05-19 9:59 ` Daniel Lezcano
[not found] ` <555B098A.8030202-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-05-19 10:02 ` Maxime Coquelin
[not found] ` <CALszF6AJ3Zf598wYeUx=iNWHHKT24xUyfagB=+4GocwZ-Fd-0g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-19 10:55 ` Arnd Bergmann
2015-05-19 13:42 ` Maxime Coquelin
2015-05-19 13:49 ` Daniel Lezcano
2015-05-19 14:05 ` Arnd Bergmann
2015-05-19 14:41 ` Maxime Coquelin
2015-05-19 14:50 ` Russell King - ARM Linux
2015-05-19 15:34 ` Maxime Coquelin
[not found] ` <CALszF6A-De6dvcRNoa9ruL+y6Wt_rc7bi-O-VxHWkFF9NSt5_g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-19 15:03 ` Daniel Lezcano
2015-05-19 12:56 ` Thomas Gleixner
2015-05-19 13:00 ` Russell King - ARM Linux
[not found] ` <20150519130028.GF2067-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2015-05-19 13:17 ` Maxime Coquelin
2015-05-09 7:53 ` [PATCH v8 10/16] dt-bindings: Document the STM32 USART bindings Maxime Coquelin
2015-05-09 7:53 ` [PATCH v8 11/16] serial: stm32-usart: Add STM32 USART Driver Maxime Coquelin
2015-05-09 10:07 ` Andy Shevchenko
2015-05-18 13:05 ` Maxime Coquelin
2015-05-09 7:53 ` [PATCH v8 12/16] ARM: Add STM32 family machine Maxime Coquelin
[not found] ` <1431158038-3813-13-git-send-email-mcoquelin.stm32-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-05-15 19:57 ` Arnd Bergmann
2015-05-09 7:53 ` [PATCH v8 13/16] ARM: dts: Add ARM System timer as clocksource in armv7m Maxime Coquelin
2015-05-15 19:59 ` Arnd Bergmann
2015-05-09 7:53 ` [PATCH v8 14/16] ARM: dts: Introduce STM32F429 MCU Maxime Coquelin
2015-05-12 21:21 ` Arnd Bergmann
2015-05-13 11:45 ` Maxime Coquelin
[not found] ` <CALszF6CS8Q9DWX+ERtu=k=Bzr1-25N3oZQyWyxDZBF3an4nFKQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-13 12:58 ` Daniel Thompson
2015-05-13 13:27 ` Arnd Bergmann
2015-05-13 15:20 ` Daniel Thompson [this message]
2015-05-13 15:28 ` Arnd Bergmann
2015-05-13 16:29 ` Maxime Coquelin
[not found] ` <CALszF6DHazhN6+hGShyrmqtMrPod0hdb8mHAwK-GWfRxXzy7wQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-13 16:37 ` Arnd Bergmann
2015-05-13 16:54 ` Maxime Coquelin
[not found] ` <CALszF6CaO_yuNiSDuDV+4d2NRe_+32j=zcSE1HPhB1UH59cW9w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-13 19:11 ` Arnd Bergmann
2015-05-20 16:17 ` Maxime Coquelin
2015-05-21 18:51 ` Maxime Ripard
2015-05-21 20:10 ` Maxime Coquelin
2015-05-23 8:28 ` Maxime Ripard
2015-05-26 9:25 ` Maxime Coquelin
2015-05-22 9:06 ` Philipp Zabel
2015-05-22 9:18 ` Maxime Ripard
2015-05-22 10:07 ` Philipp Zabel
2015-05-22 12:32 ` Maxime Coquelin
2015-05-22 12:43 ` Daniel Thompson
2015-05-22 13:09 ` Andreas Färber
2015-05-22 13:57 ` Maxime Coquelin
2015-05-22 14:06 ` Andreas Färber
2015-05-22 14:14 ` Daniel Thompson
2015-05-23 8:18 ` Maxime Ripard
2015-05-22 9:41 ` Maxime Coquelin
2015-05-13 19:29 ` Daniel Thompson
[not found] ` <5553A608.9080402-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-05-13 19:37 ` Arnd Bergmann
2015-05-14 16:34 ` Maxime Coquelin
2015-05-14 19:38 ` Daniel Thompson
2015-05-18 12:21 ` Maxime Coquelin
[not found] ` <1431158038-3813-1-git-send-email-mcoquelin.stm32-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-05-09 7:53 ` [PATCH v8 06/16] dt-bindings: Document the STM32 reset bindings Maxime Coquelin
2015-05-09 7:53 ` [PATCH v8 15/16] ARM: configs: Add STM32 defconfig Maxime Coquelin
[not found] ` <1431158038-3813-16-git-send-email-mcoquelin.stm32-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-05-15 20:03 ` Arnd Bergmann
2015-05-09 7:53 ` [PATCH v8 16/16] MAINTAINERS: Add entry for STM32 MCUs Maxime Coquelin
2015-05-15 19:58 ` Arnd Bergmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55536BC2.30603@linaro.org \
--to=daniel.thompson@linaro.org \
--cc=Nikolay.Borisov@arm.com \
--cc=andy.shevchenko@gmail.com \
--cc=arnd@arndb.de \
--cc=corbet@lwn.net \
--cc=crope@iki.fi \
--cc=cw00.choi@samsung.com \
--cc=daniel.lezcano@linaro.org \
--cc=geert@linux-m68k.org \
--cc=jslaby@suse.cz \
--cc=keescook@chromium.org \
--cc=lee.jones@linaro.org \
--cc=linus.walleij@linaro.org \
--cc=linux-api@vger.kernel.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=mark.rutland@arm.com \
--cc=mchehab@osg.samsung.com \
--cc=pmeerw@pmeerw.net \
--cc=stefan@agner.ch \
--cc=will.deacon@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).