Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

* Mediatek's I2C controller

The Mediatek's I2C controller is used to interface with I2C devices.

Required properties:
  - compatible: value should be either of the following.
      (a) "mediatek,mt6577-i2c", for i2c compatible with mt6577 i2c.
      (b) "mediatek,mt6589-i2c", for i2c compatible with mt6589 i2c.
      (c) "mediatek,mt8127-i2c", for i2c compatible with mt8127 i2c.
      (d) "mediatek,mt8135-i2c", for i2c compatible with mt8135 i2c.
      (e) "mediatek,mt8173-i2c", for i2c compatible with mt8173 i2c.
  - reg: physical base address of the controller and dma base, length of memory
    mapped region.
  - interrupts: interrupt number to the cpu.
  - clock-div: the fixed value for frequency divider of clock source in i2c
    module. Each IC may be different.
  - clocks: clock name from clock manager
  - clock-names: Must include "main" and "dma", if enable have-pmic need include
    "pmic" extra.

Optional properties:
  - clock-frequency: Frequency in Hz of the bus when transfer, the default value
    is 100000.
  - mediatek,have-pmic: platform can control i2c form special pmic side.
    Only mt6589 and mt8135 support this feature.
  - mediatek,use-push-pull: IO config use push-pull mode.

Example:

	i2c0: i2c@1100d000 {
			compatible = "mediatek,mt6577-i2c";
			reg = <0x1100d000 0x70>,
			      <0x11000300 0x80>;
			interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_LOW>;
			clock-frequency = <400000>;
			mediatek,have-pmic;
			clock-div = <16>;
			clocks = <&i2c0_ck>, <&ap_dma_ck>;
			clock-names = "main", "dma";
	};