...
...
Expand | ||
---|---|---|
| ||
&du { status = "okay"; }; &dsi0 { status = "okay"; #address-cells = <1>; #size-cells = <0>; ports { #address-cells = <1>; #size-cells = <0>; port@1 { dsi0_out: endpoint { remote-endpoint = <&panel_in>; data-lanes = <1 2>; }; }; }; panel@0 { compatible = "ilitek,ili9881c"; reg = <0>; dsi-lanes = <2>; enable-gpios = <&pinctrl RZG2L_GPIO(43, 0) GPIO_ACTIVE_HIGH>; backlight = <&backlight>; status = "okay"; port { panel_in: endpoint { remote-endpoint = <&dsi0_out>; }; }; }; }; |
Expand | ||
---|---|---|
| ||
&pinctrl { du_pins: du { data { pinmux = <RZG2L_PORT_PINMUX(7, 2, 1)>, <RZG2L_PORT_PINMUX(8, 0, 1)>, <RZG2L_PORT_PINMUX(8, 1, 1)>, <RZG2L_PORT_PINMUX(8, 2, 1)>, <RZG2L_PORT_PINMUX(9, 0, 1)>, <RZG2L_PORT_PINMUX(9, 1, 1)>, <RZG2L_PORT_PINMUX(10, 0, 1)>, <RZG2L_PORT_PINMUX(10, 1, 1)>, <RZG2L_PORT_PINMUX(11, 0, 1)>, <RZG2L_PORT_PINMUX(11, 1, 1)>, <RZG2L_PORT_PINMUX(12, 0, 1)>, <RZG2L_PORT_PINMUX(12, 1, 1)>, <RZG2L_PORT_PINMUX(13, 0, 1)>, <RZG2L_PORT_PINMUX(13, 1, 1)>, <RZG2L_PORT_PINMUX(13, 2, 1)>, <RZG2L_PORT_PINMUX(14, 0, 1)>, <RZG2L_PORT_PINMUX(14, 1, 1)>, <RZG2L_PORT_PINMUX(15, 0, 1)>, <RZG2L_PORT_PINMUX(15, 1, 1)>, <RZG2L_PORT_PINMUX(16, 0, 1)>, <RZG2L_PORT_PINMUX(16, 1, 1)>, <RZG2L_PORT_PINMUX(17, 0, 1)>, <RZG2L_PORT_PINMUX(17, 1, 1)>, <RZG2L_PORT_PINMUX(17, 2, 1)>; }; sync { pinmux = <RZG2L_PORT_PINMUX(6, 1, 1)>, /* HSYNC */ <RZG2L_PORT_PINMUX(7, 0, 1)>; /* VSYNC */ }; de { pinmux = <RZG2L_PORT_PINMUX(7, 1, 1)>; /* DE */ }; clk { pinmux = <RZG2L_PORT_PINMUX(6, 0, 1)>; /* CLK */ }; }; };
panel_rgb: panel-rgb { rgb-dummy { compatible = "renesasarm,rgbrtsm-dummydisplay"; //<-- this property "arm,rtsm-display" is an example. // please fill in the correct information based on your panel spec. port { panel_in_rgb: endpoint { remote-endpoint = <&du_out_rgb>; }; }; };
&du {
pinctrl-0 = <&du_pins>;
pinctrl-names = "default";
status = "okay";
ports {
port@0 {
du_out_rgb: endpoint {
remote-endpoint = <&panel_in_rgb>;
};
};
};
};
&dsi0 {
status = "disabled";
}; |
Expand | ||
---|---|---|
| ||
&pinctrl {
du_pins: du {
data {
pinmux = <RZG2L_PORT_PINMUX(7, 2, 1)>,
<RZG2L_PORT_PINMUX(8, 0, 1)>,
<RZG2L_PORT_PINMUX(8, 1, 1)>,
<RZG2L_PORT_PINMUX(8, 2, 1)>,
<RZG2L_PORT_PINMUX(9, 0, 1)>,
<RZG2L_PORT_PINMUX(9, 1, 1)>,
<RZG2L_PORT_PINMUX(10, 0, 1)>,
<RZG2L_PORT_PINMUX(10, 1, 1)>,
<RZG2L_PORT_PINMUX(11, 0, 1)>,
<RZG2L_PORT_PINMUX(11, 1, 1)>,
<RZG2L_PORT_PINMUX(12, 0, 1)>,
<RZG2L_PORT_PINMUX(12, 1, 1)>,
<RZG2L_PORT_PINMUX(13, 0, 1)>,
<RZG2L_PORT_PINMUX(13, 1, 1)>,
<RZG2L_PORT_PINMUX(13, 2, 1)>,
<RZG2L_PORT_PINMUX(14, 0, 1)>,
<RZG2L_PORT_PINMUX(14, 1, 1)>,
<RZG2L_PORT_PINMUX(15, 0, 1)>,
<RZG2L_PORT_PINMUX(15, 1, 1)>,
<RZG2L_PORT_PINMUX(16, 0, 1)>,
<RZG2L_PORT_PINMUX(16, 1, 1)>,
<RZG2L_PORT_PINMUX(17, 0, 1)>,
<RZG2L_PORT_PINMUX(17, 1, 1)>,
<RZG2L_PORT_PINMUX(17, 2, 1)>;
};
sync {
pinmux = <RZG2L_PORT_PINMUX(6, 1, 1)>, /* HSYNC */
<RZG2L_PORT_PINMUX(7, 0, 1)>; /* VSYNC */
};
de {
pinmux = <RZG2L_PORT_PINMUX(7, 1, 1)>; /* DE */
};
clk {
pinmux = <RZG2L_PORT_PINMUX(6, 0, 1)>; /* CLK */
};
};
};
rgb-dummy { compatible = "renesas,rgb-dummy"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; rgb_in: endpoint { remote-endpoint = <&du_out_rgb>; }; }; port@1 { reg = <1>; rgb_out: endpoint { remote-endpoint = <&panel_in>; }; }; }; };
panel { /* * Define code for panel here such as compatible, backlight, power,... * Can refer drivers/gpu/drm/panel/panel-simple.c */ port { panel_in: endpoint { remote-endpoint = <&rgb_out>; }; }; };
&dsi0 { status = "disabled"; };
&du { pinctrl-0 = <&du_pins>; pinctrl-names = "default"; ports { port@0 { du_out_rgb: endpoint { remote-endpoint = <&rgb_in>; }; }; }; }; |
...
...
If you did not connect the USB_OVCUR pin on your board, and it floats, you will get interrupt messages about over current. However, you can disable this interrupt by modifying the setting for the OHCI HcRhDescriptorA OHCI HcRhDescriptorA Register and setting bit NOCP to bit NOCP to '1'. Search for "HcRhDescriptorA" in the hardware manual for more information.
In the kernelthe kernel, in file driversfile drivers/usb/host/ohci-hcd.c, you want to comment out the to comment out the line:
/* Configure for per-port over-current protection by default */
val &= ~RH_A_NOCP;
In u-boot, can see this is sometimes done for Renesas boards. See file boardfile board/renesas/rzg2l-dev/rzg2l-dev.c
(*(volatile u32 *)(USB1_BASE + HcRhDescriptorA)) |= (0x1u << 12); /* NOCP = 1 */
If you are using a device as OTG (On-the-Go) and want to change from device to you, you set a sysfs setting under the PHY driver (not the USB controller driver)
$ echo host > /sys/devices/platform/soc/ee080200.usb-phy/role
Device Tree Examples
...
HTML |
---|
<pre> &spi1 { pinctrl-0 = <&spi1_pins>; pinctrl-names = "default"; dmas = <&dmac <span><font color=red> 0x2e99 |
...
</font></span>>, <&dmac <span><font color=red> 0x2e9a |
...
</font></span>>; dma-names = "tx", "rx"; status = "okay"; }; </pre> |
...
Example: RZ/G2L RSPI ch1
SPIT1 (tranmit buffer empty) dma-names = "tx"
...
MID[7:0] = 10100110'b
RID[1:0] = 10'b
HEIN = 1'b
LVL = 1'b
AM[2:0] = 010'b
TM = 0'b
AM HEIN RID
| | |
0 010 1 1 10100110 10 = 0010 1110 1001 1010 = 0x2e9a
| | |
TM LVL MID
Device Tree Examples
Linux Drivers
...
Linux Drivers
...
Notes
Device Tree Examples
Linux Drivers
...
static const struct of_device_id spidev_dt_ids[] = { { .compatible = "rohm,dh2228fv" }, { .compatible = "lineartechnology,ltc2488" }, { .compatible = "ge,achc" }, { .compatible = "semtech,sx1301" }, { .compatible = "lwn,bk4" }, { .compatible = "dh,dhcom-board" }, { .compatible = "menlo,m53cpld" }, {}, };
For example, if you just pick the first name in the list ("rohm,dh2228fv") this will work on any kernel version:
&spi1 { pinctrl-0 = <&spi1_pins>; pinctrl-names = "default"; status = "okay"; dmas = <&dmac 0x2e99>, <&dmac 0x2e9a>; dma-names = "tx", "rx"; spidev@0{ compatible = "rohm,dh2228fv"; // (Using fake name to use spidev driver) reg = <0>; spi-max-frequency = <1000000>; }; };
Device Tree Examples
...