linux-riscv.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] riscv: Add gpio and pwmleds to DTS(/arch/riscv/boot/dts/sifive/)
@ 2020-01-21  6:58 JaeJoon Jung
  2020-01-21 17:20 ` David Abdurachmanov
  2020-01-30  3:35 ` Paul Walmsley
  0 siblings, 2 replies; 7+ messages in thread
From: JaeJoon Jung @ 2020-01-21  6:58 UTC (permalink / raw)
  To: Palmer Dabbelt, Paul Walmsley, Anup Patel; +Cc: linux-riscv

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


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-01-31 13:21 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
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

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).