mirror of
https://github.com/home-assistant/operating-system.git
synced 2025-07-27 15:06:29 +00:00
Support for RPI-RF-MOD/HM-MOD-RPI-PCB for HomeMatic/homematicIP communication (#1266)
* add eq3_char_loop package (eQ-3 char loopback kernel module) * add generic_raw_uart package (low-latency raw UART kernel driver) * add rpi-rf-mod package * add device tree overlay support for RPI-RF-MOD/HM-MOD-RPI-PCB on Raspberry Pi * enable GPIOLIB and GPIO_SYSFS required for RPI-RF-MOD/HM-MOD-RPI-PCB support. * add basic RPI-RF-MOD/HM-MOD-RPI-PCB support for ASUS Tinker Board * add device tree overlay support for ASUS Tinker Board and add haos-config.txt loading support to U-Boot boot script
This commit is contained in:
parent
9c6cb6e1f0
commit
0eef6473ba
@ -8,3 +8,6 @@ source "$BR2_EXTERNAL_HASSOS_PATH/package/rpi-eeprom/Config.in"
|
|||||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/rtl8812au/Config.in"
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/rtl8812au/Config.in"
|
||||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/os-agent/Config.in"
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/os-agent/Config.in"
|
||||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/udisks2/Config.in"
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/udisks2/Config.in"
|
||||||
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/eq3_char_loop/Config.in"
|
||||||
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/generic_raw_uart/Config.in"
|
||||||
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/rpi-rf-mod/Config.in"
|
||||||
|
@ -10,6 +10,10 @@ function hassos_pre_image() {
|
|||||||
"${BINARIES_DIR}/rk3288-tinker.dtb" \
|
"${BINARIES_DIR}/rk3288-tinker.dtb" \
|
||||||
"${BINARIES_DIR}/rk3288-tinker-s.dtb"
|
"${BINARIES_DIR}/rk3288-tinker-s.dtb"
|
||||||
|
|
||||||
|
mkdir -p "${BOOT_DATA}/overlays"
|
||||||
|
cp "${BINARIES_DIR}"/*.dtbo "${BOOT_DATA}/overlays/"
|
||||||
|
cp "${BOARD_DIR}/boot-env.txt" "${BOOT_DATA}/haos-config.txt"
|
||||||
|
|
||||||
echo "console=tty1" > "${BOOT_DATA}/cmdline.txt"
|
echo "console=tty1" > "${BOOT_DATA}/cmdline.txt"
|
||||||
|
|
||||||
# SPL
|
# SPL
|
||||||
|
2
buildroot-external/board/asus/tinker/boot-env.txt
Normal file
2
buildroot-external/board/asus/tinker/boot-env.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# Uncomment this to enable GPIO support for RPI-RF-MOD/HM-MOD-RPI-PCB
|
||||||
|
#overlays=rpi-rf-mod
|
@ -23,14 +23,37 @@ setenv bootargs_hassos "zram.enabled=1 zram.num_devices=3 apparmor=1 security=ap
|
|||||||
setenv bootargs_a "root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd rootfstype=squashfs ro rootwait"
|
setenv bootargs_a "root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd rootfstype=squashfs ro rootwait"
|
||||||
setenv bootargs_b "root=PARTUUID=a3ec664e-32ce-4665-95ea-7ae90ce9aa20 rootfstype=squashfs ro rootwait"
|
setenv bootargs_b "root=PARTUUID=a3ec664e-32ce-4665-95ea-7ae90ce9aa20 rootfstype=squashfs ro rootwait"
|
||||||
|
|
||||||
|
# Load environment from haos-config.txt
|
||||||
|
if test -e mmc ${devnum}:1 haos-config.txt; then
|
||||||
|
fatload mmc ${devnum}:1 ${ramdisk_addr_r} haos-config.txt
|
||||||
|
env import -t ${ramdisk_addr_r} ${filesize}
|
||||||
|
fi
|
||||||
|
|
||||||
# Load extraargs
|
# Load extraargs
|
||||||
fileenv mmc ${devnum}:1 ${ramdisk_addr_r} cmdline.txt cmdline
|
fileenv mmc ${devnum}:1 ${ramdisk_addr_r} cmdline.txt cmdline
|
||||||
|
|
||||||
# Load device tree
|
# Load device tree
|
||||||
if test "$devnum" = "0"; then
|
if test "$devnum" = "0"; then
|
||||||
fatload mmc ${devnum}:1 ${fdt_addr_r} rk3288-tinker-s.dtb
|
setenv fdtfile "rk3288-tinker-s.dtb"
|
||||||
else
|
else
|
||||||
fatload mmc ${devnum}:1 ${fdt_addr_r} rk3288-tinker.dtb
|
setenv fdtfile "rk3288-tinker.dtb"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Loading standard device tree ${fdtfile}"
|
||||||
|
fatload mmc ${devnum}:1 ${fdt_addr_r} ${fdtfile}
|
||||||
|
fdt addr ${fdt_addr_r}
|
||||||
|
|
||||||
|
# load dt overlays
|
||||||
|
fdt resize 65536
|
||||||
|
for overlay_file in ${overlays}; do
|
||||||
|
if fatload mmc ${devnum}:1 ${ramdisk_addr_r} overlays/${overlay_file}.dtbo; then
|
||||||
|
echo "Applying kernel provided DT overlay ${overlay_file}.dtbo"
|
||||||
|
fdt apply ${ramdisk_addr_r} || setenv overlay_error "true"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if test "${overlay_error}" = "true"; then
|
||||||
|
echo "Error applying DT overlays, restoring original DT"
|
||||||
|
fatload mmc ${devnum}:1 ${fdt_addr_r} ${fdtfile}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
setenv bootargs
|
setenv bootargs
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
# CONFIG_USB_STORAGE is not set
|
# CONFIG_USB_STORAGE is not set
|
||||||
# CONFIG_DOS_PARTITION is not set
|
# CONFIG_DOS_PARTITION is not set
|
||||||
|
CONFIG_OF_LIBFDT_OVERLAY=y
|
||||||
|
@ -60,6 +60,12 @@ kernel=u-boot.bin
|
|||||||
# Uncomment this to enable the lirc-rpi module
|
# Uncomment this to enable the lirc-rpi module
|
||||||
#dtoverlay=lirc-rpi
|
#dtoverlay=lirc-rpi
|
||||||
|
|
||||||
|
# Uncomment this to enable GPIO support for RPI-RF-MOD/HM-MOD-RPI-PCB
|
||||||
|
#enable_uart=1
|
||||||
|
#dtparam=i2c_arm=on
|
||||||
|
#dtoverlay=miniuart-bt
|
||||||
|
#dtoverlay=rpi-rf-mod
|
||||||
|
|
||||||
# Additional overlays and parameters are documented /boot/overlays/README
|
# Additional overlays and parameters are documented /boot/overlays/README
|
||||||
|
|
||||||
# Enable audio (loads snd_bcm2835)
|
# Enable audio (loads snd_bcm2835)
|
||||||
|
@ -10,6 +10,7 @@ function hassos_pre_image() {
|
|||||||
cp "${BINARIES_DIR}"/*.dtb "${BOOT_DATA}/"
|
cp "${BINARIES_DIR}"/*.dtb "${BOOT_DATA}/"
|
||||||
cp -r "${BINARIES_DIR}/rpi-firmware/"* "${BOOT_DATA}/"
|
cp -r "${BINARIES_DIR}/rpi-firmware/"* "${BOOT_DATA}/"
|
||||||
cp "${BOARD_DIR}/../boot-env.txt" "${BOOT_DATA}/config.txt"
|
cp "${BOARD_DIR}/../boot-env.txt" "${BOOT_DATA}/config.txt"
|
||||||
|
cp "${BINARIES_DIR}"/*.dtbo "${BOOT_DATA}/overlays/"
|
||||||
|
|
||||||
# EEPROM update for Raspberry Pi 4/Compute Module 4
|
# EEPROM update for Raspberry Pi 4/Compute Module 4
|
||||||
if grep -Eq "^BR2_PACKAGE_RPI_EEPROM=y$" "${BR2_CONFIG}"; then
|
if grep -Eq "^BR2_PACKAGE_RPI_EEPROM=y$" "${BR2_CONFIG}"; then
|
||||||
|
@ -114,3 +114,4 @@ BR2_PACKAGE_LIBCURL_CURL=y
|
|||||||
BR2_PACKAGE_INTEL_E1000E=y
|
BR2_PACKAGE_INTEL_E1000E=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS=y
|
BR2_PACKAGE_DOSFSTOOLS=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD=y
|
||||||
|
@ -111,3 +111,4 @@ BR2_PACKAGE_HARDKERNEL_BOOT_ODROID_C2=y
|
|||||||
BR2_PACKAGE_DOSFSTOOLS=y
|
BR2_PACKAGE_DOSFSTOOLS=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
||||||
BR2_PACKAGE_RTL8812AU=y
|
BR2_PACKAGE_RTL8812AU=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD=y
|
||||||
|
@ -109,3 +109,4 @@ BR2_PACKAGE_LIBCURL_CURL=y
|
|||||||
BR2_PACKAGE_HARDKERNEL_BOOT=y
|
BR2_PACKAGE_HARDKERNEL_BOOT=y
|
||||||
BR2_PACKAGE_HARDKERNEL_BOOT_ODROID_C4=y
|
BR2_PACKAGE_HARDKERNEL_BOOT_ODROID_C4=y
|
||||||
BR2_PACKAGE_RTL8812AU=y
|
BR2_PACKAGE_RTL8812AU=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD=y
|
||||||
|
@ -111,3 +111,4 @@ BR2_PACKAGE_HARDKERNEL_BOOT_ODROID_N2=y
|
|||||||
BR2_PACKAGE_DOSFSTOOLS=y
|
BR2_PACKAGE_DOSFSTOOLS=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
||||||
BR2_PACKAGE_RTL8812AU=y
|
BR2_PACKAGE_RTL8812AU=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD=y
|
||||||
|
@ -114,3 +114,4 @@ BR2_PACKAGE_HARDKERNEL_BOOT_ODROID_XU4=y
|
|||||||
BR2_PACKAGE_DOSFSTOOLS=y
|
BR2_PACKAGE_DOSFSTOOLS=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
||||||
BR2_PACKAGE_RTL8812AU=y
|
BR2_PACKAGE_RTL8812AU=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD=y
|
||||||
|
@ -115,3 +115,4 @@ BR2_PACKAGE_APPARMOR_PROFILES=y
|
|||||||
BR2_PACKAGE_LIBCURL_CURL=y
|
BR2_PACKAGE_LIBCURL_CURL=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS=y
|
BR2_PACKAGE_DOSFSTOOLS=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD=y
|
||||||
|
@ -108,3 +108,5 @@ BR2_PACKAGE_LIBCURL_CURL=y
|
|||||||
BR2_PACKAGE_BLUETOOTH_BCM43XX=y
|
BR2_PACKAGE_BLUETOOTH_BCM43XX=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS=y
|
BR2_PACKAGE_DOSFSTOOLS=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD_DTS=y
|
||||||
|
@ -109,3 +109,5 @@ BR2_PACKAGE_APPARMOR_PROFILES=y
|
|||||||
BR2_PACKAGE_LIBCURL_CURL=y
|
BR2_PACKAGE_LIBCURL_CURL=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS=y
|
BR2_PACKAGE_DOSFSTOOLS=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD_DTS=y
|
||||||
|
@ -108,3 +108,5 @@ BR2_PACKAGE_LIBCURL_CURL=y
|
|||||||
BR2_PACKAGE_BLUETOOTH_BCM43XX=y
|
BR2_PACKAGE_BLUETOOTH_BCM43XX=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS=y
|
BR2_PACKAGE_DOSFSTOOLS=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD_DTS=y
|
||||||
|
@ -108,3 +108,5 @@ BR2_PACKAGE_LIBCURL_CURL=y
|
|||||||
BR2_PACKAGE_BLUETOOTH_BCM43XX=y
|
BR2_PACKAGE_BLUETOOTH_BCM43XX=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS=y
|
BR2_PACKAGE_DOSFSTOOLS=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD_DTS=y
|
||||||
|
@ -111,3 +111,5 @@ BR2_PACKAGE_LIBCURL_CURL=y
|
|||||||
BR2_PACKAGE_BLUETOOTH_BCM43XX=y
|
BR2_PACKAGE_BLUETOOTH_BCM43XX=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS=y
|
BR2_PACKAGE_DOSFSTOOLS=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD_DTS=y
|
||||||
|
@ -109,3 +109,5 @@ BR2_PACKAGE_LIBCURL_CURL=y
|
|||||||
BR2_PACKAGE_BLUETOOTH_BCM43XX=y
|
BR2_PACKAGE_BLUETOOTH_BCM43XX=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS=y
|
BR2_PACKAGE_DOSFSTOOLS=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD_DTS=y
|
||||||
|
@ -109,3 +109,5 @@ BR2_PACKAGE_APPARMOR_PROFILES=y
|
|||||||
BR2_PACKAGE_LIBCURL_CURL=y
|
BR2_PACKAGE_LIBCURL_CURL=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS=y
|
BR2_PACKAGE_DOSFSTOOLS=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD_DTS=y
|
||||||
|
@ -31,6 +31,7 @@ BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hasso
|
|||||||
BR2_LINUX_KERNEL_LZ4=y
|
BR2_LINUX_KERNEL_LZ4=y
|
||||||
BR2_LINUX_KERNEL_DTS_SUPPORT=y
|
BR2_LINUX_KERNEL_DTS_SUPPORT=y
|
||||||
BR2_LINUX_KERNEL_INTREE_DTS_NAME="rk3288-tinker rk3288-tinker-s"
|
BR2_LINUX_KERNEL_INTREE_DTS_NAME="rk3288-tinker rk3288-tinker-s"
|
||||||
|
BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y
|
||||||
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
|
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
|
||||||
BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y
|
BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y
|
||||||
BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config"
|
BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config"
|
||||||
@ -113,3 +114,6 @@ BR2_PACKAGE_LIBCURL_CURL=y
|
|||||||
BR2_PACKAGE_BLUETOOTH_RTL8723=y
|
BR2_PACKAGE_BLUETOOTH_RTL8723=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS=y
|
BR2_PACKAGE_DOSFSTOOLS=y
|
||||||
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD_DTS=y
|
||||||
|
BR2_PACKAGE_RPI_RF_MOD_DTS_TINKER=y
|
||||||
|
@ -156,6 +156,10 @@ CONFIG_SND_HDA_CODEC_ANALOG=m
|
|||||||
CONFIG_SND_HDA_CODEC_VIA=m
|
CONFIG_SND_HDA_CODEC_VIA=m
|
||||||
CONFIG_SND_HDA_CODEC_HDMI=m
|
CONFIG_SND_HDA_CODEC_HDMI=m
|
||||||
|
|
||||||
|
# GPIO support
|
||||||
|
CONFIG_GPIOLIB=y
|
||||||
|
CONFIG_GPIO_SYSFS=y
|
||||||
|
|
||||||
# Can Bus support
|
# Can Bus support
|
||||||
CONFIG_CAN=m
|
CONFIG_CAN=m
|
||||||
CONFIG_CAN_RAW=m
|
CONFIG_CAN_RAW=m
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
--- ./KernelDrivers/Makefile.orig 2021-04-02 17:01:07.029932165 +0200
|
||||||
|
+++ ./KernelDrivers/Makefile 2020-06-04 14:36:10.188174788 +0200
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+obj-m += eq3_char_loop.o
|
109
buildroot-external/package/eq3_char_loop/0002-version1_1.patch
Normal file
109
buildroot-external/package/eq3_char_loop/0002-version1_1.patch
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
--- ./KernelDrivers/eq3_char_loop.c.orig 2017-05-14 22:57:19.109181928 +0200
|
||||||
|
+++ ./KernelDrivers/eq3_char_loop.c 2020-06-04 14:36:10.188174788 +0200
|
||||||
|
@@ -48,8 +48,8 @@
|
||||||
|
/* Use 'L' as magic number */
|
||||||
|
#define EQ3LOOP_IOC_MAGIC 'L'
|
||||||
|
|
||||||
|
-#define EQ3LOOP_IOCSCREATESLAVE _IOW(EQ3LOOP_IOC_MAGIC, 1, unsigned long)
|
||||||
|
-#define EQ3LOOP_IOCGEVENTS _IOR(EQ3LOOP_IOC_MAGIC, 2, unsigned long)
|
||||||
|
+#define EQ3LOOP_IOCSCREATESLAVE _IOW(EQ3LOOP_IOC_MAGIC, 1, uint32_t)
|
||||||
|
+#define EQ3LOOP_IOCGEVENTS _IOR(EQ3LOOP_IOC_MAGIC, 2, uint32_t)
|
||||||
|
|
||||||
|
#define EVENT_BIT_SLAVE_OPENED 0
|
||||||
|
#define EVENT_BIT_SLAVE_CLOSED 1
|
||||||
|
@@ -62,6 +62,12 @@
|
||||||
|
|
||||||
|
#define DUMP_READWRITE 0
|
||||||
|
|
||||||
|
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0))
|
||||||
|
+ #define _access_ok(__type, __addr, __size) access_ok(__addr, __size)
|
||||||
|
+#else
|
||||||
|
+ #define _access_ok(__type, __addr, __size) access_ok(__type, __addr, __size)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
struct eq3loop_channel_data
|
||||||
|
{
|
||||||
|
struct circ_buf master2slave_buf;
|
||||||
|
@@ -353,7 +359,7 @@
|
||||||
|
{
|
||||||
|
ret=-EFAULT;
|
||||||
|
count_to_end = CIRC_SPACE( head, channel->master2slave_buf.tail, BUFSIZE);
|
||||||
|
- printk( KERN_ERR EQ3LOOP_DRIVER_NAME ": eq3loop_write_master() %s: not enought space in the buffers. free space = %i, required space = %i", channel->name,count_to_end,count );
|
||||||
|
+ printk( KERN_ERR EQ3LOOP_DRIVER_NAME ": eq3loop_write_master() %s: not enough space in buffers. free space = %zu, required space = %zu", channel->name,count_to_end,count );
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
/* ok, space is free, write something */
|
||||||
|
@@ -389,7 +395,7 @@
|
||||||
|
up (&channel->sem);
|
||||||
|
if(ret < 0)
|
||||||
|
{
|
||||||
|
- printk( KERN_INFO EQ3LOOP_DRIVER_NAME ": eq3loop_write_master() retrun error:");
|
||||||
|
+ printk( KERN_INFO EQ3LOOP_DRIVER_NAME ": eq3loop_write_master() return error: %d", ret);
|
||||||
|
}
|
||||||
|
if( ret > 0 || CIRC_CNT(channel->master2slave_buf.head,channel->master2slave_buf.tail,BUFSIZE) )
|
||||||
|
{
|
||||||
|
@@ -456,9 +462,9 @@
|
||||||
|
* "write" is reversed
|
||||||
|
*/
|
||||||
|
if (_IOC_DIR(cmd) & _IOC_READ)
|
||||||
|
- ret = !access_ok(VERIFY_WRITE, (void *)arg, _IOC_SIZE(cmd));
|
||||||
|
+ ret = !_access_ok(VERIFY_WRITE, (void *)arg, _IOC_SIZE(cmd));
|
||||||
|
else if (_IOC_DIR(cmd) & _IOC_WRITE)
|
||||||
|
- ret = !access_ok(VERIFY_READ, (void *)arg, _IOC_SIZE(cmd));
|
||||||
|
+ ret = !_access_ok(VERIFY_READ, (void *)arg, _IOC_SIZE(cmd));
|
||||||
|
if (ret) return -EFAULT;
|
||||||
|
|
||||||
|
switch(cmd) {
|
||||||
|
@@ -500,7 +506,7 @@
|
||||||
|
switch(cmd) {
|
||||||
|
|
||||||
|
case TCGETS:
|
||||||
|
- if( access_ok(VERIFY_READ, (void *)arg, sizeof(struct termios) ) )
|
||||||
|
+ if( _access_ok(VERIFY_READ, (void *)arg, sizeof(struct termios) ) )
|
||||||
|
{
|
||||||
|
ret = copy_to_user( (void*)arg, &channel->termios, sizeof(struct termios) );
|
||||||
|
} else {
|
||||||
|
@@ -508,7 +514,7 @@
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case TCSETS:
|
||||||
|
- if( access_ok(VERIFY_WRITE, (void *)arg, sizeof(struct termios) ) )
|
||||||
|
+ if( _access_ok(VERIFY_WRITE, (void *)arg, sizeof(struct termios) ) )
|
||||||
|
{
|
||||||
|
ret = copy_from_user( &channel->termios, (void*)arg, sizeof(struct termios) );
|
||||||
|
} else {
|
||||||
|
@@ -533,6 +539,12 @@
|
||||||
|
break;
|
||||||
|
case TIOCMSET:
|
||||||
|
break;
|
||||||
|
+ case TIOCSERGETLSR:
|
||||||
|
+ ret = -ENOIOCTLCMD;
|
||||||
|
+ break;
|
||||||
|
+ case TIOCGICOUNT:
|
||||||
|
+ ret = -ENOIOCTLCMD;
|
||||||
|
+ break;
|
||||||
|
default:
|
||||||
|
ret = -ENOTTY;
|
||||||
|
break;
|
||||||
|
@@ -541,6 +553,7 @@
|
||||||
|
if( ret == -ENOTTY )
|
||||||
|
{
|
||||||
|
printk( KERN_NOTICE EQ3LOOP_DRIVER_NAME ": eq3loop_ioctl_slave() %s: unhandled ioctl 0x%04X\n", channel->name, cmd );
|
||||||
|
+ ret = -ENOIOCTLCMD;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
@@ -908,6 +921,7 @@
|
||||||
|
.ioctl = eq3loop_ioctl,
|
||||||
|
#else
|
||||||
|
.unlocked_ioctl = eq3loop_ioctl,
|
||||||
|
+ .compat_ioctl = eq3loop_ioctl,
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -979,4 +993,4 @@
|
||||||
|
module_exit(eq3loop_exit);
|
||||||
|
MODULE_DESCRIPTION("eQ-3 IPC loopback char driver");
|
||||||
|
MODULE_LICENSE("GPL");
|
||||||
|
-
|
||||||
|
+MODULE_VERSION("1.1");
|
2
buildroot-external/package/eq3_char_loop/Config.in
Normal file
2
buildroot-external/package/eq3_char_loop/Config.in
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
config BR2_PACKAGE_EQ3_CHAR_LOOP
|
||||||
|
bool "Support for eq3 char loop kernel module"
|
18
buildroot-external/package/eq3_char_loop/eq3_char_loop.mk
Normal file
18
buildroot-external/package/eq3_char_loop/eq3_char_loop.mk
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#############################################################
|
||||||
|
#
|
||||||
|
# eQ-3 char loopback kernel module for HomeMatic/homematicIP
|
||||||
|
# dual stack implementations for the RPI-RF-MOD/HM-MOD-RPI-PCB
|
||||||
|
#
|
||||||
|
# Copyright (c) 2015 by eQ-3 Entwicklung GmbH
|
||||||
|
# https://github.com/eq-3/occu/tree/master/KernelDrivers
|
||||||
|
#
|
||||||
|
#############################################################
|
||||||
|
|
||||||
|
EQ3_CHAR_LOOP_VERSION = 8cb51174c2bc8c4b33df50a96b82c90e8092f79c
|
||||||
|
EQ3_CHAR_LOOP_SITE = $(call github,eq-3,occu,$(EQ3_CHAR_LOOP_VERSION))
|
||||||
|
EQ3_CHAR_LOOP_LICENSE = GPL2
|
||||||
|
#EQ3_CHAR_LOOP_LICENSE_FILES = LICENSE
|
||||||
|
EQ3_CHAR_LOOP_MODULE_SUBDIRS = KernelDrivers
|
||||||
|
|
||||||
|
$(eval $(kernel-module))
|
||||||
|
$(eval $(generic-package))
|
@ -0,0 +1,39 @@
|
|||||||
|
--- ./kernel/Makefile.orig 2020-12-14 13:09:44.406823210 +0100
|
||||||
|
+++ ./kernel/Makefile 2021-01-14 11:37:37.524474444 +0100
|
||||||
|
@@ -1,17 +1,26 @@
|
||||||
|
-obj-m += eq3_char_loop.o
|
||||||
|
-obj-m += plat_eq3ccu2.o
|
||||||
|
+#obj-m += eq3_char_loop.o
|
||||||
|
+#obj-m += plat_eq3ccu2.o
|
||||||
|
obj-m += generic_raw_uart.o
|
||||||
|
+ifeq ($(CONFIG_ARCH_BCM2835),y)
|
||||||
|
obj-m += pl011_raw_uart.o
|
||||||
|
+endif
|
||||||
|
+ifeq ($(CONFIG_ARCH_ROCKCHIP),y)
|
||||||
|
obj-m += dw_apb_raw_uart.o
|
||||||
|
+endif
|
||||||
|
+ifeq ($(CONFIG_ARCH_MESON64_ODROIDC2),y)
|
||||||
|
obj-m += meson_raw_uart.o
|
||||||
|
-obj-m += fake_hmrf.o
|
||||||
|
+endif
|
||||||
|
+#obj-m += fake_hmrf.o
|
||||||
|
obj-m += rpi_rf_mod_led.o
|
||||||
|
obj-m += dummy_rx8130.o
|
||||||
|
-obj-m += led_trigger_timer.o
|
||||||
|
+#obj-m += led_trigger_timer.o
|
||||||
|
obj-m += hb_rf_usb.o
|
||||||
|
obj-m += hb_rf_usb-2.o
|
||||||
|
obj-m += hb_rf_eth.o
|
||||||
|
-obj-m += rtc-rx8130.o
|
||||||
|
+#obj-m += rtc-rx8130.o
|
||||||
|
+
|
||||||
|
+# disable
|
||||||
|
+ifeq (0,1)
|
||||||
|
|
||||||
|
ifeq ($(KERNELRELEASE),)
|
||||||
|
KERNELRELEASE := $(shell uname -r)
|
||||||
|
@@ -32,3 +41,4 @@
|
||||||
|
clean:
|
||||||
|
$(MAKE) -C $(KERNEL_DIR) M=$(PWD) clean
|
||||||
|
|
||||||
|
+endif
|
7
buildroot-external/package/generic_raw_uart/Config.in
Normal file
7
buildroot-external/package/generic_raw_uart/Config.in
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
config BR2_PACKAGE_GENERIC_RAW_UART
|
||||||
|
bool "Support for Generic RAW UART kernel module"
|
||||||
|
help
|
||||||
|
Adds support for generic-raw-uart kernel module
|
||||||
|
|
||||||
|
Alexander Reinert <alex@areinert.de>
|
||||||
|
https://github.com/alexreinert/piVCCU/tree/master/kernel
|
@ -0,0 +1,23 @@
|
|||||||
|
#############################################################
|
||||||
|
#
|
||||||
|
# Generic raw uart kernel module for low-latency uart
|
||||||
|
# communication with a RPI-RF-MOD/HM-MOD-RPI-PCB
|
||||||
|
#
|
||||||
|
# Copyright (c) 2021 Alexander Reinert
|
||||||
|
# https://github.com/alexreinert/piVCCU/tree/master/kernel
|
||||||
|
#
|
||||||
|
# Uses parts of bcm2835_raw_uart.c
|
||||||
|
# Copyright (c) 2015 eQ-3 Entwicklung GmbH
|
||||||
|
# https://github.com/eq-3/occu/tree/master/KernelDrivers
|
||||||
|
# https://github.com/jens-maus/RaspberryMatic/tree/master/buildroot-external/package/bcm2835_raw_uart
|
||||||
|
#
|
||||||
|
#############################################################
|
||||||
|
|
||||||
|
GENERIC_RAW_UART_VERSION = dab76ddd1d568cc4925dc778e43d70fccffdc0e8
|
||||||
|
GENERIC_RAW_UART_SITE = $(call github,alexreinert,piVCCU,$(GENERIC_RAW_UART_VERSION))
|
||||||
|
GENERIC_RAW_UART_LICENSE = GPL2
|
||||||
|
#GENERIC_RAW_UART_LICENSE_FILES = LICENSE
|
||||||
|
GENERIC_RAW_UART_MODULE_SUBDIRS = kernel
|
||||||
|
|
||||||
|
$(eval $(kernel-module))
|
||||||
|
$(eval $(generic-package))
|
31
buildroot-external/package/rpi-rf-mod/Config.in
Normal file
31
buildroot-external/package/rpi-rf-mod/Config.in
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
config BR2_PACKAGE_RPI_RF_MOD
|
||||||
|
select BR2_PACKAGE_EQ3_CHAR_LOOP
|
||||||
|
select BR2_PACKAGE_GENERIC_RAW_UART
|
||||||
|
bool "Support for RPI-RF-MOD/HM-MOD-RPI-PCB GPIO HAT"
|
||||||
|
|
||||||
|
if BR2_PACKAGE_RPI_RF_MOD
|
||||||
|
|
||||||
|
config BR2_PACKAGE_RPI_RF_MOD_DTS
|
||||||
|
bool "Compile Device Tree Overlay"
|
||||||
|
|
||||||
|
if BR2_PACKAGE_RPI_RF_MOD_DTS
|
||||||
|
|
||||||
|
choice
|
||||||
|
prompt "For Target"
|
||||||
|
default BR2_PACKAGE_RPI_RF_MOD_DTS_RPI
|
||||||
|
|
||||||
|
config BR2_PACKAGE_RPI_RF_MOD_DTS_RPI
|
||||||
|
bool "RaspberryPi"
|
||||||
|
help
|
||||||
|
For the RaspberryPi
|
||||||
|
|
||||||
|
config BR2_PACKAGE_RPI_RF_MOD_DTS_TINKER
|
||||||
|
bool "ASUS Tinkerboard"
|
||||||
|
help
|
||||||
|
For the ASUS Tinkerboard
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
40
buildroot-external/package/rpi-rf-mod/rpi-rf-mod.mk
Normal file
40
buildroot-external/package/rpi-rf-mod/rpi-rf-mod.mk
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
#############################################################
|
||||||
|
#
|
||||||
|
# Meta package for RPI-RF-MOD/HM-MOD-RPI-PCB device support
|
||||||
|
# for HomeMatic/homematicIP connectivity.
|
||||||
|
#
|
||||||
|
# This includes compiling of required device tree overlays for
|
||||||
|
# selected platforms
|
||||||
|
#
|
||||||
|
# Copyright (c) 2018-2021 Jens Maus <mail@jens-maus.de>
|
||||||
|
# https://github.com/jens-maus/RaspberryMatic/tree/master/buildroot-external/package/rpi-rf-mod
|
||||||
|
#
|
||||||
|
#############################################################
|
||||||
|
|
||||||
|
RPI_RF_MOD_VERSION = 97bd31203445d14e3d97e1d6e7a0bcf93b400c2e
|
||||||
|
RPI_RF_MOD_SITE = $(call github,jens-maus,RaspberryMatic,$(RPI_RF_MOD_VERSION))
|
||||||
|
RPI_RF_MOD_LICENSE = Apache-2.0
|
||||||
|
RPI_RF_MOD_DEPENDENCIES = host-dtc
|
||||||
|
#RPI_RF_MOD_LICENSE_FILES = LICENSE
|
||||||
|
|
||||||
|
ifeq ($(BR2_PACKAGE_RPI_RF_MOD_DTS_RPI),y)
|
||||||
|
# RaspberryPi DTS file
|
||||||
|
RPI_RF_MOD_DTS_FILE = rpi-rf-mod
|
||||||
|
else ifeq ($(BR2_PACKAGE_RPI_RF_MOD_DTS_TINKER),y)
|
||||||
|
# ASUS Tinkerboard DTS file
|
||||||
|
RPI_RF_MOD_DTS_FILE = rpi-rf-mod-tinker
|
||||||
|
endif
|
||||||
|
|
||||||
|
define RPI_RF_MOD_BUILD_CMDS
|
||||||
|
if [[ -n "$(RPI_RF_MOD_DTS_FILE)" ]]; then \
|
||||||
|
$(HOST_DIR)/bin/dtc -@ -I dts -O dtb -W no-unit_address_vs_reg -o $(@D)/buildroot-external/package/rpi-rf-mod/dts/rpi-rf-mod.dtbo $(@D)/buildroot-external/package/rpi-rf-mod/dts/$(RPI_RF_MOD_DTS_FILE).dts; \
|
||||||
|
fi
|
||||||
|
endef
|
||||||
|
|
||||||
|
define RPI_RF_MOD_INSTALL_TARGET_CMDS
|
||||||
|
if [[ -n "$(RPI_RF_MOD_DTS_FILE)" ]]; then \
|
||||||
|
$(INSTALL) -D -m 0644 $(@D)/buildroot-external/package/rpi-rf-mod/dts/rpi-rf-mod.dtbo $(BINARIES_DIR)/; \
|
||||||
|
fi
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(generic-package))
|
Loading…
x
Reference in New Issue
Block a user