Hi Andreas, On Tue, Mar 19, 2019 at 11:56 AM Yash Shah <yash.shah@xxxxxxxxxx> wrote: > > On Mon, Mar 18, 2019 at 10:56 PM Andreas Schwab <schwab@xxxxxxx> wrote: > > > > On Mär 15 2019, Yash Shah <yash.shah@xxxxxxxxxx> wrote: > > > > > You need to make sure the period setting is passed via the > > > conventional way in DT file. > > > Example: > > > pwmleds { > > > compatible = "pwm-leds"; > > > heartbeat { > > > pwms = <&L45 0 10000000 0>; > > > max-brightness = <255>; > > > linux,default-trigger = "heartbeat"; > > > }; > > > }; > > > > I've now managed to build a working FSBL with that change, but that > > didn't change anything. There is not even a heartbeat option in > > /sys/class/leds/heartbeat/trigger any more. > ... > > The above works for me. > I just noticed that I have been using pwm-cells = 2, instead of 3. > Maybe that is the problem here. > I will suggest you test it on v11 patch in which I will fix this > pwm-cells issue. I have sent out the v11 patchset, you can test the heartbeat application with that patchset. You still need to make that DT file modification which you previously did, using fsbl.bin Just for your reference, I am copying my DT file and kernel config which I used for my test. The same is available at dev/yashs/pwm_5.0-rc1 branch of https://github.com/yashshah7/riscv-linux.git /dts-v1/; /*#include <linux/clk/sifive-fu540-prci.h>*/ #define PRCI_CLK_TLCLK 3 / { #address-cells = <2>; #size-cells = <2>; compatible = "sifive,fu540-c000"; aliases { serial0 = &uart0; serial1 = &uart1; }; chosen { }; cpus { #address-cells = <1>; #size-cells = <0>; timebase-frequency = <1000000>; cpu0: cpu@0 { clock-frequency = <0>; compatible = "sifive,u51", "sifive,rocket0", "riscv"; device_type = "cpu"; i-cache-block-size = <64>; i-cache-sets = <128>; i-cache-size = <16384>; reg = <0>; riscv,isa = "rv64imac"; status = "okay"; cpu0_intc: interrupt-controller { #interrupt-cells = <1>; compatible = "riscv,cpu-intc"; interrupt-controller; }; }; cpu1: cpu@1 { clock-frequency = <0>; compatible = "sifive,u54-mc", "sifive,rocket0", "riscv"; d-cache-block-size = <64>; d-cache-sets = <64>; d-cache-size = <32768>; d-tlb-sets = <1>; d-tlb-size = <32>; device_type = "cpu"; i-cache-block-size = <64>; i-cache-sets = <64>; i-cache-size = <32768>; i-tlb-sets = <1>; i-tlb-size = <32>; mmu-type = "riscv,sv39"; reg = <1>; riscv,isa = "rv64imafdc"; status = "okay"; tlb-split; cpu1_intc: interrupt-controller { #interrupt-cells = <1>; compatible = "riscv,cpu-intc"; interrupt-controller; }; }; cpu2: cpu@2 { clock-frequency = <0>; compatible = "sifive,u54-mc", "sifive,rocket0", "riscv"; d-cache-block-size = <64>; d-cache-sets = <64>; d-cache-size = <32768>; d-tlb-sets = <1>; d-tlb-size = <32>; device_type = "cpu"; i-cache-block-size = <64>; i-cache-sets = <64>; i-cache-size = <32768>; i-tlb-sets = <1>; i-tlb-size = <32>; mmu-type = "riscv,sv39"; reg = <2>; riscv,isa = "rv64imafdc"; status = "okay"; tlb-split; cpu2_intc: interrupt-controller { #interrupt-cells = <1>; compatible = "riscv,cpu-intc"; interrupt-controller; }; }; cpu3: cpu@3 { clock-frequency = <0>; compatible = "sifive,u54-mc", "sifive,rocket0", "riscv"; d-cache-block-size = <64>; d-cache-sets = <64>; d-cache-size = <32768>; d-tlb-sets = <1>; d-tlb-size = <32>; device_type = "cpu"; i-cache-block-size = <64>; i-cache-sets = <64>; i-cache-size = <32768>; i-tlb-sets = <1>; i-tlb-size = <32>; mmu-type = "riscv,sv39"; reg = <3>; riscv,isa = "rv64imafdc"; status = "okay"; tlb-split; cpu3_intc: interrupt-controller { #interrupt-cells = <1>; compatible = "riscv,cpu-intc"; interrupt-controller; }; }; cpu4: cpu@4 { clock-frequency = <0>; compatible = "sifive,u54-mc", "sifive,rocket0", "riscv"; d-cache-block-size = <64>; d-cache-sets = <64>; d-cache-size = <32768>; d-tlb-sets = <1>; d-tlb-size = <32>; device_type = "cpu"; i-cache-block-size = <64>; i-cache-sets = <64>; i-cache-size = <32768>; i-tlb-sets = <1>; i-tlb-size = <32>; mmu-type = "riscv,sv39"; reg = <4>; riscv,isa = "rv64imafdc"; status = "okay"; tlb-split; cpu4_intc: interrupt-controller { #interrupt-cells = <1>; compatible = "riscv,cpu-intc"; interrupt-controller; }; }; }; soc { #address-cells = <2>; #size-cells = <2>; compatible = "sifive,fu540-soc", "simple-bus"; ranges; prci: prci@10000000 { compatible = "sifive,fu540-c000-prci"; reg = <0x0 0x10000000 0x0 0x1000>; clocks = <&hfclk>, <&rtcclk>; #clock-cells = <1>; }; uart0: serial@10010000 { compatible = "sifive,fu540-c000-uart", "sifive,uart0"; interrupt-parent = <&plic0>; interrupts = <4>; reg = <0x0 0x10010000 0x0 0x1000>; clocks = <&prci PRCI_CLK_TLCLK>; }; uart1: serial@10011000 { compatible = "sifive,fu540-c000-uart", "sifive,uart0"; interrupt-parent = <&plic0>; interrupts = <5>; reg = <0x0 0x10011000 0x0 0x1000>; clocks = <&prci PRCI_CLK_TLCLK>; }; L5: clint@2000000 { compatible = "riscv,clint0"; interrupts-extended = < &cpu0_intc 3 &cpu0_intc 7 &cpu1_intc 3 &cpu1_intc 7 &cpu2_intc 3 &cpu2_intc 7 &cpu3_intc 3 &cpu3_intc 7 &cpu4_intc 3 &cpu4_intc 7>; reg = <0x0 0x2000000 0x0 0x10000>; }; plic0: interrupt-controller@c000000 { #interrupt-cells = <1>; compatible = "riscv,plic0"; interrupt-controller; interrupts-extended = < &cpu0_intc 11 &cpu1_intc 11 &cpu1_intc 9 &cpu2_intc 11 &cpu2_intc 9 &cpu3_intc 11 &cpu3_intc 9 &cpu4_intc 11 &cpu4_intc 9>; reg = <0x0 0xc000000 0x0 0x4000000>; riscv,ndev = <53>; }; L45: pwm@10020000 { compatible = "sifive,pwm0"; interrupt-parent = <&plic0>; interrupts = <42 43 44 45>; reg = <0x0 0x10020000 0x0 0x1000>; reg-names = "control"; clocks = <&prci 3>; #pwm-cells = <3>; }; L46: pwm@10021000 { compatible = "sifive,pwm0"; interrupt-parent = <&plic0>; interrupts = <46 47 48 49>; reg = <0x0 0x10021000 0x0 0x1000>; reg-names = "control"; clocks = <&prci 3>; #pwm-cells = <3>; }; pwmleds { compatible = "pwm-leds"; heartbeat { pwms = <&L45 0 100000 0>; max-brightness = <255>; linux,default-trigger = "heartbeat"; }; mtd { pwms = <&L45 1 100000 0>; max-brightness = <255>; linux,default-trigger = "mtd"; }; netdev { pwms = <&L45 2 100000 0>; max-brightness = <255>; linux,default-trigger = "netdev"; }; panic { pwms = <&L45 3 100000 0>; max-brightness = <255>; linux,default-trigger = "panic"; }; }; }; }; kernel config: CONFIG_SYSVIPC=y CONFIG_POSIX_MQUEUE=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_CGROUPS=y CONFIG_CGROUP_SCHED=y CONFIG_CFS_BANDWIDTH=y CONFIG_CGROUP_BPF=y CONFIG_NAMESPACES=y CONFIG_USER_NS=y CONFIG_CHECKPOINT_RESTORE=y CONFIG_BLK_DEV_INITRD=y CONFIG_EXPERT=y CONFIG_BPF_SYSCALL=y CONFIG_SMP=y CONFIG_PCI=y CONFIG_PCIE_XILINX=y CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_NET=y CONFIG_PACKET=y CONFIG_UNIX=y CONFIG_INET=y CONFIG_IP_MULTICAST=y CONFIG_IP_ADVANCED_ROUTER=y CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y CONFIG_IP_PNP_BOOTP=y CONFIG_IP_PNP_RARP=y CONFIG_NETLINK_DIAG=y CONFIG_DEVTMPFS=y CONFIG_BLK_DEV_LOOP=y CONFIG_VIRTIO_BLK=y CONFIG_BLK_DEV_SD=y CONFIG_BLK_DEV_SR=y CONFIG_ATA=y CONFIG_SATA_AHCI=y CONFIG_SATA_AHCI_PLATFORM=y CONFIG_NETDEVICES=y CONFIG_VIRTIO_NET=y CONFIG_MACB=y CONFIG_E1000E=y CONFIG_R8169=y CONFIG_MICROSEMI_PHY=y CONFIG_INPUT_MOUSEDEV=y CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_OF_PLATFORM=y CONFIG_SERIAL_EARLYCON_RISCV_SBI=y CONFIG_SERIAL_SIFIVE=y CONFIG_SERIAL_SIFIVE_CONSOLE=y CONFIG_HVC_RISCV_SBI=y # CONFIG_PTP_1588_CLOCK is not set CONFIG_DRM=y CONFIG_DRM_RADEON=y CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_USB=y CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_PLATFORM=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_HCD_PLATFORM=y CONFIG_USB_OHCI_HCD=y CONFIG_USB_OHCI_HCD_PLATFORM=y CONFIG_USB_STORAGE=y CONFIG_USB_UAS=y CONFIG_VIRTIO_MMIO=y CONFIG_SIFIVE_PLIC=y CONFIG_RAS=y CONFIG_EXT4_FS=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_AUTOFS4_FS=y CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y CONFIG_NFS_FS=y CONFIG_NFS_V4=y CONFIG_NFS_V4_1=y CONFIG_NFS_V4_2=y CONFIG_ROOT_NFS=y CONFIG_CRYPTO_USER_API_HASH=y CONFIG_PRINTK_TIME=y # CONFIG_RCU_TRACE is not set CONFIG_CMDLINE_BOOL=y CONFIG_CMDLINE="console=ttySIF0,115200 ignore_loglevel debug" CONFIG_CLK_SIFIVE=y CONFIG_CLK_SIFIVE_FU540_PRCI=y - Yash > > > > Andreas. > > > > -- > > Andreas Schwab, SUSE Labs, schwab@xxxxxxx > > GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 > > "And now for something completely different."