小米6采用的usb控制器是高通芯片內置的,并支持usb3.0,但是小米配置成只能用usb2.0的速度,這里要批判一下小米萬年usb2.0,回到正題,雖然只能用usb2.0,但是芯片是3.0的所以內核選項還是需要選上3.0的驅動。

??想了解更多關于開源的內容,請訪問:??
??51CTO 開源基礎軟件社區(qū)??
??https://ost.51cto.com??
最近研究出了USB HDC連接和屏幕背光適配,先寫個分享一下,另外做一下廣告,小米6和樹莓派4已經把vendor,board,soc,kernel都開源了,開源倉在我創(chuàng)建的OHOS移植社區(qū):https://gitee.com/ohos-porting-communities,提供給大家做移植參考。
1、USB HDC適配
USB HDC適配首先要確認內核的編譯選項中有USB控制器的驅動,以小米6舉例。
小米6采用的usb控制器是高通芯片內置的,并支持usb3.0,但是小米配置成只能用usb2.0的速度,這里要批判一下小米萬年usb2.0,回到正題,雖然只能用usb2.0,但是芯片是3.0的所以內核選項還是需要選上3.0的驅動。
...
CONFIG_USB_DWC3=y #選中usb3驅動
# CONFIG_USB_DWC3_HOST is not set
# CONFIG_USB_DWC3_GADGET is not set
CONFIG_USB_DWC3_DUAL_ROLE=y
#
# Platform Glue Driver Support
#
CONFIG_USB_DWC3_OF_SIMPLE=y
CONFIG_USB_DWC3_QCOM=y #選中高通usb驅動
...
CONFIG_USB_LIBCOMPOSITE=y
CONFIG_USB_F_FS=y #HDC連接通過configfs進行實現
CONFIG_USB_CONFIGFS=y
...
CONFIG_USB_CONFIGFS_F_FS=y
同時保證【USB Gadget precomposed configurations】為非選。
#
# USB Gadget precomposed configurations
#
# CONFIG_USB_ZERO is not set
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_ETH is not set
# CONFIG_USB_G_NCM is not set
# CONFIG_USB_GADGETFS is not set
# CONFIG_USB_FUNCTIONFS is not set
# CONFIG_USB_MASS_STORAGE is not set
# CONFIG_USB_G_SERIAL is not set
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_PRINTER is not set
# CONFIG_USB_CDC_COMPOSITE is not set
# CONFIG_USB_G_ACM_MS is not set
# CONFIG_USB_G_MULTI is not set
# CONFIG_USB_G_HID is not set
# CONFIG_USB_G_DBGP is not set
# CONFIG_USB_G_WEBCAM is not set
# CONFIG_USB_RAW_GADGET is not set
# end of USB Gadget precomposed configurations
到此內核部分修改完畢,接下來還需要修改init.sagit.usb.cfg文件,關鍵在兩個地方,一個是序列號,這個必須是一個能獲取到值,我之前一直用官方默認的寫法,系統(tǒng)一直識別失敗,提示序列號不正確,還有一個就是修改usb控制器的名稱,這個就需要我們在系列文章第一篇中有提到,需要提前在正常運行的系統(tǒng)里面獲取到usb控制器的名稱,或者后續(xù)配置usb串口啟用控制臺進行獲取也行。
在啟用usb串口后,執(zhí)行以下命令獲取usb控制器名稱。

獲取到usb控制器名稱后修改init.sagit.usb.cfg中的usb控制器名稱和序列號獲取方式。
"cmds" : [
...
"write /config/usb_gadget/g1/strings/0x409/serialnumber 0123456789",
...
"setparam sys.usb.controller a800000.usb"
]
修改完成之后編譯并燒錄進設備,這樣就能適配hdc設備連接器了,打通hdc之后就可以使用DevEco Studio進行真機調試應用開發(fā)。
一個簡單的演示視頻:
??小米6移植OpenHarmony進度更新,已打通HDC,APP開發(fā)簡單演示??
2、屏幕背光調節(jié)
屏幕背光調節(jié)適配首先確認存在背光節(jié)點信息
ls /sys/class/backlight/backlight/

然后通過命令行修改背光亮度值,查看是否有變化。
cd /sys/class/backlight/backlight/
echo 1 > brightness

確認修改亮度可以控制屏幕之后我們需要修改display層適配代碼:
修改drm_connector.cpp內的GetBrightness函數。

修改drm_connector.cpp內的SetBrightness函數

修改完成之后保存,編譯燒錄,小米6親測有效。


??想了解更多關于開源的內容,請訪問:??
??51CTO 開源基礎軟件社區(qū)??
??https://ost.51cto.com??