[Letux-kernel] X1600 upstreaming efforts

H. Nikolaus Schaller hns at goldelico.com
Mon Apr 21 09:35:02 CEST 2025


Here is an updated (i.e. partially fixed and rebased version) and the results commented:

https://git.goldelico.com/?p=letux-kernel.git;a=shortlog;h=refs/heads/work-lx16-dtbc

> 
> 
> make V=2 CONFIG_DEBUG_SECTION_MISMATCH=y letux_lx16_defconfig dtbs_check | fgrep lx16
> 
  DTC [C] arch/mips/boot/dts/ingenic/lx16.dtb - due to target missing
arch/mips/boot/dts/ingenic/lx16.dtb: /: failed to match any schema with compatible: ['goldelico,letux-x16', 'ingenic,halley6_v10', 'ingenic,x1600']
arch/mips/boot/dts/ingenic/lx16.dtb: /: failed to match any schema with compatible: ['goldelico,letux-x16', 'ingenic,halley6_v10', 'ingenic,x1600']
arch/mips/boot/dts/ingenic/lx16.dtb: /: failed to match any schema with compatible: ['goldelico,letux-x16', 'ingenic,halley6_v10', 'ingenic,x1600']
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: / (goldelico,letux-x16): memory: False schema does not allow {'device_type': ['memory'], 'reg': [[0, 33554432]]}
arch/mips/boot/dts/ingenic/lx16.dtb: /cpus/cpu at 0: failed to match any schema with compatible: ['ingenic,xburst']

^^^ there is no schema for board files...

arch/mips/boot/dts/ingenic/lx16.dtb: /cpufreq-dt: failed to match any schema with compatible: ['ingenic,x1600-cpufreq']

^^^ there seems to be no schema

/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: interrupt-controller at 10001000 (ingenic,x1600-intc): 'interrupt-names' does not match any of the regexes: 'pinctrl-[0-9]+'

^^^ this is something I do not understand

/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: timer at 12000000 (ingenic,x1000-ost): '#interrupt-cells', 'interrupt-controller' do not match any of the regexes: 'pinctrl-[0-9]+'

^^^ same here but different reason

/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: clock-controller at 10000000 (ingenic,x1600-cgu): 'little-endian' does not match any of the regexes: '^mac-phy-ctrl@[a-f0-9]+$', '^usb-phy@[a-f0-9]+$', 'pinctrl-[0-9]+'

^^^ what is this property good for? It is not checked in the driver. Only in regmap code. No other ingenic SoC does define it

/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: clock-controller at 10000000 (ingenic,x1600-cgu): clock-names: ['ext', 'rtc', 'clk12m'] is too long
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: clock-controller at 10000000 (ingenic,x1600-cgu): clocks: [[3], [4], [5]] is too long

^^^ well, we have more clocks as defined by the schema

arch/mips/boot/dts/ingenic/lx16.dtb: /apb/sadc at 10070000: failed to match any schema with compatible: ['ingenic,x1600-sadc']

^^^ seems to be no schema

arch/mips/boot/dts/ingenic/lx16.dtb: /apb/timer at 10002000: failed to match any schema with compatible: ['ingenic,x1600-tcu', 'simple-mfd']

^^^ we have to update the schema

arch/mips/boot/dts/ingenic/lx16.dtb: /apb/timer at 10002000/watchdog at 0: failed to match any schema with compatible: ['ingenic,x1600-watchdog', 'ingenic,jz4780-watchdog']

^^^ well, there is ingenic,jz4780-watchdog but it is itself derived from some other ingenic SoC. Maybe we have to use jz4760-watchdog and add a compatible entry to the schema

/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: rtc at 10003000 (ingenic,x1600-rtc): clock-names: ['rtc', 'ext', 'pclk'] is too long
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: rtc at 10003000 (ingenic,x1600-rtc): clocks: [[1, 1], [1, 0], [1, 13]] is too long
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: rtc at 10003000 (ingenic,x1600-rtc): Unevaluated properties are not allowed ('clock-names', 'clocks', 'power-on-press-ms' were unexpected)

^^^ we have more clocks...

/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: pinctrl at 10010000 (ingenic,x1600-pinctrl): ingenic,num-chips: 'anyOf' conditional failed, one must be fixed:
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: pinctrl at 10010000 (ingenic,x1600-pinctrl): ingenic,regs-offset: 'anyOf' conditional failed, one must be fixed:
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: pinctrl at 10010000 (ingenic,x1600-pinctrl): fixme: 'anyOf' conditional failed, one must be fixed:

^^^ that is something I do not understand

/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: serial at 10030000 (ingenic,x1600-uart): dma-names:0: 'rx' was expected
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: serial at 10030000 (ingenic,x1600-uart): dma-names:1: 'tx' was expected
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: serial at 10030000 (ingenic,x1600-uart): Unevaluated properties are not allowed ('dma-names' was unexpected)
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: serial at 10030000 (ingenic,x1600-uart): 'pinctrl-0' is a dependency of 'pinctrl-names'
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: serial at 10031000 (ingenic,x1600-uart): dma-names:0: 'rx' was expected
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: serial at 10031000 (ingenic,x1600-uart): dma-names:1: 'tx' was expected
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: serial at 10031000 (ingenic,x1600-uart): Unevaluated properties are not allowed ('dma-names' was unexpected)
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: serial at 10032000 (ingenic,x1600-uart): dma-names:0: 'rx' was expected
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: serial at 10032000 (ingenic,x1600-uart): dma-names:1: 'tx' was expected
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: serial at 10032000 (ingenic,x1600-uart): Unevaluated properties are not allowed ('dma-names' was unexpected)
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: serial at 10033000 (ingenic,x1600-uart): dma-names:0: 'rx' was expected
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: serial at 10033000 (ingenic,x1600-uart): dma-names:1: 'tx' was expected
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: serial at 10033000 (ingenic,x1600-uart): Unevaluated properties are not allowed ('dma-names' was unexpected)

^^^ well, the schema defines the order of rx and tx to be swapped - maybe we have to swap and then the UARTs will work better (I remember that we have to enable them all or we can't boot). But we have to check if the driver expects a specific index.
Another observation is that none of the other ingenic SoCs defines DMA for the UARTs.

/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: serial at 10033000 (ingenic,x1600-uart): 'pinctrl-0' is a dependency of 'pinctrl-names'

^^^ I do not understand...

/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: spi at 10043000 (ingenic,x1600-spi): dma-names:0: 'rx' was expected
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: spi at 10043000 (ingenic,x1600-spi): dma-names:1: 'tx' was expected
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: spi at 10043000 (ingenic,x1600-spi): Unevaluated properties are not allowed ('dma-names' was unexpected)

^^^ same

arch/mips/boot/dts/ingenic/lx16.dtb: /apb/slv at 10045000: failed to match any schema with compatible: ['ingenic,slv']
arch/mips/boot/dts/ingenic/lx16.dtb: /apb/dtrng at 10072000: failed to match any schema with compatible: ['ingenic,dtrng']

^^^ there is no schema

/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: usb-phy at 10007800 (ingenic,x1600-phy): 'reg' does not match any of the regexes: 'pinctrl-[0-9]+'

^^^ this is strange

/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: usb-phy at 10007800 (ingenic,x1600-phy): 'vcc-supply' is a required property

^^^ mandated by the schema - but we do not have it. We have to check what the driver is doing with this entry. Maybe, providing the system vcc regulator or a dummy regulator is sufficient.

/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: aic at 10079000 (ingenic,x1600-i2s): $nodename:0: 'aic at 10079000' does not match '^audio-controller@'
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: aic at 10079000 (ingenic,x1600-i2s): clock-names:1: 'i2s' was expected
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: aic at 10079000 (ingenic,x1600-i2s): clock-names: ['aic', 'rx', 'tx'] is too long
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: aic at 10079000 (ingenic,x1600-i2s): clocks: [[1, 30], [1, 38], [1, 39]] is too long
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: aic at 10079000 (ingenic,x1600-i2s): dma-names:0: 'rx' was expected
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: aic at 10079000 (ingenic,x1600-i2s): dma-names:1: 'tx' was expected

^^^ same rx/tx sequence as with UART

/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: ahb2 (simple-bus): $nodename:0: 'ahb2' does not match '^([a-z][a-z0-9\\-]+-bus|bus|localbus|soc|axi|ahb|apb)(@.+)?$'

^^^ looks as if we must use second-ahb or something - but why is ahb0 and ahb1 accepted?

arch/mips/boot/dts/ingenic/lx16.dtb: /ahb2/mmc at 13460000/wlan at 0: failed to match any schema with compatible: ['espressif,esp_sdio']

^^^ to be expected...

arch/mips/boot/dts/ingenic/lx16.dtb: /ahb2/can at 13560000: failed to match any schema with compatible: ['ingenic,x1600-can']
arch/mips/boot/dts/ingenic/lx16.dtb: /ahb2/can at 13570000: failed to match any schema with compatible: ['ingenic,x1600-can']
arch/mips/boot/dts/ingenic/lx16.dtb: /ahb2/cdbus at 13430000: failed to match any schema with compatible: ['ingenic,x1600-cdbus']
arch/mips/boot/dts/ingenic/lx16.dtb: /ahb2/aes at 13430000: failed to match any schema with compatible: ['ingenic,aes']
arch/mips/boot/dts/ingenic/lx16.dtb: /ahb2/hash at 13470000: failed to match any schema with compatible: ['ingenic,hash']

^^^ no schemas

/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: mac at 134b0000 (ingenic,x1600-mac): 'ingenic,mac-mode', 'ingenic,mode-reg', 'ingenic,phy-clk-freq', 'ingenic,pwr-gpio', 'ingenic,rst-gpio', 'ingenic,rst-ms' do not match any of the regexes: 'pinctrl-[0-9]+'

^^^ ok, this is not worked out at all and we are missing these properties

arch/mips/boot/dts/ingenic/lx16.dtb: /ahb2/sfc at 13440000: failed to match any schema with compatible: ['ingenic,x1600-sfc']

^^^ no schemas

/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: dma-controller at 13420000 (ingenic,jz4780-dma): interrupts: [[3], [4]] is too long
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: dma-controller at 13420000 (ingenic,jz4780-dma): Unevaluated properties are not allowed ('interrupts' was unexpected)

^^^ we have two interrupts for the DMA while the ingenic,jz4780-dma allows only one. Maybe this is a reason why we have SPI DMA issues?

arch/mips/boot/dts/ingenic/lx16.dtb: /ahb2/mcu at 13420000: failed to match any schema with compatible: ['ingenic,x1600-mcu']

^^^ missing schema

/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: usb at 13500000 (ingenic,x1600-otg): Unevaluated properties are not allowed ('device-using-dma', 'g-use-dma' were unexpected)

^^^ seems to be an error message with inverted meaning: we have not defined 'device-using-dma' or 'g-use-dma' so they are missing and not unexpected

arch/mips/boot/dts/ingenic/lx16.dtb: /ahb2/efuse at 13540000: failed to match any schema with compatible: ['ingenic,x1600-efuse']

^^^ no schema

/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: ahb1 (simple-bus): $nodename:0: 'ahb1' does not match '^([a-z][a-z0-9\\-]+-bus|bus|localbus|soc|axi|ahb|apb)(@.+)?$'
/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: ahb0 (simple-bus): $nodename:0: 'ahb0' does not match '^([a-z][a-z0-9\\-]+-bus|bus|localbus|soc|axi|ahb|apb)(@.+)?$'

^^^ ok, here are the missing ahb warnings - should we use an ahb at 0 ahb at 1 ahb at 2 pattern? Or does that then mismatch with address translation? But if I understand the pattern correctly, we have to add some prefix anyways.

arch/mips/boot/dts/ingenic/lx16.dtb: /ahb0/cim at 13060000: failed to match any schema with compatible: ['ingenic,x1600-cim']
arch/mips/boot/dts/ingenic/lx16.dtb: /ahb0/dpu at 13050000: failed to match any schema with compatible: ['ingenic,x1600-dpu']

^^^ no schema

/Volumes/CaseSensitive/master/arch/mips/boot/dts/ingenic/lx16.dtb: aliases: 'spi_slv0' does not match any of the regexes: '^[a-z][a-z0-9\\-]*$', 'pinctrl-[0-9]+'

^^^ ok, this is an invalid underscore in the alias property. Easily fixed.

In total there are
- some easily fixed,
- some where the schema needs modifications, and
- some where there is no or no reuseable schema, and
- some difficult to understand.

In total a manageable task. We need this fixed before we can upstream the x1600.dtsi...

BR,
Nikolaus




More information about the Letux-kernel mailing list