> Am 08.11.2020 um 16:13 schrieb Zhou Yanjie <zhouyanjie@xxxxxxxxxxxxxx>: > > > On 2020/11/8 下午10:35, H. Nikolaus Schaller wrote: >>> Am 08.11.2020 um 13:46 schrieb Zhou Yanjie <zhouyanjie@xxxxxxxxxxxxxx>: >>> >>> Hello Nikolaus, >>> >>> On 2020/11/8 上午3:03, H. Nikolaus Schaller wrote: >>>>> Am 07.11.2020 um 12:52 schrieb 周琰杰 (Zhou Yanjie) <zhouyanjie@xxxxxxxxxxxxxx>: >>>>> >>>>> 1.Add OTG/OTG PHY/RNG nodes for JZ4780, CGU/OTG nodes for CI20. >>>>> 2.Add OTG/OTG PHY/RNG/OST nodes for X1000, SSI/CGU/OST/OTG/SC16IS752 >>>>> nodes for CU1000-Neo. >>>>> 3.Add OTG/OTG PHY/DTRNG/OST nodes for X1830, SSI/CGU/OST/OTG/SC16IS752 >>>>> nodes for CU1830-Neo. >>>>> >>>>> Tested-by: 周正 (Zhou Zheng) <sernia.zhou@xxxxxxxxxxx> >>>> Comments below for CI20 / jz4780 only. >>>> >>>> I tried to test on top of my v5.10 working tree but the CI20 does not boot any more. >>>> Maybe the SMP hacks are in the way and I have to remove them first or try on top >>>> of v5.9.y >>> >>> SMP is not available on the mainline now, so the previous SMP patch needs to be removed. >> I have tried with CONFIG_SMP disabled and now I can boot my v5.10-rc2 (plus local patches). >> And can confirm that the OTG port works. > > > Nice to hear it. > > >> (BTW: dm9000 defers probing forever but that is an unrelated issue). > > > On my side , it will work normally after selecting CONFIG_JZ4780_EFUSE. Seems to be related to some vcc-supply: [ 14.383309] dm9000 16000000.dm9000: Looking up vcc-supply from device tree [ 14.442598] ------------[ cut here ]------------ [ 14.442626] WARNING: CPU: 0 PID: 19 at drivers/regulator/core.c:2125 _regulator_put+0x4c/0x104 [ 14.442631] Modules linked in: ohci_platform ingenic_drm(+) gpio_keys gpio_ir_recv ohci_hcd ehci_platform dw_hdmi dwc2 roles ehci_hcd drm_kms_helper dm9000 mii rtc_pcf8563 syscopyarea sysfillrect sysimgblt fb_sys_fops drm drm_panel_orientation_quirks ipv6 autofs4 [ 14.442723] CPU: 0 PID: 19 Comm: kworker/0:1 Tainted: G W 5.10.0-rc2-letux-mips+ #3790 [ 14.442738] Workqueue: events deferred_probe_work_func [ 14.442745] Stack : 83941bd4 80165d58 00000000 80b70000 80b70000 80aaf3dc 80adad20 00000009 [ 14.442775] 0000084d 80165da4 80b6ff37 83936978 80b70000 00000001 83941b98 f6d2dfd3 [ 14.442805] 00000000 00000000 80aaf3dc 0000000c 00000114 00000002 00000001 746e6576 [ 14.442833] 65642073 00005c11 0000000f 72726566 80b70000 00000000 80590ad0 80adad20 [ 14.442862] 00000009 0000084d 00000001 80cb0000 00000000 805f6a28 0012829f 001282df [ 14.442891] ... [ 14.442901] Call Trace: [ 14.442918] [<8010912c>] show_stack+0x6c/0x12c [ 14.442933] [<801229e4>] __warn+0xd4/0x108 [ 14.442943] [<80122aa0>] warn_slowpath_fmt+0x88/0xc8 [ 14.442953] [<80590ad0>] _regulator_put+0x4c/0x104 [ 14.442961] [<80590bb0>] regulator_put+0x28/0x40 [ 14.442998] [<805dac8c>] release_nodes+0x220/0x280 [ 14.443013] [<808b1488>] really_probe+0x344/0x464 [ 14.443022] [<805d612c>] driver_probe_device+0x1d8/0x224 [ 14.443038] [<805d3efc>] bus_for_each_drv+0x90/0xc8 [ 14.443047] [<805d5e5c>] __device_attach+0xc8/0x174 [ 14.443057] [<805d4e3c>] bus_probe_device+0x3c/0xb4 [ 14.443066] [<805d53d4>] deferred_probe_work_func+0x7c/0xb4 [ 14.443078] [<8013d574>] process_one_work+0x204/0x348 [ 14.443087] [<8013e028>] worker_thread+0x28c/0x3c0 [ 14.443101] [<80143ac8>] kthread+0x14c/0x154 [ 14.443111] [<80102c0c>] ret_from_kernel_thread+0x14/0x1c [ 14.443119] [ 14.443126] ---[ end trace 76225a8e653eb480 ]--- [ 14.443379] platform 16000000.dm9000: Driver dm9000 requests probe deferral > > >>> The new SMP patch will take some time because it needs to ensure support for the new X2000 processor. >> Ok, I see. It is a little sad since it works find until 5.9 but now is broken and means we >> have to test v5.10ff with only one processor. Any hints what should be hacked to make it >> work until a final solution becomes available in upstream? > > > I can try to make a version that supports JZ4780 first, and I will send it to you when it is completed. Would be nice! > > >>> >>> Thanks and best regards! >> If you like you can add my >> >> Tested by: H. Nikolaus Schaller <hns@xxxxxxxxxxxxx> # CI20/jz4780 >> >> to this patch. > > > Sure, I will add it to the next version. > > > BTW, have you noticed the problem with the MMC of JZ4780? This was first discovered by Paul. After he told me, I also tested it. When MMC has a relatively heavy load, there will indeed be many error messages related to mmcblk, and it is often accompanied by file system damage. Yes, I have seen spurious mmcblk warnings and sometimes the CI20 did hang with heavy debootstrap load. No file system corruption so far. I thought it may be my µSD card but did not try another one. Or thought that the SMP code is not stable and I have to wait for a mainline solution... > > In addition, when doing some heavy work (such as compiling docker locally), > the following warning message will be accompanied (this problem also exists on X1830): > > [ 4361.724410] warn_alloc: 1 callbacks suppressed > [ 4361.724427] go: page allocation failure: order:5, mode:0x40cc0(GFP_KERNEL|__GFP_COMP), nodemask=(null) > [ 4361.740945] CPU: 0 PID: 6792 Comm: go Tainted: G W 5.10.0-rc1+ #3 > [ 4361.748407] Stack : 80960000 801686ec 00000000 80879d2c 00000000 00000001 00000400 801688f8 > [ 4361.756845] 00000000 00000000 00000000 810891ca 84405c54 00000001 84405be8 810891ca > [ 4361.765281] 00000000 00000000 8086054c 00000003 00000001 84405abc 00000000 00001cf1 > [ 4361.773717] bff4ffd7 2c29ee2f 84405ab4 2e352020 808f0000 80000000 00000000 80860000 > [ 4361.782153] 00000000 00000840 00000027 00000001 00000000 80441e34 017f02df 017f031f > [ 4361.790588] ... > [ 4361.793064] Call Trace: > [ 4361.795547] [<80108bd4>] show_stack+0x6c/0x12c > [ 4361.800023] [<80677974>] dump_stack+0xa0/0xd0 > [ 4361.804406] [<801f9e30>] warn_alloc+0xa8/0x130 > [ 4361.808875] [<801fa7ac>] __alloc_pages_nodemask+0x8d4/0x908 > [ 4361.814476] [<802076bc>] ____cache_alloc+0x2b4/0x600 > [ 4361.819467] [<80207de8>] __kmalloc+0x90/0x120 > [ 4361.823854] [<80296c8c>] proc_sys_call_handler+0xe4/0x230 > [ 4361.829280] [<8021901c>] vfs_read+0x12c/0x19c > [ 4361.833662] [<802192c0>] ksys_read+0x80/0xe0 > [ 4361.837960] [<80110fb8>] syscall_common+0x34/0x58 > [ 4361.842687] > [ 4361.854888] Mem-Info: > [ 4361.858734] active_anon:240 inactive_anon:11673 isolated_anon:0 > [ 4361.858734] active_file:104199 inactive_file:53064 isolated_file:0 > [ 4361.858734] unevictable:0 dirty:366 writeback:0 > [ 4361.858734] slab_reclaimable:15980 slab_unreclaimable:2599 > [ 4361.858734] mapped:9755 shmem:3251 pagetables:229 bounce:0 > [ 4361.858734] free:67531 free_pcp:71 free_cma:3073 > [ 4361.915078] Node 0 active_anon:960kB inactive_anon:46708kB active_file:416796kB inactive_file:212268kB unevictable:0kB isolated(anon):0kB isolated(file):0kB mapped:39024kB dirty:1476kB writeback:0kB shmem:13004kB writeback_tmp:0kB kernel_stack:600kB all_unreclaimable? no > [ 4361.940604] Normal free:33244kB min:1956kB low:2444kB high:2932kB reserved_highatomic:0KB active_anon:0kB inactive_anon:156kB active_file:82176kB inactive_file:47128kB unevictable:0kB writepending:1228kB present:262144kB managed:239444kB mlocked:0kB pagetables:908kB bounce:0kB free_pcp:120kB local_pcp:120kB free_cma:12300kB > [ 4361.940612] lowmem_reserve[]: 0 6144 0 > [ 4361.974937] HighMem free:236820kB min:512kB low:2116kB high:3720kB reserved_highatomic:0KB active_anon:960kB inactive_anon:46552kB active_file:334620kB inactive_file:165140kB unevictable:0kB writepending:248kB present:786432kB managed:786432kB mlocked:0kB pagetables:0kB bounce:0kB free_pcp:240kB local_pcp:240kB free_cma:0kB > [ 4361.974944] lowmem_reserve[]: 0 0 0 > [ 4362.008189] Normal: 2127*4kB (UMEC) 1508*8kB (UMEC) 472*16kB (UMEC) 96*32kB (UMC) 12*64kB (C) 4*128kB (C) 1*256kB (C) 1*512kB (C) 0*1024kB 0*2048kB 0*4096kB = 33244kB > [ 4362.024364] HighMem: 1441*4kB (UM) 5376*8kB (UM) 3637*16kB (UM) 1210*32kB (UM) 498*64kB (UM) 225*128kB (UM) 69*256kB (UM) 23*512kB (UM) 1*1024kB (M) 0*2048kB 0*4096kB = 236820kB > [ 4362.041152] 160520 total pagecache pages > [ 4362.045838] 0 pages in swap cache > [ 4362.049187] Swap cache stats: add 0, delete 0, find 0/0 > [ 4362.055501] Free swap = 0kB > [ 4362.058413] Total swap = 0kB > [ 4362.061315] 262144 pages RAM > [ 4362.065588] 196608 pages HighMem/MovableOnly > [ 4362.069889] 5675 pages reserved > [ 4362.074159] 8192 pages cma reserved > > Do you have any idea? Unfortunately no... Just some vague thoughts: maybe a lock is missing? Or cache corruption? But we should maybe open another discussion because it is beyond the scope of this patch. BR and thanks, Nikolaus > > > Thanks and best regards! > > >>> >>>>> Signed-off-by: 周琰杰 (Zhou Yanjie) <zhouyanjie@xxxxxxxxxxxxxx> >>>>> --- >>>>> arch/mips/boot/dts/ingenic/ci20.dts | 16 +++++++++ >>>>> arch/mips/boot/dts/ingenic/cu1000-neo.dts | 60 +++++++++++++++++++++++++++---- >>>>> arch/mips/boot/dts/ingenic/cu1830-neo.dts | 60 +++++++++++++++++++++++++++---- >>>>> arch/mips/boot/dts/ingenic/jz4780.dtsi | 41 +++++++++++++++++++-- >>>>> arch/mips/boot/dts/ingenic/x1000.dtsi | 52 ++++++++++++++++++++++++++- >>>>> arch/mips/boot/dts/ingenic/x1830.dtsi | 54 +++++++++++++++++++++++++++- >>>>> 6 files changed, 267 insertions(+), 16 deletions(-) >>>>> >>>>> diff --git a/arch/mips/boot/dts/ingenic/ci20.dts b/arch/mips/boot/dts/ingenic/ci20.dts >>>>> index 75f5bfbf2c37..b31054a41754 100644 >>>>> --- a/arch/mips/boot/dts/ingenic/ci20.dts >>>>> +++ b/arch/mips/boot/dts/ingenic/ci20.dts >>>>> @@ -93,6 +93,15 @@ >>>>> clock-frequency = <48000000>; >>>>> }; >>>>> >>>>> +&cgu { >>>>> + /* >>>>> + * Use the 32.768 kHz oscillator as the parent of the RTC for a higher >>>>> + * precision. >>>>> + */ >>>>> + assigned-clocks = <&cgu JZ4780_CLK_RTC>; >>>>> + assigned-clock-parents = <&cgu JZ4780_CLK_RTCLK>; >>>>> +}; >>>>> + >>>> ok >>>> >>>>> &mmc0 { >>>>> status = "okay"; >>>>> >>>>> @@ -396,6 +405,13 @@ >>>>> status = "okay"; >>>>> }; >>>>> >>>>> +&otg { >>>>> + status = "okay"; >>>>> + >>>>> + assigned-clocks = <&cgu JZ4780_CLK_OTGPHY>; >>>>> + assigned-clock-rates = <48000000>; >>>>> +}; >>>>> + >>>> ok >>>> >>>>> &pinctrl { >>>>> pins_uart0: uart0 { >>>>> function = "uart0"; >>>>> diff --git a/arch/mips/boot/dts/ingenic/cu1000-neo.dts b/arch/mips/boot/dts/ingenic/cu1000-neo.dts >>>>> index 22a1066d637b..44d47d12db12 100644 >>>>> --- a/arch/mips/boot/dts/ingenic/cu1000-neo.dts >>>>> +++ b/arch/mips/boot/dts/ingenic/cu1000-neo.dts >>>>> @@ -3,7 +3,7 @@ >>>>> >>>>> #include "x1000.dtsi" >>>>> #include <dt-bindings/gpio/gpio.h> >>>>> -#include <dt-bindings/clock/ingenic,tcu.h> >>>>> +#include <dt-bindings/clock/ingenic,sysost.h> >>>>> #include <dt-bindings/interrupt-controller/irq.h> >>>>> >>>>> / { >>>>> @@ -31,6 +31,18 @@ >>>>> }; >>>>> }; >>>>> >>>>> + ssi: spi-gpio { >>>>> + compatible = "spi-gpio"; >>>>> + #address-cells = <1>; >>>>> + #size-cells = <0>; >>>>> + num-chipselects = <1>; >>>>> + >>>>> + mosi-gpios = <&gpd 2 GPIO_ACTIVE_HIGH>; >>>>> + miso-gpios = <&gpd 3 GPIO_ACTIVE_HIGH>; >>>>> + sck-gpios = <&gpd 0 GPIO_ACTIVE_HIGH>; >>>>> + cs-gpios = <&gpd 1 GPIO_ACTIVE_HIGH>; >>>>> + }; >>>>> + >>>>> wlan_pwrseq: msc1-pwrseq { >>>>> compatible = "mmc-pwrseq-simple"; >>>>> >>>>> @@ -43,13 +55,19 @@ >>>>> clock-frequency = <24000000>; >>>>> }; >>>>> >>>>> -&tcu { >>>>> +&cgu { >>>>> + /* >>>>> + * Use the 32.768 kHz oscillator as the parent of the RTC for a higher >>>>> + * precision. >>>>> + */ >>>>> + assigned-clocks = <&cgu X1000_CLK_RTC>; >>>>> + assigned-clock-parents = <&cgu X1000_CLK_RTCLK>; >>>>> +}; >>>>> + >>>>> +&ost { >>>>> /* 1500 kHz for the system timer and clocksource */ >>>>> - assigned-clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER2>; >>>>> + assigned-clocks = <&ost OST_CLK_PERCPU_TIMER>, <&ost OST_CLK_GLOBAL_TIMER>; >>>>> assigned-clock-rates = <1500000>, <1500000>; >>>>> - >>>>> - /* Use channel #0 for the system timer channel #2 for the clocksource */ >>>>> - ingenic,pwm-channels-mask = <0xfa>; >>>>> }; >>>>> >>>>> &uart2 { >>>>> @@ -59,6 +77,32 @@ >>>>> pinctrl-0 = <&pins_uart2>; >>>>> }; >>>>> >>>>> +&ssi { >>>>> + status = "okay"; >>>>> + >>>>> + spi-max-frequency = <50000000>; >>>>> + >>>>> + sc16is752: expander@0 { >>>>> + compatible = "nxp,sc16is752"; >>>>> + reg = <0>; /* CE0 */ >>>>> + spi-max-frequency = <4000000>; >>>>> + >>>>> + clocks = <&exclk_sc16is752>; >>>>> + >>>>> + interrupt-parent = <&gpc>; >>>>> + interrupts = <6 IRQ_TYPE_EDGE_FALLING>; >>>>> + >>>>> + gpio-controller; >>>>> + #gpio-cells = <2>; >>>>> + >>>>> + exclk_sc16is752: sc16is752 { >>>>> + compatible = "fixed-clock"; >>>>> + #clock-cells = <0>; >>>>> + clock-frequency = <48000000>; >>>>> + }; >>>>> + }; >>>>> +}; >>>>> + >>>>> &i2c0 { >>>>> status = "okay"; >>>>> >>>>> @@ -135,6 +179,10 @@ >>>>> }; >>>>> }; >>>>> >>>>> +&otg { >>>>> + status = "okay"; >>>>> +}; >>>>> + >>>>> &pinctrl { >>>>> pins_uart2: uart2 { >>>>> function = "uart2"; >>>>> diff --git a/arch/mips/boot/dts/ingenic/cu1830-neo.dts b/arch/mips/boot/dts/ingenic/cu1830-neo.dts >>>>> index 640f96c00d63..7a56e344e429 100644 >>>>> --- a/arch/mips/boot/dts/ingenic/cu1830-neo.dts >>>>> +++ b/arch/mips/boot/dts/ingenic/cu1830-neo.dts >>>>> @@ -3,7 +3,7 @@ >>>>> >>>>> #include "x1830.dtsi" >>>>> #include <dt-bindings/gpio/gpio.h> >>>>> -#include <dt-bindings/clock/ingenic,tcu.h> >>>>> +#include <dt-bindings/clock/ingenic,sysost.h> >>>>> #include <dt-bindings/interrupt-controller/irq.h> >>>>> >>>>> / { >>>>> @@ -31,6 +31,18 @@ >>>>> }; >>>>> }; >>>>> >>>>> + ssi0: spi-gpio { >>>>> + compatible = "spi-gpio"; >>>>> + #address-cells = <1>; >>>>> + #size-cells = <0>; >>>>> + num-chipselects = <1>; >>>>> + >>>>> + mosi-gpios = <&gpc 12 GPIO_ACTIVE_HIGH>; >>>>> + miso-gpios = <&gpc 11 GPIO_ACTIVE_HIGH>; >>>>> + sck-gpios = <&gpc 15 GPIO_ACTIVE_HIGH>; >>>>> + cs-gpios = <&gpc 16 GPIO_ACTIVE_HIGH>; >>>>> + }; >>>>> + >>>>> wlan_pwrseq: msc1-pwrseq { >>>>> compatible = "mmc-pwrseq-simple"; >>>>> >>>>> @@ -43,13 +55,19 @@ >>>>> clock-frequency = <24000000>; >>>>> }; >>>>> >>>>> -&tcu { >>>>> +&cgu { >>>>> + /* >>>>> + * Use the 32.768 kHz oscillator as the parent of the RTC for a higher >>>>> + * precision. >>>>> + */ >>>>> + assigned-clocks = <&cgu X1830_CLK_RTC>; >>>>> + assigned-clock-parents = <&cgu X1830_CLK_RTCLK>; >>>>> +}; >>>>> + >>>>> +&ost { >>>>> /* 1500 kHz for the system timer and clocksource */ >>>>> - assigned-clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER2>; >>>>> + assigned-clocks = <&ost OST_CLK_PERCPU_TIMER>, <&ost OST_CLK_GLOBAL_TIMER>; >>>>> assigned-clock-rates = <1500000>, <1500000>; >>>>> - >>>>> - /* Use channel #0 for the system timer channel #2 for the clocksource */ >>>>> - ingenic,pwm-channels-mask = <0xfa>; >>>>> }; >>>>> >>>>> &uart1 { >>>>> @@ -59,6 +77,32 @@ >>>>> pinctrl-0 = <&pins_uart1>; >>>>> }; >>>>> >>>>> +&ssi0 { >>>>> + status = "okay"; >>>>> + >>>>> + spi-max-frequency = <50000000>; >>>>> + >>>>> + sc16is752: expander@0 { >>>>> + compatible = "nxp,sc16is752"; >>>>> + reg = <0>; /* CE0 */ >>>>> + spi-max-frequency = <4000000>; >>>>> + >>>>> + clocks = <&exclk_sc16is752>; >>>>> + >>>>> + interrupt-parent = <&gpb>; >>>>> + interrupts = <18 IRQ_TYPE_EDGE_FALLING>; >>>>> + >>>>> + gpio-controller; >>>>> + #gpio-cells = <2>; >>>>> + >>>>> + exclk_sc16is752: sc16is752 { >>>>> + compatible = "fixed-clock"; >>>>> + #clock-cells = <0>; >>>>> + clock-frequency = <48000000>; >>>>> + }; >>>>> + }; >>>>> +}; >>>>> + >>>>> &i2c0 { >>>>> status = "okay"; >>>>> >>>>> @@ -135,6 +179,10 @@ >>>>> }; >>>>> }; >>>>> >>>>> +&otg { >>>>> + status = "okay"; >>>>> +}; >>>>> + >>>>> &pinctrl { >>>>> pins_uart1: uart1 { >>>>> function = "uart1"; >>>>> diff --git a/arch/mips/boot/dts/ingenic/jz4780.dtsi b/arch/mips/boot/dts/ingenic/jz4780.dtsi >>>>> index dfb5a7e1bb21..8837147e5a84 100644 >>>>> --- a/arch/mips/boot/dts/ingenic/jz4780.dtsi >>>>> +++ b/arch/mips/boot/dts/ingenic/jz4780.dtsi >>>>> @@ -61,13 +61,30 @@ >>>>> }; >>>>> >>>>> cgu: jz4780-cgu@10000000 { >>>>> - compatible = "ingenic,jz4780-cgu"; >>>>> + compatible = "ingenic,jz4780-cgu", "simple-mfd"; >>>>> reg = <0x10000000 0x100>; >>>>> + #address-cells = <1>; >>>>> + #size-cells = <1>; >>>>> + ranges = <0x0 0x10000000 0x100>; >>>>> + >>>>> + #clock-cells = <1>; >>>>> >>>>> clocks = <&ext>, <&rtc>; >>>>> clock-names = "ext", "rtc"; >>>>> >>>>> - #clock-cells = <1>; >>>>> + otg_phy: usb-phy@3c { >>>>> + compatible = "ingenic,jz4780-phy"; >>>>> + reg = <0x3c 0x10>; >>>>> + >>>>> + clocks = <&cgu JZ4780_CLK_OTG1>; >>>>> + >>>>> + #phy-cells = <0>; >>>>> + }; >>>>> + >>>>> + rng: rng@d8 { >>>>> + compatible = "ingenic,jz4780-rng"; >>>>> + reg = <0xd8 0x8>; >>>>> + }; >>>>> }; >>>>> >>>>> tcu: timer@10002000 { >>>>> @@ -494,4 +511,24 @@ >>>>> >>>>> status = "disabled"; >>>>> }; >>>>> + >>>>> + otg: usb@13500000 { >>>>> + compatible = "ingenic,jz4780-otg", "snps,dwc2"; >>>>> + reg = <0x13500000 0x40000>; >>>>> + >>>>> + interrupt-parent = <&intc>; >>>>> + interrupts = <21>; >>>>> + >>>>> + clocks = <&cgu JZ4780_CLK_UHC>; >>>>> + clock-names = "otg"; >>>>> + >>>>> + phys = <&otg_phy>; >>>>> + phy-names = "usb2-phy"; >>>>> + >>>>> + g-rx-fifo-size = <768>; >>>> I had tested with 256 before and do not see a reason why 768 should not work as well. >>>> >>>>> + g-np-tx-fifo-size = <256>; >>>>> + g-tx-fifo-size = <256 256 256 256 256 256 256 512>; >>>>> + >>>>> + status = "disabled"; >>>>> + }; >>>>> }; >>>>> diff --git a/arch/mips/boot/dts/ingenic/x1000.dtsi b/arch/mips/boot/dts/ingenic/x1000.dtsi >>>>> index 1f1f896dd1f7..854fac58f45e 100644 >>>>> --- a/arch/mips/boot/dts/ingenic/x1000.dtsi >>>>> +++ b/arch/mips/boot/dts/ingenic/x1000.dtsi >>>>> @@ -52,13 +52,43 @@ >>>>> }; >>>>> >>>>> cgu: x1000-cgu@10000000 { >>>>> - compatible = "ingenic,x1000-cgu"; >>>>> + compatible = "ingenic,x1000-cgu", "simple-mfd"; >>>>> reg = <0x10000000 0x100>; >>>>> + #address-cells = <1>; >>>>> + #size-cells = <1>; >>>>> + ranges = <0x0 0x10000000 0x100>; >>>>> >>>>> #clock-cells = <1>; >>>>> >>>>> clocks = <&exclk>, <&rtclk>; >>>>> clock-names = "ext", "rtc"; >>>>> + >>>>> + otg_phy: usb-phy@3c { >>>>> + compatible = "ingenic,x1000-phy"; >>>>> + reg = <0x3c 0x10>; >>>>> + >>>>> + clocks = <&cgu X1000_CLK_OTGPHY>; >>>>> + >>>>> + #phy-cells = <0>; >>>>> + }; >>>>> + >>>>> + rng: rng@d8 { >>>>> + compatible = "ingenic,x1000-rng"; >>>>> + reg = <0xd8 0x8>; >>>>> + }; >>>>> + }; >>>>> + >>>>> + ost: timer@12000000 { >>>>> + compatible = "ingenic,x1000-ost"; >>>>> + reg = <0x12000000 0x3c>; >>>>> + >>>>> + #clock-cells = <1>; >>>>> + >>>>> + clocks = <&cgu X1000_CLK_OST>; >>>>> + clock-names = "ost"; >>>>> + >>>>> + interrupt-parent = <&cpuintc>; >>>>> + interrupts = <3>; >>>>> }; >>>>> >>>>> tcu: timer@10002000 { >>>>> @@ -323,4 +353,24 @@ >>>>> status = "disabled"; >>>>> }; >>>>> }; >>>>> + >>>>> + otg: usb@13500000 { >>>>> + compatible = "ingenic,x1000-otg", "snps,dwc2"; >>>>> + reg = <0x13500000 0x40000>; >>>>> + >>>>> + interrupt-parent = <&intc>; >>>>> + interrupts = <21>; >>>>> + >>>>> + clocks = <&cgu X1000_CLK_OTG>; >>>>> + clock-names = "otg"; >>>>> + >>>>> + phys = <&otg_phy>; >>>>> + phy-names = "usb2-phy"; >>>>> + >>>>> + g-rx-fifo-size = <768>; >>>>> + g-np-tx-fifo-size = <256>; >>>>> + g-tx-fifo-size = <256 256 256 256 256 256 256 512>; >>>>> + >>>>> + status = "disabled"; >>>>> + }; >>>>> }; >>>>> diff --git a/arch/mips/boot/dts/ingenic/x1830.dtsi b/arch/mips/boot/dts/ingenic/x1830.dtsi >>>>> index b05dac3ae308..4831350efdf2 100644 >>>>> --- a/arch/mips/boot/dts/ingenic/x1830.dtsi >>>>> +++ b/arch/mips/boot/dts/ingenic/x1830.dtsi >>>>> @@ -52,13 +52,38 @@ >>>>> }; >>>>> >>>>> cgu: x1830-cgu@10000000 { >>>>> - compatible = "ingenic,x1830-cgu"; >>>>> + compatible = "ingenic,x1830-cgu", "simple-mfd"; >>>>> reg = <0x10000000 0x100>; >>>>> + #address-cells = <1>; >>>>> + #size-cells = <1>; >>>>> + ranges = <0x0 0x10000000 0x100>; >>>>> >>>>> #clock-cells = <1>; >>>>> >>>>> clocks = <&exclk>, <&rtclk>; >>>>> clock-names = "ext", "rtc"; >>>>> + >>>>> + otg_phy: usb-phy@3c { >>>>> + compatible = "ingenic,x1830-phy"; >>>>> + reg = <0x3c 0x10>; >>>>> + >>>>> + clocks = <&cgu X1830_CLK_OTGPHY>; >>>>> + >>>>> + #phy-cells = <0>; >>>>> + }; >>>>> + }; >>>>> + >>>>> + ost: timer@12000000 { >>>>> + compatible = "ingenic,x1830-ost", "ingenic,x1000-ost"; >>>>> + reg = <0x12000000 0x3c>; >>>>> + >>>>> + #clock-cells = <1>; >>>>> + >>>>> + clocks = <&cgu X1830_CLK_OST>; >>>>> + clock-names = "ost"; >>>>> + >>>>> + interrupt-parent = <&cpuintc>; >>>>> + interrupts = <4>; >>>>> }; >>>>> >>>>> tcu: timer@10002000 { >>>>> @@ -236,6 +261,13 @@ >>>>> status = "disabled"; >>>>> }; >>>>> >>>>> + dtrng: trng@10072000 { >>>>> + compatible = "ingenic,x1830-dtrng"; >>>>> + reg = <0x10072000 0xc>; >>>>> + >>>>> + clocks = <&cgu X1830_CLK_DTRNG>; >>>>> + }; >>>>> + >>>>> pdma: dma-controller@13420000 { >>>>> compatible = "ingenic,x1830-dma"; >>>>> reg = <0x13420000 0x400 >>>>> @@ -311,4 +343,24 @@ >>>>> status = "disabled"; >>>>> }; >>>>> }; >>>>> + >>>>> + otg: usb@13500000 { >>>>> + compatible = "ingenic,x1830-otg", "snps,dwc2"; >>>>> + reg = <0x13500000 0x40000>; >>>>> + >>>>> + interrupt-parent = <&intc>; >>>>> + interrupts = <21>; >>>>> + >>>>> + clocks = <&cgu X1830_CLK_OTG>; >>>>> + clock-names = "otg"; >>>>> + >>>>> + phys = <&otg_phy>; >>>>> + phy-names = "usb2-phy"; >>>>> + >>>>> + g-rx-fifo-size = <768>; >>>>> + g-np-tx-fifo-size = <256>; >>>>> + g-tx-fifo-size = <256 256 256 256 256 256 256 512>; >>>>> + >>>>> + status = "disabled"; >>>>> + }; >>>>> }; >>>>> -- >>>>> 2.11.0 >>>>>