pca9570 i2c GPO 확장기 용 드라이버를 작성하고 있습니다. (이것은 그 값의 I2C 어드레스에 간단한 1 바이트 쓰기 설정 네 개의 출력 비트를 가지고있다.) I 현재 GPIO를 설정하려고커널 모듈의 GPIO가 항상 출력되도록 강제로
다음과 같이 어떻게이 모듈
struct gpio_chip *gc = &chip->gpio_chip;
gc->set = pca9570_gpio_set_value;
gc->get = pca9570_gpio_get_value;
gc->direction_output = pca9570_gpio_direction_output;
gc->direction_input = pca9570_gpio_direction_input;
gc->can_sleep = true;
gc->base = gpio_start;
gc->ngpio = PCA9570_GPIO_COUNT;
gc->label = chip->client->name;
gc->owner = THIS_MODULE;
gc->dev = &chip->client->dev;
을 커널에게 데이터 만 출력 할 수 있다고 알려주십시오. 즉, 사용자 공간 [email protected]:/sys/class/gpio/gpio508# cat direction
의 결과가 이 아닌 out
이되도록하고 싶습니다.
이 드라이버는 초기화시 출력 방향을 설정하기 위해 클라이언트 측 gpio 호출을 추가해야하며 사용자가이를 입력으로 설정하려고 할 때마다 반쯤 생각합니다. 이것을 올바른 방법일까요?
복사 할 수있는 "출력 전용"gpio 드라이버가 있습니까?
*? "이 그것을 할 수있는 올바른 방법이다"* - 호 리소스 제어 (예 :'gpio_request()')를 적절히 사용하는 코드가 정상적으로 작동한다면 드라이버가 GPIO 핀을 소유하게되고 방향을 변경하려고 시도하는 드라이버는 없을 것입니다. – sawdust
@sawdust, 나는'gpio_request()'가 꽤 오래된 API이기 때문에'gpiod_get()'을 의미한다고 생각한다. 관리자는 후자를 사용하는 것을 꺼린다. – 0andriy
데이터 시트 http://www.nxp.com/documents/data_sheet/PCA9570.pdf에 따르면 확장기는 입력 및 출력을 지원합니다. 따라서 운전자에게 아무 것도 강요 할 필요가 없습니다. 이것은 발신자의 바쁘다는 것이지 귀하의 것이 아닙니다. – 0andriy