linux-riscv.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: David Abdurachmanov <david.abdurachmanov@gmail.com>
To: JaeJoon Jung <rgbi3307@gmail.com>
Cc: linux-riscv <linux-riscv@lists.infradead.org>,
	Anup Patel <Anup.Patel@wdc.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Paul Walmsley <paul.walmsley@sifive.com>
Subject: Re: [PATCH] riscv: Add gpio and pwmleds to DTS(/arch/riscv/boot/dts/sifive/)
Date: Tue, 21 Jan 2020 19:20:44 +0200	[thread overview]
Message-ID: <CAEn-LTrqPXeZcHYGc=FgyteDdZZn+pPeHttuOSxaPu1EfKPR7A@mail.gmail.com> (raw)
In-Reply-To: <CAHOvCC5aEc=p_6Yxkyr8n9BXZug_-NA_CJswu8vtkM8aOBhWvg@mail.gmail.com>

I have a similar patch, but still using old GPIO driver (non
upstream). See comments below.

On Tue, Jan 21, 2020 at 8:59 AM JaeJoon Jung <rgbi3307@gmail.com> wrote:
>
> I added below DTS to act gpio and pwmleds for SiFive FU540 Unleashed board.
>
> diff --git a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
> b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
> index a2e3d54e830c..b03bf570020c 100644
> --- a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
> +++ b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
>
> +                gpio0: gpio@10060000 {
> +                        compatible = "sifive,fu540-c000-gpio", "sifive,gpio0";
> +                        reg = <0x0 0x10060000 0x0 0x1000>;
> +                        reg-names = "control";
> +                        gpio-controller;
> +                        #gpio-cells = <2>;
> +                        ngpios = <16>;
> +                        interrupt-controller;
> +                        #interrupt-cells = <2>;
> +                        interrupt-parent = <&plic0>;
> +                        interrupts = <15 16 17 18 19 20 21 22 23 24
> 25 26 27 28 29 30>;
> +                        status = "disabled";
> +                };
>
>
> diff --git a/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
> b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
> index 88cfcb96bf23..f3f55dbbf737 100644
> --- a/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
> +++ b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
>
>         cpus {
> @@ -41,6 +41,39 @@
>                 clock-frequency = <RTCCLK_FREQ>;
>                 clock-output-names = "rtcclk";
>         };
> +
> +
> +        pwmleds {
> +                compatible = "pwm-leds";
> +                heartbeat {
> +                        label = "led1";

Could we have labels based on schematics and prints on PCB?

I use:

label = "green:d1";
label = "green:d2";
label = "green:d3";
label = "green:d4";

> +                        max-brightness = <255>;
> +                        active-low = <1>;
> +                        pwms = <&pwm0 0 7812500 0>;
> +                        linux,default-trigger = "heartbeat";
> +                };
> +                mtd {
> +                        label = "led2";
> +                        max-brightness = <255>;
> +                        active-low = <1>;
> +                        pwms = <&pwm0 1 7812500 0>;
> +                        linux,default-trigger = "mtd";
> +                };
> +                netdev {

Just a quick note. For this to work properly you also need to have udev rule.
I think, there was a patch posted in 2019 to enable netdev
configuration in DTS to avoid having configuration via udev or
similar, but that wasn't merged the last time I checked (late 2019).

See:
[PATCH 4/4] leds: netdev trigger: allow setting initial values in device tree
https://www.spinics.net/lists/netdev/msg557736.html

> +                        label = "led3";
> +                        max-brightness = <255>;
> +                        active-low = <1>;
> +                        pwms = <&pwm0 2 7812500 0>;
> +                        linux,default-trigger = "netdev";
> +                };
> +                panic {

I find that panic PWM LED doesn't actually work for me.
IIUC this might only work for GPIO attached LEDs based on comments I found.
I have this LED remapped for mmc0 activity:

mmc0 {
  label = "green:d4";
  pwms = <&pwm0 3 2000000 0>;
  max-brightness = <255>;
  linux,default-trigger = "mmc0";
};

> +                        label = "led4";
> +                        max-brightness = <255>;
> +                        active-low = <1>;
> +                        pwms = <&pwm0 3 7812500 0>;
> +                        linux,default-trigger = "panic";
> +                };
> +        };
>  };
>
>  &uart0 {
> @@ -94,3 +127,7 @@
>  &pwm1 {
>         status = "okay";
>  };
> +
> +&gpio0 {
> +       status = "okay";
> +};
>
>
> If apply above DTS, the gpio-sifive driver works well without source
> modification.
> drivers/gpio/gpio-sifive.c
> drivers/leds/leds-pwm.c
>
> I have checked below:
>
> led1(D1) is acting well as heartbeat.
>
> RISCV-FU540:/sys/class/leds# pwd
> /sys/class/leds
> RISCV-FU540:/sys/class/leds# ll
> total 0
> drwxr-xr-x    2 root     root             0 Jan  1 00:00 ./
> drwxr-xr-x   32 root     root             0 Jan  1 00:00 ../
> lrwxrwxrwx    1 root     root             0 Jan  1 00:00 led1 ->
> ../../devices/platform/pwmleds/leds/led1/
> lrwxrwxrwx    1 root     root             0 Jan  1 00:00 led2 ->
> ../../devices/platform/pwmleds/leds/led2/
> lrwxrwxrwx    1 root     root             0 Jan  1 00:00 led3 ->
> ../../devices/platform/pwmleds/leds/led3/
> lrwxrwxrwx    1 root     root             0 Jan  1 00:00 led4 ->
> ../../devices/platform/pwmleds/leds/led4/
>
> RISCV-FU540:/sys/class/leds# cd led3
> RISCV-FU540:/sys/class/leds/led3# ll
> total 0
> drwxr-xr-x    2 root     root             0 Jan  1 00:00 ./
> drwxr-xr-x    6 root     root             0 Jan  1 00:00 ../
> -rw-r--r--    1 root     root          4096 Jan  1 00:01 brightness
> lrwxrwxrwx    1 root     root             0 Jan  1 00:00 device ->
> ../../../pwmleds/
> -r--r--r--    1 root     root          4096 Jan  1 00:00 max_brightness
> lrwxrwxrwx    1 root     root             0 Jan  1 00:00 subsystem ->
> ../../../../../class/leds/
> -rw-r--r--    1 root     root          4096 Jan  1 00:00 trigger
> -rw-r--r--    1 root     root          4096 Jan  1 00:00 uevent
> RISCV-FU540:/sys/class/leds/led3# echo 1 > brightness
> RISCV-FU540:/sys/class/leds/led3# echo 127 > brightness
> RISCV-FU540:/sys/class/leds/led3# echo 255 > brightness
>
> leds(D1, D2, D3, D4) are acting well as pwm brightness.
>


  reply	other threads:[~2020-01-21 17:21 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-21  6:58 [PATCH] riscv: Add gpio and pwmleds to DTS(/arch/riscv/boot/dts/sifive/) JaeJoon Jung
2020-01-21 17:20 ` David Abdurachmanov [this message]
2020-01-30  3:35 ` Paul Walmsley
2020-01-30  6:23   ` JaeJoon Jung
2020-01-30 16:13     ` David Abdurachmanov
2020-01-30 17:20       ` JaeJoon Jung
2020-01-31 13:20         ` David Abdurachmanov

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='CAEn-LTrqPXeZcHYGc=FgyteDdZZn+pPeHttuOSxaPu1EfKPR7A@mail.gmail.com' \
    --to=david.abdurachmanov@gmail.com \
    --cc=Anup.Patel@wdc.com \
    --cc=linux-riscv@lists.infradead.org \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=rgbi3307@gmail.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).