Armadilloフォーラム

USB1電源ON/OFF

yuri_n

2019年1月29日 13時14分

お世話になっております。

Armadillo-640のUSB1に接続したデバイスに対する電源供給のON/OFFを制御したいと思っております。

”使用上の注意事項”として、”Armadillo-640のUSB_OTG2_VBUS電源をOFFできない”という件が
ありましたが、制御対象はUSB_OTG1_VBUS(GPIO1_IO19)ですので関係がないと理解しております。

お手数ですが、以下2点質問したく、よろしくお願い致します。

1.USB_OTG1の位置
 製品マニュアルでは
  ”上段に供給される電源(USB_OTG1_VBUS)はi.MX6ULLのUART1_RTS_Bピン(GPIO1_IO19)、 下段に供給される電源(USB_OTG2_VBUS)は
i.MX6ULLのCSI_MCLKピン(GPIO4_IO17)で制御が可能で、 Highレベル出力で電源が供給され、Lowレベル出力で電源が切断されます。”
 と記載されています。

 実際は下段がUSB_OTG1と理解しております。正しいでしょうか?

2.USB_OTG1の電源OFFの方法について
  USB1のバスコマンドから、電源をOFFにしようと試みましたが、電源がOFFになりません。
  root@armadillo:~# echo off /sys/bus/usb/devices/usb1/power/control
  off /sys/bus/usb/devices/usb1/power/control
  root@armadillo:~# cat /sys/bus/usb/devices/usb1/power/runtime_status
  active
  root@armadillo:~# echo suspend /sys/bus/usb/devices/usb1/power/control
  suspend /sys/bus/usb/devices/usb1/power/control
  root@armadillo:~# cat /sys/bus/usb/devices/usb1/power/runtime_status
  active

  また、UART1_RTS_Bピン(GPIO1_IO19)を直接制御するために、GPIO19をexportしようとしましたが、
  エラーとなります。
  
  root@armadillo:~#echo 19 > /sys/class/gpio/unexport
root@armadillo:~#-bash: echo: write error: Invalid argument

電源OFFにするためには、どのようにすべきでしょうか?

ご教授いただければ幸いです。
よろしくお願い致します。

コメント

すみません、先ほどの”GPIO19をexportしようとしましたがエラー”の件、
違うコマンドを張り付けてしまいました。
正しくは以下です。

root@armadillo:~# echo 19 > /sys/class/gpio/export
-bash: echo: write error: Device or resource busy

よろしくお願い致します

> お世話になっております。
>
> Armadillo-640のUSB1に接続したデバイスに対する電源供給のON/OFFを制御したいと思っております。
>
> ”使用上の注意事項”として、”Armadillo-640のUSB_OTG2_VBUS電源をOFFできない”という件が
> ありましたが、制御対象はUSB_OTG1_VBUS(GPIO1_IO19)ですので関係がないと理解しております。
>
> お手数ですが、以下2点質問したく、よろしくお願い致します。
>
> 1.USB_OTG1の位置
>  製品マニュアルでは
>   ”上段に供給される電源(USB_OTG1_VBUS)はi.MX6ULLのUART1_RTS_Bピン(GPIO1_IO19)、 下段に供給される電源(USB_OTG2_VBUS)は
> i.MX6ULLのCSI_MCLKピン(GPIO4_IO17)で制御が可能で、 Highレベル出力で電源が供給され、Lowレベル出力で電源が切断されます。”
>  と記載されています。
>
>  実際は下段がUSB_OTG1と理解しております。正しいでしょうか?
>
> 2.USB_OTG1の電源OFFの方法について
>   USB1のバスコマンドから、電源をOFFにしようと試みましたが、電源がOFFになりません。
>   root@armadillo:~# echo off /sys/bus/usb/devices/usb1/power/control
>   off /sys/bus/usb/devices/usb1/power/control
>   root@armadillo:~# cat /sys/bus/usb/devices/usb1/power/runtime_status
>   active
>   root@armadillo:~# echo suspend /sys/bus/usb/devices/usb1/power/control
>   suspend /sys/bus/usb/devices/usb1/power/control
>   root@armadillo:~# cat /sys/bus/usb/devices/usb1/power/runtime_status
>   active
>
>
>   また、UART1_RTS_Bピン(GPIO1_IO19)を直接制御するために、GPIO19をexportしようとしましたが、
>   エラーとなります。
>   
>   root@armadillo:~#echo 19 > /sys/class/gpio/unexport
> root@armadillo:~#-bash: echo: write error: Invalid argument
>
> 電源OFFにするためには、どのようにすべきでしょうか?
>
> ご教授いただければ幸いです。
> よろしくお願い致します。
>

おそらくこれでできそうです。

電源OFF echo "usb1" > /sys/bus/usb/drivers/usb/unbind
電源ON echo "usb1" > /sys/bus/usb/drivers/usb/bind

まだ確証得ていませんが。。。

もしアドバイスある方いらっしゃいましたら、ぜひ、よろしくお願い致します。

溝渕です。

> おそらくこれでできそうです。
>
> 電源OFF echo "usb1" > /sys/bus/usb/drivers/usb/unbind
> 電源ON echo "usb1" > /sys/bus/usb/drivers/usb/bind
>
> まだ確証得ていませんが。。。
>
> もしアドバイスある方いらっしゃいましたら、ぜひ、よろしくお願い致します。

多分ユーザーランドからの電源OFFはできないと思います。これは、ドライバ
で制御するものをユーザーランドから変更されるとドライバが困るためです。

完全にユーザーランドからのみ電源制御を行うのであれば、DTSから
reg_usbotg1_vbusを削除し、gpio sysfsから制御するのが良いと思います。