Device Tree Configuration
The I2C device tree source code is stored in the files of jh7110.dts and jh7110-common.dtsi.
The following code blocks provide more details by taking the node “i2c0” as example.
In the file jh7110.dts:
i2c0: i2c@10030000 { compatible = "snps,designware-i2c"; reg = <0x0 0x10030000 0x0 0x10000>; clocks = <&clkgen JH7110_I2C0_CLK_CORE>, <&clkgen JH7110_I2C0_CLK_APB>; clock-names = "ref", "pclk"; resets = <&rstgen RSTN_U0_DW_I2C_APB>; interrupts = <35>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; };
The following list provides explanations for the parameters included in the above code
block.
- compatible: Compatibility information, used to associate the driver and its target device.
- reg: Register base address "0x10030000" and range "0x10000".
- clocks: The clocks used by the I2C module.
- clock-names: The names of the above clocks.
- resets: The reset signals used by the I2C module.
- reset-names: The names of the above reset signals.
- interrupts: Hardware interrupt ID.
- status: The work status of the I2C, "enabled" or "disabled".
In the file jh7110-common.dtsi:
&i2c0 { clock-frequency = <100000>; i2c-sda-hold-time-ns = <300>; i2c-sda-falling-time-ns = <510>; i2c-scl-falling-time-ns = <510>; auto_calc_scl_lhcnt; pinctrl-names = "default"; pinctrl-0 = <&i2c0_pins>; status = "disabled"; ac108_a: ac108@3b { // i2c_client 1 compatible = "x-power,ac108_0"; reg = <0x3b>; #sound-dai-cells = <0>; data-protocol = <0>; }; wm8960: codec@1a { //i2c_client 2 compatible = "wlf,wm8960"; reg = <0x1a>; #sound-dai-cells = <0>; wlf,shared-lrclk; }; };
The following list provides explanations for some parameters included in the above code
block.
- clock-frequency: Use this bit to set the I2C sample rate.
- i2c-sda-hold-time-ns: Use this bit to set the hold time of the SDA line.
- i2c-sda-falling-time-ns: Use this bit to set the falling time of the SDA line.
- i2c-scl-falling-time-ns: Use this bit to set the falling time of the SCL line.