[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <34d6bc0a-9767-48ac-9fba-46d28350e20d@microchip.com>
Date: Fri, 20 Sep 2024 07:04:00 +0000
From: <Varshini.Rajendran@...rochip.com>
To: <Nicolas.Ferre@...rochip.com>, <alexandre.belloni@...tlin.com>,
<claudiu.beznea@...on.dev>, <robh@...nel.org>, <krzk+dt@...nel.org>,
<conor+dt@...nel.org>, <linux-arm-kernel@...ts.infradead.org>,
<devicetree@...r.kernel.org>, <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v7 12/12] ARM: dts: microchip: sam9x75_curiosity: add
sam9x75 curiosity board
On 20/09/24 11:31 am, Alexander Dahl wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>
> Hello,
>
> Am Tue, Sep 03, 2024 at 12:14:38PM +0530 schrieb Varshini Rajendran:
>> Add device tree file for sam9x75 curiosity board.
>>
>> Signed-off-by: Varshini Rajendran <varshini.rajendran@...rochip.com>
>> ---
>> Changes in v7:
>>
>> - Added child nodes to the tcb node.
>> - Moved poweroff node to maintain alphabetic order.
>> ---
>> arch/arm/boot/dts/microchip/Makefile | 3 +
>> .../dts/microchip/at91-sam9x75_curiosity.dts | 324 ++++++++++++++++++
>> 2 files changed, 327 insertions(+)
>> create mode 100644 arch/arm/boot/dts/microchip/at91-sam9x75_curiosity.dts
>>
>> diff --git a/arch/arm/boot/dts/microchip/Makefile b/arch/arm/boot/dts/microchip/Makefile
>> index 0c45c8d17468..470fe46433a9 100644
>> --- a/arch/arm/boot/dts/microchip/Makefile
>> +++ b/arch/arm/boot/dts/microchip/Makefile
>> @@ -2,6 +2,7 @@
>> # Enables support for device-tree overlays
>> DTC_FLAGS_at91-sam9x60_curiosity := -@
>> DTC_FLAGS_at91-sam9x60ek := -@
>> +DTC_FLAGS_at91-sam9x75_curiosity := -@
>> DTC_FLAGS_at91-sama5d27_som1_ek := -@
>> DTC_FLAGS_at91-sama5d27_wlsom1_ek := -@
>> DTC_FLAGS_at91-sama5d29_curiosity := -@
>> @@ -60,6 +61,8 @@ dtb-$(CONFIG_SOC_AT91SAM9) += \
>> dtb-$(CONFIG_SOC_SAM9X60) += \
>> at91-sam9x60_curiosity.dtb \
>> at91-sam9x60ek.dtb
>> +dtb-$(CONFIG_SOC_SAM9X7) += \
>> + at91-sam9x75_curiosity.dtb
>> dtb-$(CONFIG_SOC_SAM_V7) += \
>> at91-kizbox2-2.dtb \
>> at91-kizbox3-hs.dtb \
>> diff --git a/arch/arm/boot/dts/microchip/at91-sam9x75_curiosity.dts b/arch/arm/boot/dts/microchip/at91-sam9x75_curiosity.dts
>> new file mode 100644
>> index 000000000000..1119f5d60d89
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/microchip/at91-sam9x75_curiosity.dts
>> @@ -0,0 +1,324 @@
>> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
>> +/*
>> + * at91-sam9x75_curiosity.dts - Device Tree file for Microchip SAM9X75 Curiosity board
>> + *
>> + * Copyright (C) 2023 Microchip Technology Inc. and its subsidiaries
>> + *
>> + * Author: Varshini Rajendran <varshini.rajendran@...rochip.com>
>> + */
>> +/dts-v1/;
>> +#include "sam9x7.dtsi"
>> +#include <dt-bindings/input/input.h>
>> +
>> +/ {
>> + model = "Microchip SAM9X75 Curiosity";
>> + compatible = "microchip,sam9x75-curiosity", "microchip,sam9x7", "atmel,at91sam9";
>> +
>> + aliases {
>> + i2c0 = &i2c6;
>> + };
>> +
>> + chosen {
>> + stdout-path = "serial0:115200n8";
>> + };
>> +
>> + gpio-keys {
>> + compatible = "gpio-keys";
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&pinctrl_key_gpio_default>;
>> +
>> + button-user {
>> + label = "USER";
>> + gpios = <&pioC 9 GPIO_ACTIVE_LOW>;
>> + linux,code = <KEY_0>;
>> + wakeup-source;
>> + };
>> + };
>> +
>> + leds {
>> + compatible = "gpio-leds";
>> +
>> + led_red: led-red {
>> + label = "red";
>> + gpios = <&pioC 14 GPIO_ACTIVE_HIGH>;
>> + pinctrl-0 = <&pinctrl_red_led_gpio_default>;
>> + };
>> +
>> + led_green: led-green {
>> + label = "green";
>> + gpios = <&pioC 21 GPIO_ACTIVE_HIGH>;
>> + pinctrl-0 = <&pinctrl_green_led_gpio_default>;
>> + };
>> +
>> + led_blue: led-blue {
>> + label = "blue";
>> + gpios = <&pioC 20 GPIO_ACTIVE_HIGH>;
>> + pinctrl-0 = <&pinctrl_blue_led_gpio_default>;
>> + linux,default-trigger = "heartbeat";
>> + };
>> + };
>
> This is an RGB LED like on other Microchip Curiosity boards, right?
> So three colors in a single package? What about using the
> "leds-group-multicolor" driver instead of adding these as separate
> LEDs?
Yes this is an RGB LED like the others. But we have different pinctrls
and some of them are multiplexed. In this case, the pin pioC 21 is used
both as green LED and a PWM for an LVDS display (device node support to
be added once the base DTS is merged, driver support already in place
[1]). This is the reason these LEDs have different pinctrls and cannot
be added as a single multicolor node. Hope this answers your question
here and in the other mail.
[1]
https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/bridge/microchip-lvds.c
>
> See Documentation/devicetree/bindings/leds/leds-group-multicolor.yaml
> for reference. I tried that lately on the SAM9X60 Curiosity out of
> curiosity, and it's a nice interface from userspace POV.
>
> Besides: According to
> Documentation/devicetree/bindings/leds/common.yaml the group name
> should be 'led-controller' instead of 'leds'.
I can maybe send another version for this change.
>
> Greets
> Alex
>
>> +
>> + memory@...00000 {
>> + reg = <0x20000000 0x10000000>;
>> + device_type = "memory";
>> + };
>> +};
>> +
>> +&classd {
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&pinctrl_classd_default>;
>> + atmel,pwm-type = "diff";
>> + atmel,non-overlap-time = <10>;
>> + status = "okay";
>> +};
>> +
>> +&dbgu {
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&pinctrl_dbgu_default>;
>> + status = "okay";
>> +};
>> +
>> +&dma0 {
>> + status = "okay";
>> +};
>> +
>> +&flx6 {
>> + atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
>> + status = "okay";
>> +};
>> +
>> +&i2c6 {
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&pinctrl_flx6_default>;
>> + i2c-analog-filter;
>> + i2c-digital-filter;
>> + i2c-digital-filter-width-ns = <35>;
>> + status = "okay";
>> +
>> + pmic@5b {
>> + compatible = "microchip,mcp16502";
>> + reg = <0x5b>;
>> +
>> + regulators {
>> + vdd_3v3: VDD_IO {
>> + regulator-name = "VDD_IO";
>> + regulator-min-microvolt = <3300000>;
>> + regulator-max-microvolt = <3300000>;
>> + regulator-initial-mode = <2>;
>> + regulator-allowed-modes = <2>, <4>;
>> + regulator-always-on;
>> +
>> + regulator-state-standby {
>> + regulator-on-in-suspend;
>> + regulator-mode = <4>;
>> + };
>> +
>> + regulator-state-mem {
>> + regulator-mode = <4>;
>> + };
>> + };
>> +
>> + vddioddr: VDD_DDR {
>> + regulator-name = "VDD_DDR";
>> + regulator-min-microvolt = <1350000>;
>> + regulator-max-microvolt = <1350000>;
>> + regulator-initial-mode = <2>;
>> + regulator-allowed-modes = <2>, <4>;
>> + regulator-always-on;
>> +
>> + regulator-state-standby {
>> + regulator-on-in-suspend;
>> + regulator-mode = <4>;
>> + };
>> +
>> + regulator-state-mem {
>> + regulator-on-in-suspend;
>> + regulator-mode = <4>;
>> + };
>> + };
>> +
>> + vddcore: VDD_CORE {
>> + regulator-name = "VDD_CORE";
>> + regulator-min-microvolt = <1150000>;
>> + regulator-max-microvolt = <1150000>;
>> + regulator-initial-mode = <2>;
>> + regulator-allowed-modes = <2>, <4>;
>> + regulator-always-on;
>> +
>> + regulator-state-standby {
>> + regulator-on-in-suspend;
>> + regulator-mode = <4>;
>> + };
>> +
>> + regulator-state-mem {
>> + regulator-mode = <4>;
>> + };
>> + };
>> +
>> + dcdc4: VDD_OTHER {
>> + regulator-name = "VDD_OTHER";
>> + regulator-min-microvolt = <1150000>;
>> + regulator-max-microvolt = <1150000>;
>> + regulator-initial-mode = <2>;
>> + regulator-allowed-modes = <2>, <4>;
>> + regulator-ramp-delay = <3125>;
>> + regulator-always-on;
>> +
>> + regulator-state-standby {
>> + regulator-on-in-suspend;
>> + regulator-mode = <4>;
>> + };
>> +
>> + regulator-state-mem {
>> + regulator-mode = <4>;
>> + };
>> + };
>> +
>> + vldo1: LDO1 {
>> + regulator-name = "LDO1";
>> + regulator-min-microvolt = <3300000>;
>> + regulator-max-microvolt = <3300000>;
>> + regulator-always-on;
>> +
>> + regulator-state-standby {
>> + regulator-on-in-suspend;
>> + };
>> + };
>> +
>> + vldo2: LDO2 {
>> + regulator-name = "LDO2";
>> + regulator-min-microvolt = <1800000>;
>> + regulator-max-microvolt = <1800000>;
>> +
>> + regulator-state-standby {
>> + regulator-on-in-suspend;
>> + };
>> + };
>> + };
>> + };
>> +};
>> +
>> +&i2s {
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&pinctrl_i2s_default>;
>> + #sound-dai-cells = <0>;
>> + status = "okay";
>> +};
>> +
>> +&main_xtal {
>> + clock-frequency = <24000000>;
>> +};
>> +
>> +&pinctrl {
>> + classd {
>> + pinctrl_classd_default: classd-default {
>> + atmel,pins =
>> + <AT91_PIOA 18 AT91_PERIPH_C AT91_PINCTRL_PULL_UP>,
>> + <AT91_PIOA 19 AT91_PERIPH_C AT91_PINCTRL_PULL_DOWN>;
>> + };
>> + };
>> +
>> + dbgu {
>> + pinctrl_dbgu_default: dbgu-default {
>> + atmel,pins = <AT91_PIOA 26 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>,
>> + <AT91_PIOA 27 AT91_PERIPH_A AT91_PINCTRL_NONE>;
>> + };
>> + };
>> +
>> + flexcom {
>> + pinctrl_flx6_default: flx6-default {
>> + atmel,pins =
>> + <AT91_PIOA 24 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>,
>> + <AT91_PIOA 25 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
>> + };
>> + };
>> +
>> + gpio-keys {
>> + pinctrl_key_gpio_default: key-gpio-default {
>> + atmel,pins = <AT91_PIOC 9 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
>> + };
>> + };
>> +
>> + i2s {
>> + pinctrl_i2s_default: i2s-default {
>> + atmel,pins =
>> + <AT91_PIOB 26 AT91_PERIPH_D AT91_PINCTRL_NONE>, /* I2SCK */
>> + <AT91_PIOB 15 AT91_PERIPH_D AT91_PINCTRL_NONE>, /* I2SWS */
>> + <AT91_PIOB 16 AT91_PERIPH_D AT91_PINCTRL_NONE>, /* I2SDIN */
>> + <AT91_PIOB 17 AT91_PERIPH_D AT91_PINCTRL_NONE>, /* I2SDOUT */
>> + <AT91_PIOB 25 AT91_PERIPH_D AT91_PINCTRL_NONE>; /* I2SMCK */
>> + };
>> + };
>> +
>> + leds {
>> + pinctrl_red_led_gpio_default: red-led-gpio-default {
>> + atmel,pins = <AT91_PIOC 14 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
>> + };
>> + pinctrl_green_led_gpio_default: green-led-gpio-default {
>> + atmel,pins = <AT91_PIOC 21 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
>> + };
>> + pinctrl_blue_led_gpio_default: blue-led-gpio-default {
>> + atmel,pins = <AT91_PIOC 20 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
>> + };
>> + };
>> +
>> + sdmmc0 {
>> + pinctrl_sdmmc0_default: sdmmc0-default {
>> + atmel,pins =
>> + <AT91_PIOA 2 AT91_PERIPH_A (AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)>, /* PA2 CK periph A with pullup */
>> + <AT91_PIOA 1 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)>, /* PA1 CMD periph A with pullup */
>> + <AT91_PIOA 0 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)>, /* PA0 DAT0 periph A */
>> + <AT91_PIOA 3 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)>, /* PA3 DAT1 periph A with pullup */
>> + <AT91_PIOA 4 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)>, /* PA4 DAT2 periph A with pullup */
>> + <AT91_PIOA 5 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)>; /* PA5 DAT3 periph A with pullup */
>> + };
>> + };
>> +}; /* pinctrl */
>> +
>> +&poweroff {
>> + debounce-delay-us = <976>;
>> + status = "okay";
>> +
>> + input@0 {
>> + reg = <0>;
>> + };
>> +};
>> +
>> +&rtt {
>> + atmel,rtt-rtc-time-reg = <&gpbr 0x0>;
>> +};
>> +
>> +&sdmmc0 {
>> + bus-width = <4>;
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&pinctrl_sdmmc0_default>;
>> + cd-gpios = <&pioA 23 GPIO_ACTIVE_LOW>;
>> + disable-wp;
>> + status = "okay";
>> +};
>> +
>> +&slow_xtal {
>> + clock-frequency = <32768>;
>> +};
>> +
>> +&tcb {
>> + timer0: timer@0 {
>> + compatible = "atmel,tcb-timer";
>> + reg = <0>;
>> + };
>> +
>> + timer1: timer@1 {
>> + compatible = "atmel,tcb-timer";
>> + reg = <1>;
>> + };
>> +};
>> +
>> +&trng {
>> + status = "okay";
>> +};
>> +
>> +&watchdog {
>> + status = "okay";
>> +};
>> --
>> 2.25.1
>>
>>
--
Thanks and Regards,
Varshini Rajendran.
Powered by blists - more mailing lists