From 103637346811bf77ffdd7a8d3252055d3f740144 Mon Sep 17 00:00:00 2001 From: Tim Lunn Date: Tue, 30 Jan 2024 18:26:10 +1100 Subject: [PATCH 1/3] linux: set OTG port as periperhal mode for UMS gadget --- ...set-peripheral-mode-for-usb-otg-port.patch | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 buildroot-external/board/hardkernel/odroid-m1s/patches/linux/0004-set-peripheral-mode-for-usb-otg-port.patch diff --git a/buildroot-external/board/hardkernel/odroid-m1s/patches/linux/0004-set-peripheral-mode-for-usb-otg-port.patch b/buildroot-external/board/hardkernel/odroid-m1s/patches/linux/0004-set-peripheral-mode-for-usb-otg-port.patch new file mode 100644 index 00000000000..fc6a0779e48 --- /dev/null +++ b/buildroot-external/board/hardkernel/odroid-m1s/patches/linux/0004-set-peripheral-mode-for-usb-otg-port.patch @@ -0,0 +1,25 @@ +From 6e5ac47bd70658098b9e31b63484e6bf061c6183 Mon Sep 17 00:00:00 2001 +From: Tim Lunn +Date: Mon, 29 Jan 2024 15:04:59 +1100 +Subject: [PATCH] set peripheral mode for usb otg port + +--- + arch/arm64/boot/dts/rockchip/rk3566-odroid-m1s.dts | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm64/boot/dts/rockchip/rk3566-odroid-m1s.dts b/arch/arm64/boot/dts/rockchip/rk3566-odroid-m1s.dts +index a5d9216b544b..2dda6038930e 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3566-odroid-m1s.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3566-odroid-m1s.dts +@@ -642,7 +642,7 @@ &usb_host0_ohci { + }; + + &usb_host0_xhci { +- dr_mode = "otg"; ++ dr_mode = "peripheral"; + status = "okay"; + }; + +-- +2.40.1 + From 9f55a2e9fbb20685262de097893e592081274166 Mon Sep 17 00:00:00 2001 From: Tim Lunn Date: Sun, 4 Feb 2024 10:04:28 +1100 Subject: [PATCH 2/3] New package to activate gadgets on OTG port --- buildroot-external/Config.in | 1 + .../configs/odroid_m1s_defconfig | 3 ++ .../package/linux-gadget/Config.in | 28 +++++++++++++ .../package/linux-gadget/linux-gadget.mk | 42 +++++++++++++++++++ 4 files changed, 74 insertions(+) create mode 100644 buildroot-external/package/linux-gadget/Config.in create mode 100644 buildroot-external/package/linux-gadget/linux-gadget.mk diff --git a/buildroot-external/Config.in b/buildroot-external/Config.in index 16cc12b661a..6d2fd705b07 100644 --- a/buildroot-external/Config.in +++ b/buildroot-external/Config.in @@ -9,6 +9,7 @@ source "$BR2_EXTERNAL_HASSOS_PATH/package/os-agent/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/pi-bluetooth/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/qemu-guest-agent/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/lxd-guest-agent/Config.in" +source "$BR2_EXTERNAL_HASSOS_PATH/package/linux-gadget/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/rockchip-blobs/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/rpi-eeprom/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/rpi-rf-mod/Config.in" diff --git a/buildroot-external/configs/odroid_m1s_defconfig b/buildroot-external/configs/odroid_m1s_defconfig index 7ef08f20ba8..df9782d34ce 100644 --- a/buildroot-external/configs/odroid_m1s_defconfig +++ b/buildroot-external/configs/odroid_m1s_defconfig @@ -166,3 +166,6 @@ BR2_PACKAGE_RPI_RF_MOD=y BR2_PACKAGE_RTL88X2BU=y BR2_PACKAGE_HOST_TEMPIO=y BR2_PACKAGE_UDISKS2=y +BR2_PACKAGE_LINUX_GADGET=y +BR2_PACKAGE_LINUX_GADGET_GETTY=y +BR2_PACKAGE_LINUX_GADGET_UMS=y \ No newline at end of file diff --git a/buildroot-external/package/linux-gadget/Config.in b/buildroot-external/package/linux-gadget/Config.in new file mode 100644 index 00000000000..39c3c1e9e90 --- /dev/null +++ b/buildroot-external/package/linux-gadget/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_LINUX_GADGET + bool "Activate CDC UMS gadget" + depends on BR2_LINUX_KERNEL + help + Activate linux gadgets for CDC console and UMS + +if BR2_PACKAGE_LINUX_GADGET + +config BR2_PACKAGE_LINUX_GADGET_GETTY + bool "CDC-ACM Getty" + help + Activate getty console on OTG port + +config BR2_PACKAGE_LINUX_GADGET_UMS + bool "UMS Gadget" + help + Activate UMS gadget on OTG port +if BR2_PACKAGE_LINUX_GADGET_UMS + +config BR2_PACKAGE_LINUX_GADGET_UMS_LUN + string "UMS LUN" + default "/dev/mmcblk0" + help + LUN backing file for UMS gadget + +endif + +endif diff --git a/buildroot-external/package/linux-gadget/linux-gadget.mk b/buildroot-external/package/linux-gadget/linux-gadget.mk new file mode 100644 index 00000000000..aabe0a9862e --- /dev/null +++ b/buildroot-external/package/linux-gadget/linux-gadget.mk @@ -0,0 +1,42 @@ +LINUX_GADGET_VERSION = 0.99.0 +LINUX_GADGET_LICENSE = Apache License 2.0 +LINUX_GADGET_LICENSE_FILES = $(BR2_EXTERNAL_HASSOS_PATH)/../LICENSE +LINUX_GADGET_SITE = $(BR2_EXTERNAL_HASSOS_PATH)/package/linux-gadget +LINUX_GADGET_SITE_METHOD = local + +ifneq ($(BR2_PACKAGE_LINUX_GADGET_GETTY),y) +LINUX_GADGET_MOD = "g_mass_storage" +else ifneq ($(BR2_PACKAGE_LINUX_GADGET_UMS),y) +LINUX_GADGET_MOD = "g_serial" +else +LINUX_GADGET_MOD = "g_acm_ms" +endif + +ifeq ($(BR2_PACKAGE_LINUX_GADGET_UMS),y) +LINUX_GADGET_OPT = "file=$(BR2_PACKAGE_LINUX_GADGET_UMS_LUN)" +endif + +define LINUX_GADGET_BUILD_CMDS + echo $(LINUX_GADGET_MOD) > $(@D)/gadget.conf + if [[ -n $(LINUX_GADGET_OPT) ]]; then \ + echo $(LINUX_GADGET_OPT) > $(@D)/gadget_opt.conf; \ + fi +endef + +define LINUX_GADGET_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/gadget.conf \ + $(TARGET_DIR)/etc/modules-load.d/gadget.conf + + if [ "$(BR2_PACKAGE_LINUX_GADGET_GETTY)" = "y" ]; then \ + $(INSTALL) -d $(TARGET_DIR)/etc/systemd/system/getty.target.wants; \ + ln -fs "/usr/lib/systemd/system/serial-getty@.service" \ + "$(TARGET_DIR)/etc/systemd/system/getty.target.wants/serial-getty@ttyGS0.service"; \ + fi + + if [[ -n $(LINUX_GADGET_OPT) ]]; then \ + $(INSTALL) -m 0644 -D $(@D)/gadget_opt.conf \ + $(TARGET_DIR)/etc/modprobe.d/gadget.conf; \ + fi +endef + +$(eval $(generic-package)) From 0319f0758dbc895c1b881ec0725db1f29528fbb6 Mon Sep 17 00:00:00 2001 From: Tim Lunn Date: Mon, 12 Feb 2024 22:24:55 +1100 Subject: [PATCH 3/3] Fix ordering of options in odroid_m1s_defconfig --- buildroot-external/configs/odroid_m1s_defconfig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/buildroot-external/configs/odroid_m1s_defconfig b/buildroot-external/configs/odroid_m1s_defconfig index df9782d34ce..9f41d3c0c9d 100644 --- a/buildroot-external/configs/odroid_m1s_defconfig +++ b/buildroot-external/configs/odroid_m1s_defconfig @@ -158,6 +158,9 @@ BR2_PACKAGE_HASSIO_ARCH="aarch64" BR2_PACKAGE_HASSIO_MACHINE="odroid-m1" BR2_PACKAGE_OS_AGENT=y BR2_PACKAGE_OS_AGENT_BOARD="OdroidM1S" +BR2_PACKAGE_LINUX_GADGET=y +BR2_PACKAGE_LINUX_GADGET_GETTY=y +BR2_PACKAGE_LINUX_GADGET_UMS=y BR2_PACKAGE_ROCKCHIP_BLOBS=y BR2_PACKAGE_ROCKCHIP_BLOBS_VERSION="b4558da0860ca48bf1a571dd33ccba580b9abe23" BR2_PACKAGE_ROCKCHIP_BLOBS_ATF="bin/rk35/rk3568_bl31_v1.43.elf" @@ -166,6 +169,3 @@ BR2_PACKAGE_RPI_RF_MOD=y BR2_PACKAGE_RTL88X2BU=y BR2_PACKAGE_HOST_TEMPIO=y BR2_PACKAGE_UDISKS2=y -BR2_PACKAGE_LINUX_GADGET=y -BR2_PACKAGE_LINUX_GADGET_GETTY=y -BR2_PACKAGE_LINUX_GADGET_UMS=y \ No newline at end of file