#author("2016-11-14T23:49:31+09:00","default:afuruta","afuruta") #author("2016-11-14T23:51:13+09:00","default:afuruta","afuruta") * GPIO 接続 LED class device [#eef4d9af] GPIO に接続した LED に対して LED class device として扱うための汎用ドライバ &ogfileone(drivers/leds/leds-gpio.c); があります。gpio_* 関数群でアクセス可能な端子であれば、次のようなデータ構造を記述して &ogdefs(struct platform_device, platform_device); を &ogdefs(platform_device_register(),platform_device_register); で platform device として登録するだけで LED class device になります。 - &ogdefs(struct gpio_led,gpio_led); を静的に配列状に配置し、そのメンバ name(名前), gpio(GPIO ピン番号), active_low(Low Level で点灯ならば 1) を記述します。 - &ogdefs(struct gpio_led_platform_data, gpio_led_platform_data); を静的に配置し上記で配置した配列を格納します。1 要素の配列でも良い - &ogdefs(struct platform_device, platform_device); を静的に配置し、dev.platform_data に上記の &ogdefs(struct gpio_led_platform_data, gpio_led_platform_data); を指すポインタを格納して、name(platform device の class 名) = "leds-gpio", id = -1 とします。 具体的な記述の詳細は &ogrefs(struct gpio_led,gpio_led); または &ogrefs(struct gpio_led_platform_data, gpio_led_platform_data); を使っているソースを参照して下さい。 #code(c,"/struct\s*gpio_led/../LEDS_GPIO_DEFSTATE_KEEP/",ogfileone:/include/linux/leds.h); #code(c,"/struct\s*gpio_led_platform_data/../^};\s*$/",ogfileone:/include/linux/leds.h); #code(c,"/struct\s*struct platform_device/../^};\s*$/",ogfileone:/include/linux/platform_device.h); #code(c,"/struct\s*platform_device/../^};\s*$/",ogfileone:/include/linux/platform_device.h); #textbox(note,ノート){{ 今後、具体的なサンプルを用意するかな。 }}