Loading Documentation/i2c/instantiating-devices +32 −2 Original line number Diff line number Diff line Loading @@ -8,8 +8,8 @@ reason, the kernel code must instantiate I2C devices explicitly. There are several ways to achieve this, depending on the context and requirements. Method 1: Declare the I2C devices by bus number ----------------------------------------------- Method 1a: Declare the I2C devices by bus number ------------------------------------------------ This method is appropriate when the I2C bus is a system bus as is the case for many embedded systems. On such systems, each I2C bus has a number Loading Loading @@ -51,6 +51,36 @@ The devices will be automatically unbound and destroyed when the I2C bus they sit on goes away (if ever.) Method 1b: Declare the I2C devices via devicetree ------------------------------------------------- This method has the same implications as method 1a. The declaration of I2C devices is here done via devicetree as subnodes of the master controller. Example: i2c1: i2c@400a0000 { /* ... master properties skipped ... */ clock-frequency = <100000>; flash@50 { compatible = "atmel,24c256"; reg = <0x50>; }; pca9532: gpio@60 { compatible = "nxp,pca9532"; gpio-controller; #gpio-cells = <2>; reg = <0x60>; }; }; Here, two devices are attached to the bus using a speed of 100kHz. For additional properties which might be needed to set up the device, please refer to its devicetree documentation in Documentation/devicetree/bindings/. Method 2: Instantiate the devices explicitly -------------------------------------------- Loading Loading
Documentation/i2c/instantiating-devices +32 −2 Original line number Diff line number Diff line Loading @@ -8,8 +8,8 @@ reason, the kernel code must instantiate I2C devices explicitly. There are several ways to achieve this, depending on the context and requirements. Method 1: Declare the I2C devices by bus number ----------------------------------------------- Method 1a: Declare the I2C devices by bus number ------------------------------------------------ This method is appropriate when the I2C bus is a system bus as is the case for many embedded systems. On such systems, each I2C bus has a number Loading Loading @@ -51,6 +51,36 @@ The devices will be automatically unbound and destroyed when the I2C bus they sit on goes away (if ever.) Method 1b: Declare the I2C devices via devicetree ------------------------------------------------- This method has the same implications as method 1a. The declaration of I2C devices is here done via devicetree as subnodes of the master controller. Example: i2c1: i2c@400a0000 { /* ... master properties skipped ... */ clock-frequency = <100000>; flash@50 { compatible = "atmel,24c256"; reg = <0x50>; }; pca9532: gpio@60 { compatible = "nxp,pca9532"; gpio-controller; #gpio-cells = <2>; reg = <0x60>; }; }; Here, two devices are attached to the bus using a speed of 100kHz. For additional properties which might be needed to set up the device, please refer to its devicetree documentation in Documentation/devicetree/bindings/. Method 2: Instantiate the devices explicitly -------------------------------------------- Loading