lxiaogao

dts 外部中断驱动的写法

外部中断:

         Max11801接gpio3_26

Dts写法:

I2c从设备驱动获取方法:

max11801@48 {

                   compatible = "maxim,max11801";

                   reg = <0x48>;

                   interrupt-parent = <&gpio3>;

                   interrupts = <26 2>;//注:2

                   work-mode = <1>;/*DCM mode*/

         };

    1 = low-to-high edge triggered.

      2 = high-to-low edge triggered.

      4 = active high level-sensitive.

      8 = active low level-sensitive.

I2c驱动内核会自动解析dts计算中断号赋值给client

驱动里获取使用中断号:

 

static int max11801_ts_probe(struct i2c_client *client, const struct i2c_device_id *id)

{                                          

         request_threaded_irq(client->irq, NULL, max11801_ts_interrupt,

                             IRQF_TRIGGER_LOW | IRQF_ONESHOT,

                             "max11801_ts", data);

}

 

普通平台设备方法:

 

         Dts:

 

         uart1: serial@02020000 {

                                               compatible = "fsl,imx6q-uart", "fsl,imx21-uart";

                                               reg = <0x02020000 0x4000>;

                                               interrupts = <0 26 0x04>;

                                               clocks = <&clks 160>, <&clks 161>;

                                               clock-names = "ipg", "per";

                                               dmas = <&sdma 25 4 0>, <&sdma 26 4 0>;

                                               dma-names = "rx", "tx";

                                               status = "disabled";

                                     };

 

 

 

 

驱动:

static int serial_imx_probe(struct platform_device *pdev)

{

sport->port.irq = platform_get_irq(pdev, 0);

}

 

 

 

评论