BeagleboneBlack에서 gpio 인터럽트가있는 드라이버를 사용하려고합니다.am335x GPIO는 장치 트리에서 어떻게 번호가 매겨 집니까?
&i2c1{...
mydevice: [email protected] {
compatible = "mydevice,mydeice";
reg = <0x0c>;
mag_irq_gpio = <&gpio1 13 0>; /* INT line */
};
...}
그것의 드라이버 대응이 있습니다 :
static int parse_dt(struct i2c_client *client)
{
struct device_node *node = client->dev.of_node;
struct mydev_data *data = i2c_get_clientdata(client);
return of_property_read_u32(node, "mag_irq_gpio", &data->gpio);
}
드라이버로드 및 GPIO 번호가 완전히 잘못을 제외하고 잘 작동 내 장치 트리 내 사용자 정의 장치에 대한 다음과 같은 항목이 있습니다. 속성 읽기 함수는 성공을 반환하고 장치 트리에 다른 숫자를 입력하더라도 8을 gpio 번호로 읽습니다.
일반 데이터로 GPIO 번호를 전달하려면 어떻게해야합니까? 내 드라이버 내에서 GPIO 번호를 수동으로 무시하면 인터럽트가 작동합니다. @sawdust
<&gpio1 13 0>
의해 주석으로 당
세 항목의 벡터로 'mag_irq_gpio' 항목을 정의했습니다. 숫자는 (1) PIO 컨트롤러 'gpio1', (2) _relative_ 핀 번호, (13) 및 (3) 핀 옵션 (지정되지 않은 경우 '0')을 나타내는 것으로 나타납니다. . 드라이버가이 항목을 검색 할 때 드라이버는 하나가 아닌 세 가지 값을 모두 가져와야합니다. 드라이버가 컨트롤러 번호와 상대 핀 번호를 "절대"핀 번호로 변환해야 할 수 있습니다. – sawdust