From 1f92c5d4bc0a691d1984ce9656f475490685837d Mon Sep 17 00:00:00 2001 From: imi415 Date: Sun, 20 Jun 2021 20:56:11 +0800 Subject: [PATCH] Added PCF8574A overlay for RaspberryPi 4B, added libconfig. --- .../overlays/pcf8574a.dts | 48 +++++++++++++++++++ .../raspberrypi-4b-system-agent/post-image.sh | 12 +++++ .../system_agent_orangepi_pc_defconfig | 1 + .../system_agent_pine64_plus_defconfig | 1 + .../system_agent_raspberrypi_4b_defconfig | 6 ++- 5 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 external_tree/board/iminc/raspberrypi-4b-system-agent/overlays/pcf8574a.dts diff --git a/external_tree/board/iminc/raspberrypi-4b-system-agent/overlays/pcf8574a.dts b/external_tree/board/iminc/raspberrypi-4b-system-agent/overlays/pcf8574a.dts new file mode 100644 index 0000000..691a533 --- /dev/null +++ b/external_tree/board/iminc/raspberrypi-4b-system-agent/overlays/pcf8574a.dts @@ -0,0 +1,48 @@ +// Device tree overlay for I2C connected Goodix gt9271 multiple touch controller +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2835"; + + fragment@0 { + target = <&gpio>; + __overlay__ { + pcf8574a_pins: pcf8574a_pins { + brcm,pins = <4>; // interrupt and reset + brcm,function = <0>; // in + brcm,pull = <2>; // pull-up + }; + }; + }; + + fragment@1 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + pcf8574a: pcf8574a@3f { + compatible = "nxp,pcf8574a"; + reg = <0x3f>; + #gpio-cells = <2>; + gpio-controller; + pinctrl-names = "default"; + pinctrl-0 = <&pcf8574a_pins>; + interrupt-parent = <&gpio>; + interrupt-controller; + #interrupt-cells = <2>; + interrupts = <4>; // high-to-low edge triggered + irq-gpios = <&gpio 4>; // Pin7 on GPIO header + }; + }; + }; + + __overrides__ { + addr = <&pcf8574a>,"reg:0"; + interrupt = <&pcf8574a_pins>,"brcm,pins:0", + <&pcf8574a>,"interrupts:0", + <&pcf8574a>,"irq-gpios:4"; + }; +}; diff --git a/external_tree/board/iminc/raspberrypi-4b-system-agent/post-image.sh b/external_tree/board/iminc/raspberrypi-4b-system-agent/post-image.sh index 9dbd98e..78f6e29 100755 --- a/external_tree/board/iminc/raspberrypi-4b-system-agent/post-image.sh +++ b/external_tree/board/iminc/raspberrypi-4b-system-agent/post-image.sh @@ -28,6 +28,16 @@ __EOF__ # enable 64bits support arm_64bit=1 +__EOF__ + fi + ;; + --add-pcf8574a-overlay) + if ! grep -qE '^dtoverlay=pcf8574a' "${BINARIES_DIR}/rpi-firmware/config.txt"; then + echo "Adding 'dtoverlay=pcf8574a' to config.txt." + cat << __EOF__ >> "${BINARIES_DIR}/rpi-firmware/config.txt" + +# Add PCF8574A GPIO expander +dtoverlay=pcf8574a,addr=0x3f,interrupt=0x22 __EOF__ fi ;; @@ -50,6 +60,8 @@ ROOTPATH_TMP="$(mktemp -d)" rm -rf "${GENIMAGE_TMP}" +mv "${BINARIES_DIR}/pcf8574a.dtb" "${BINARIES_DIR}/rpi-firmware/overlays/pcf8574a.dtbo" + genimage \ --rootpath "${ROOTPATH_TMP}" \ --tmppath "${GENIMAGE_TMP}" \ diff --git a/external_tree/configs/system_agent_orangepi_pc_defconfig b/external_tree/configs/system_agent_orangepi_pc_defconfig index 3a81d55..81960ed 100644 --- a/external_tree/configs/system_agent_orangepi_pc_defconfig +++ b/external_tree/configs/system_agent_orangepi_pc_defconfig @@ -50,6 +50,7 @@ BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE=y BR2_PACKAGE_UBOOT_TOOLS_DUMPIMAGE=y BR2_PACKAGE_LIBOPENSSL_BIN=y BR2_PACKAGE_LIBOPENSSL_ENGINES=y +BR2_PACKAGE_LIBCONFIG=y BR2_PACKAGE_LIBGPIOD=y BR2_PACKAGE_LIBGPIOD_TOOLS=y BR2_PACKAGE_LIBIIO=y diff --git a/external_tree/configs/system_agent_pine64_plus_defconfig b/external_tree/configs/system_agent_pine64_plus_defconfig index 344cf63..214c6ad 100644 --- a/external_tree/configs/system_agent_pine64_plus_defconfig +++ b/external_tree/configs/system_agent_pine64_plus_defconfig @@ -50,6 +50,7 @@ BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE=y BR2_PACKAGE_UBOOT_TOOLS_DUMPIMAGE=y BR2_PACKAGE_LIBOPENSSL_BIN=y BR2_PACKAGE_LIBOPENSSL_ENGINES=y +BR2_PACKAGE_LIBCONFIG=y BR2_PACKAGE_LIBGPIOD=y BR2_PACKAGE_LIBGPIOD_TOOLS=y BR2_PACKAGE_LIBIIO=y diff --git a/external_tree/configs/system_agent_raspberrypi_4b_defconfig b/external_tree/configs/system_agent_raspberrypi_4b_defconfig index 43f97de..acfd873 100644 --- a/external_tree/configs/system_agent_raspberrypi_4b_defconfig +++ b/external_tree/configs/system_agent_raspberrypi_4b_defconfig @@ -23,7 +23,7 @@ BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL_system_agent_PATH)/customizations/users. BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_system_agent_PATH)/customizations/overlay" BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_system_agent_PATH)/board/iminc/raspberrypi-4b-system-agent/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_system_agent_PATH)/board/iminc/raspberrypi-4b-system-agent/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="--add-miniuart-bt-overlay --aarch64" +BR2_ROOTFS_POST_SCRIPT_ARGS="--add-miniuart-bt-overlay --aarch64 --add-pcf8574a-overlay" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,081f560bde7188ca6f40cf297bd55c680e0179c0)/linux-081f560bde7188ca6f40cf297bd55c680e0179c0.tar.gz" @@ -31,6 +31,7 @@ BR2_LINUX_KERNEL_DEFCONFIG="bcm2711" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_system_agent_PATH)/board/iminc/raspberrypi-4b-system-agent/linux.fragment" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2711-rpi-4-b" +BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_system_agent_PATH)/board/iminc/raspberrypi-4b-system-agent/overlays/pcf8574a.dts" BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_PACKAGE_LINUX_TOOLS_CPUPOWER=y BR2_PACKAGE_LINUX_TOOLS_GPIO=y @@ -52,6 +53,7 @@ BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE=y BR2_PACKAGE_UBOOT_TOOLS_DUMPIMAGE=y BR2_PACKAGE_LIBOPENSSL_BIN=y BR2_PACKAGE_LIBOPENSSL_ENGINES=y +BR2_PACKAGE_LIBCONFIG=y BR2_PACKAGE_LIBGPIOD=y BR2_PACKAGE_LIBGPIOD_TOOLS=y BR2_PACKAGE_LIBIIO=y @@ -72,7 +74,7 @@ BR2_PACKAGE_UTIL_LINUX_HWCLOCK=y BR2_PACKAGE_VIM=y BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y -BR2_TARGET_ROOTFS_EXT2_SIZE="128M" +BR2_TARGET_ROOTFS_EXT2_SIZE="256M" # BR2_TARGET_ROOTFS_TAR is not set BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y