ユーザー空間にある種のドライバーがあります:
デバイスとのインターフェース(rs232)を介したプログラムトーク。また、このデバイスのオン/オフを切り替えるピン(gpio)もあります。
移植性を高めるために、プログラムの具体的な gpio にはコーディングしません。
そこで、ボードのデバイス ツリーの記述を変更し、レギュレーターの修正を記述し、その後、ユーザー空間のコンシューマー ドライバーを使用して電源のオン/オフを制御しようと考えましたが、カーネル開発者は期待していないようです (同様の問題の議論へのリンクではなく、私): http://patchwork.ozlabs.org/patch/374912/
では、デバイスのオン/オフの切り替えに使用されたconrete gpioに関する情報をプログラムに追加せずに、ユーザー空間からデバイスのオン/オフを制御するにはどうすればよいですか?
詳細: 私のボード dts で、ピンを次のように説明しました。
regulator-deviceX {
status = "okay";
compatible = "regulator-fixed";
regulator-name = "DEV_X_ON#";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio5 4 GPIO_ACTIVE_LOW>;
};
もちろん、起動後は「gpio = <&gpio5 4 GPIO_ACTIVE_LOW>」がカーネルによってロックされており、/sys/class/gpio インターフェイス経由では使用できません。
「状態」が読み取り専用ファイルであることがわかるように、ユーザー空間からレギュレーターの状態を変更することは不可能です(または方法がわかりません)。
root@board:/sys/class/regulator/regulator.1# ls -l
lrwxrwxrwx 1 root root 0 May 3 03:32 device -> ../../../regulator-deviceX
-r--r--r-- 1 root root 4096 May 3 03:32 microvolts
-r--r--r-- 1 root root 4096 May 3 03:32 name
-r--r--r-- 1 root root 4096 May 3 03:32 num_users
drwxr-xr-x 2 root root 0 May 3 03:32 power
-r--r--r-- 1 root root 4096 May 3 03:32 state
lrwxrwxrwx 1 root root 0 May 3 03:25 subsystem -> ../../../../class/regulator
-r--r--r-- 1 root root 4096 May 3 03:32 suspend_disk_state
-r--r--r-- 1 root root 4096 May 3 03:32 suspend_mem_state
-r--r--r-- 1 root root 4096 May 3 03:32 suspend_standby_state
-r--r--r-- 1 root root 4096 May 3 03:32 type
-rw-r--r-- 1 root root 4096 May 3 03:25 uevent