Hello Juan, ----- Original Message ----- From: Juan García Pastor [mailto:jgp@xxxxxxxxxxxxx] To: 'Maarten Brock' [mailto:m.brock@xxxxxxxxxxxxx] Cc: linux-serial@xxxxxxxxxxxxxxx Sent: Mon, 02 May 2016 00:23:14 +0200 Subject: RE: Raspberry compute module does not find ttySC0 and ttySC1 with SC16IS752 > Dear Maarten, > > According to you last answer I have changed in config.txt: > dtparam=i2c_arm=on > > In addition to: > # Debug active > dtdebug=1 > # Additional overlays and parameters are documented /boot/overlays/README > dtoverlay=sc16is752-i2c,clkrate=100000,irqpin=22 > > I have changed interrupt configuration to <&gpio>. The > sc16is752-i2c-overlay.dts file is (If you cannot read it properly due to > email agent - it is supposed to be plain text-, I can send it some other > way): > ---------------------------------------------------------------------------------- > // Overlay for the SC16IS752 I2C-connected UART > /dts-v1/; > /plugin/; > > / { > compatible = "brcm,bcm2708"; > fragment@0 { > target = <&i2c_arm>; > __overlay__ { > #address-cells = <1>; > #size-cells = <0>; > status = "okay"; > > sc16is752: sc16is752@4D { > compatible = "nxp,sc16is752"; > reg = <0x4D>; > clocks = <&sc16is752_clock>; > interrupt-parent = <&gpio>; > interrupts = <255 2>; /* high-to-low edge triggered */ You probably used 22 instead of 255 here according to below info. > gpio-controller; > #gpio-cells = <2>; > }; > }; > }; > > fragment@1 { > target = <&clocks>; > __overlay__ { > #address-cells = <1>; > #size-cells = <0>; > status = "okay"; > > sc16is752_clock: sc16is752_clock@10 { > compatible = "fixed-clock"; > reg = <10>; > #clock-cells = <0>; > clock-output-name = "sc16is752"; > clock-frequency = <100000>; I very much doubt that your fixed clock run at 100 kHz. That is not a very baudrate friendly frequency. I would expect something like 1.8432 MHz. > }; > }; > }; > > fragment@2 { > target = <&gpio>; > __overlay__ { > sc16is752_pins: sc16is752_pins { > brcm,pins = <255>; > brcm,function = <0>; /* in */ > }; > }; > }; Why is this fragment here? The raspberry pi doesn't have 255 gpio pins. > __overrides__ { > clkrate = <&sc16is752_clock>,"clock-frequency:0"; > irqpin = <&sc16is752>,"interrupts:0", > <&sc16is752_pins>,"brcm,pins:0"; > }; > }; And what is this supposed to do? I use the SC16IS740 in SPI mode and I don't have something like this. > ---------------------------------------------------------------------------------- > > > I use Device Tree. When executing: > > "dtc -I fs /proc/device-tree" > > I get following output (I only include lines related with sc16is752): > ------------------------------------------------------------------------------------ > soc { > compatible = "simple-bus"; > ranges = <0x7e000000 0x20000000 0x1000000>; > #address-cells = <0x1>; > phandle = <0x1d>; > #size-cells = <0x1>; > linux,phandle = <0x1d>; > ... > i2c@7e804000 { > reg = <0x7e804000 0x1000>; > interrupts = <0x2 0x15>; > pinctrl-0 = <0xd>; > compatible = "brcm,bcm2708-i2c"; > clock-frequency = <0x186a0>; > clocks = <0x4>; > status = "okay"; > #address-cells = <0x1>; > phandle = <0x1a>; > #size-cells = <0x0>; > pinctrl-names = "default"; > linux,phandle = <0x1a>; > > sc16is752@4D { > reg = <0x4d>; > interrupts = <0x16 0x2>; > #gpio-cells = <0x2>; > compatible = "nxp,sc16is752"; > clocks = <0x28>; > phandle = <0x29>; > gpio-controller; > linux,phandle = <0x29>; > interrupt-parent = <0xf>; > }; > }; > .... > gpio@7e200000 { > reg = <0x7e200000 0xb4>; > interrupts = <0x2 0x11 0x2 0x12>; > #gpio-cells = <0x2>; > compatible = "brcm,bcm2835-gpio"; > #interrupt-cells = <0x2>; > phandle = <0xf>; > interrupt-controller; > gpio-controller; > linux,phandle = <0xf>; > .... > sc16is752_pins { > phandle = <0x2a>; > brcm,function = <0x0>; > brcm,pins = <0x16>; > linux,phandle = <0x2a>; > }; > }; > }; > > clocks { > compatible = "simple-bus"; > status = "okay"; > #address-cells = <0x1>; > phandle = <0x27>; > #size-cells = <0x0>; > linux,phandle = <0x27>; > .... > sc16is752_clock@10 { > reg = <0xa>; > #clock-cells = <0x0>; > clock-output-name = "sc16is752"; > compatible = "fixed-clock"; > clock-frequency = <0x186a0>; > phandle = <0x28>; > linux,phandle = <0x28>; > }; > }; Looks ok apart from the fixed clock frequency. > ------------------------------------------------------------------- > > I also include the log generated by command: > "sudo vcdbg log msg" ( without dtdebug=1 ): > ---------------------------------------------------------------------------------- > 012803.616: Loaded overlay 'sc16is752-i2c' > 012803.633: dtparam: clkrate=100000 > 012804.198: dtparam: irqpin=22 > 012805.091: dtparam: i2c_arm=on > ---------------------------------------------------------------------------------- > > And by command: > "sudo vcdbg log msg" ( with dtdebug=1 ): > ---------------------------------------------------------------------------------- > 012808.179: Loaded overlay 'sc16is752-i2c' > 012808.198: dtparam: clkrate=100000 > 012808.371: dtdebug: Found override clkrate > 012808.408: dtdebug: override clkrate: cell target clock-frequency @ > offset 0 (size 4) > 012808.827: dtparam: irqpin=22 > 012809.004: dtdebug: Found override irqpin > 012809.040: dtdebug: override irqpin: cell target interrupts @ offset 0 > (size 4) > 012809.289: dtdebug: override irqpin: cell target brcm,pins @ offset 0 > (size 4) > 012809.851: dtdebug: Found fragment 0 (offset 36) > 012813.252: dtdebug: > merge_fragment(/soc/i2c@7e804000,/fragment@0/__overlay__) > 012813.278: dtdebug: +prop(#address-cells) > 012813.656: dtdebug: +prop(#size-cells) > 012814.036: dtdebug: +prop(status) > 012815.823: dtdebug: > merge_fragment(/soc/i2c@7e804000/sc16is752@4D,/fragment@0/__overlay__/sc16is752@4D) > 012815.848: dtdebug: +prop(compatible) > 012816.204: dtdebug: +prop(reg) > 012816.594: dtdebug: +prop(clocks) > 012816.989: dtdebug: +prop(interrupt-parent) > 012817.366: dtdebug: +prop(interrupts) > 012817.787: dtdebug: +prop(gpio-controller) > 012818.230: dtdebug: +prop(#gpio-cells) > 012818.681: dtdebug: +prop(linux,phandle) > 012819.134: dtdebug: +prop(phandle) > 012819.597: dtdebug: merge_fragment() end > 012819.631: dtdebug: merge_fragment() end > 012819.705: dtdebug: Found fragment 1 (offset 324) > 012824.304: dtdebug: merge_fragment(/clocks,/fragment@1/__overlay__) > 012824.329: dtdebug: +prop(#address-cells) > 012824.598: dtdebug: +prop(#size-cells) > 012824.872: dtdebug: +prop(status) > 012827.205: dtdebug: > merge_fragment(/clocks/sc16is752_clock@10,/fragment@1/__overlay__/sc16is752_clock@10) > 012827.230: dtdebug: +prop(compatible) > 012827.508: dtdebug: +prop(reg) > 012827.820: dtdebug: +prop(#clock-cells) > 012828.225: dtdebug: +prop(clock-output-name) > 012828.703: dtdebug: +prop(clock-frequency) > 012829.110: dtdebug: +prop(linux,phandle) > 012829.478: dtdebug: +prop(phandle) > 012829.847: dtdebug: merge_fragment() end > 012829.881: dtdebug: merge_fragment() end > 012829.957: dtdebug: Found fragment 2 (offset 588) > 012831.658: dtdebug: > merge_fragment(/soc/gpio@7e200000,/fragment@2/__overlay__) > 012833.036: dtdebug: > merge_fragment(/soc/gpio@7e200000/sc16is752_pins,/fragment@2/__overlay__/sc16is752_pins) > 012833.060: dtdebug: +prop(brcm,pins) > 012833.651: dtdebug: +prop(brcm,function) > 012834.249: dtdebug: +prop(linux,phandle) > 012834.832: dtdebug: +prop(phandle) > 012835.429: dtdebug: merge_fragment() end > 012835.458: dtdebug: merge_fragment() end > 012835.626: dtparam: cache_line_size=32 > 012836.835: dtdebug: Found override cache_line_size > 012836.874: dtdebug: override cache_line_size: cell target cache-line-size > @ offset 0 (size 4) > 012839.921: dtdebug: delete_node(/hat) > ---------------------------------------------------------------------------------- > > > We are still missing the ttySC0 and ttySC1 in /dev folder. Somehow the > sc16is752 is not correctly recognized. > > I am using kernel version 4.1.13. Should I use 4.4? I don't think you have to for I2C, but I have no experience with that version. Is the sc16is7xx driver compiled into the kernel? Or as a module? And if so, is it in: /lib/modules/4.1.13/kernel/drivers/tty/serial/sc16is7xx.ko > Any other suggestion?. > > Thanks for your support. > Juan. You're welcome, Maarten -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html