2015-05-08 2 views
0

Я пытаюсь связать контроллер GPIO в драйвере ядра, и я не уверен, что я все делаю правильно.Дерево устройств и GPIO

Это мой код устройства дерево:

gpio_screen1:[email protected] { 
      compatible = "nxp,pca9535"; 
      gpio-controller; 
      #gpio-cells = <2>; 
      reg = <0x20>; 
//   pinctrl-names = "default"; 
//   pinctrl-0 = <&pinctrl_pca9505>; 
      }; 

    screen: [email protected] { 
     compatible = "myscreen,myscreen"; 
     #address-cells = <1>; 
     #size-cells = <0>; 
     reg = < 0x04000 0xF00 >;      
     interrupts = <1 2>; 
     reset-gpios  = <&gpio_screen1 15 0>; 
     sleep-gpios  = <&gpio_screen1 14 0>; 
     clk_sel1-gpios = <&gpio_screen1 10 0>; 
     lane_sel-gpios = <&gpio_screen1 9 0>; 
    }; 

И это мой код драйвера, который регистрирует GPIO

gpio = of_get_named_gpio(pdev->dev.of_node, "reset-gpios", 0); 
if (!gpio_is_valid(gpio)) { 
     dev_err(&pdev->dev, "failed to parse reset gpio\n"); 
     return gpio; 
} 
dev->reset = gpio; 

ли инициализация правильно?

Я смотрел документацию для этого контроллера GPIO, но это не очень полезно.

ответ

0

Я не вижу ничего плохого в инициализации gpio со стороны водителя. Это довольно просто. Следующий шаг запрос инициализирован GPIO:

ret = devm_gpio_request_one(&pdev->dev, dev->reset, GPIOF_OUT_INIT_HIGH, "gpio-reset"); 
if (ret) { 
    dev_err(&pdev->dev, "failed to request gpio %d: %d\n", dev->reset, ret); 
    return -EINVAL; 
} 

Что касается devicetree части здесь, как я понимаю, ты на основе GPIO-pcf857x.txt или что-то в этом роде. Разве вы не используете прерывания для этих gpios?

И главный вопрос, это работает? ;)

+0

Мне не нужны прерывания от этого gpio, поэтому я не планировал использовать их. Я еще не смог проверить его на HW, я, вероятно, смогу сделать это на следующей неделе. : S – Jamiro14

+0

вам удалось? Вы записали запись дерева устройств или наложение дерева устройств для этого? – Raulp

Смежные вопросы