Compare commits
11 Commits
c0442cc0e6
...
8f31a41933
Author | SHA1 | Date |
---|---|---|
Bohdan Buinich | 8f31a41933 | |
Bohdan Buinich | 96ae02746b | |
j1nx | b1fb2843e0 | |
j1nx | 91fcb4e1d6 | |
j1nx | a16e44250d | |
j1nx | 5f79bf8820 | |
j1nx | 3a7be3234b | |
j1nx | 61b64f4abc | |
j1nx | 2525c95609 | |
Jan Čermák | b89f5e3322 | |
Jan Čermák | d2059c5531 |
|
@ -6,3 +6,4 @@
|
|||
/release/*.swu
|
||||
/release/*.vdi
|
||||
/logs/*.txt
|
||||
*__pycache__*
|
||||
|
|
3
Makefile
3
Makefile
|
@ -45,6 +45,9 @@ clean:
|
|||
menuconfig:
|
||||
$(MAKE) -C $(BUILDROOT) BR2_EXTERNAL=../$(BUILDROOT_EXTERNAL) menuconfig
|
||||
|
||||
linux-check-dotconfig:
|
||||
$(MAKE) -C $(BUILDROOT) BR2_EXTERNAL=../$(BUILDROOT_EXTERNAL) BR2_CHECK_DOTCONFIG_OPTS="--github-format" linux-check-dotconfig
|
||||
|
||||
linux-menuconfig:
|
||||
$(MAKE) -C $(BUILDROOT) BR2_EXTERNAL=../$(BUILDROOT_EXTERNAL) linux-menuconfig
|
||||
|
||||
|
|
|
@ -136,6 +136,7 @@ endmenu
|
|||
menu "Additional external python modules"
|
||||
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-adafruit-blinka/Config.in"
|
||||
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-adafruit-circuitpython-neopixel/Config.in"
|
||||
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-adafruit-circuitpython-typing/Config.in"
|
||||
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-adafruit-platformdetect/Config.in"
|
||||
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-adafruit-pureio/Config.in"
|
||||
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-adapt-parser/Config.in"
|
||||
|
@ -173,6 +174,7 @@ menu "Additional external python modules"
|
|||
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-google-auth-httplib2/Config.in"
|
||||
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-google-auth/Config.in"
|
||||
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-google-trans-new/Config.in"
|
||||
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-gpiod/Config.in"
|
||||
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-gpsdclient/Config.in"
|
||||
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-gtts/Config.in"
|
||||
source "$BR2_EXTERNAL_OPENVOICEOS_PATH/package/python-gtts_token/Config.in"
|
||||
|
|
|
@ -38,7 +38,7 @@ CONFIG_IWLMVM=m
|
|||
|
||||
CONFIG_WLAN_VENDOR_REALTEK=y
|
||||
CONFIG_RTL_CARDS=m
|
||||
CONFIG_RTL8723BE=y
|
||||
CONFIG_RTL8723BE=m
|
||||
|
||||
CONFIG_BCMA=m
|
||||
|
||||
|
@ -62,6 +62,16 @@ CONFIG_MMC_SDHCI_ACPI=y
|
|||
CONFIG_MMC_SDHCI_PCI=y
|
||||
CONFIG_X86_INTEL_LPSS=y
|
||||
|
||||
CONFIG_SND_HDA=m
|
||||
CONFIG_SND_HDA_CORE=m
|
||||
CONFIG_SND_HDA_GENERIC=m
|
||||
CONFIG_SND_HDA_INTEL=m
|
||||
CONFIG_SND_HDA_I915=y
|
||||
CONFIG_SND_HDA_CODEC_REALTEK=m
|
||||
CONFIG_SND_HDA_CODEC_ANALOG=m
|
||||
CONFIG_SND_HDA_CODEC_VIA=m
|
||||
CONFIG_SND_HDA_CODEC_HDMI=m
|
||||
|
||||
CONFIG_SND_SOC=m
|
||||
|
||||
CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y
|
||||
|
@ -80,7 +90,6 @@ CONFIG_SND_SOC_INTEL_CFL=m
|
|||
CONFIG_SND_SOC_INTEL_CML_H=m
|
||||
CONFIG_SND_SOC_INTEL_CML_LP=m
|
||||
CONFIG_SND_SOC_INTEL_SKYLAKE_FAMILY=m
|
||||
CONFIG_SND_SOC_INTEL_SKYLAKE_SSP_CLK=m
|
||||
CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC=y
|
||||
CONFIG_SND_SOC_INTEL_SKYLAKE_COMMON=m
|
||||
CONFIG_SND_SOC_ACPI_INTEL_MATCH=m
|
||||
|
@ -88,13 +97,8 @@ CONFIG_SND_SOC_INTEL_MACH=y
|
|||
CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES=y
|
||||
CONFIG_SND_SOC_INTEL_HDA_DSP_COMMON=m
|
||||
CONFIG_SND_SOC_INTEL_SOF_MAXIM_COMMON=m
|
||||
CONFIG_SND_SOC_INTEL_HASWELL_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_BDW_RT5650_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_BDW_RT5677_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_BYTCR_RT5651_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_BYTCR_WM5102_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=m
|
||||
|
@ -103,38 +107,16 @@ CONFIG_SND_SOC_INTEL_BYT_CHT_CX2072X_MACH=m
|
|||
CONFIG_SND_SOC_INTEL_BYT_CHT_DA7213_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_BYT_CHT_ES8316_MACH=m
|
||||
# CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH is not set
|
||||
CONFIG_SND_SOC_INTEL_SKL_RT286_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_DA7219_MAX98357A_GENERIC=m
|
||||
CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_COMMON=m
|
||||
CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_BXT_RT298_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_SOF_WM8804_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_KBL_RT5663_MAX98927_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_KBL_RT5663_RT5514_MAX98927_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_KBL_DA7219_MAX98357A_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_KBL_DA7219_MAX98927_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_KBL_RT5660_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_GLK_DA7219_MAX98357A_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_GLK_RT5682_MAX98357A_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_SKL_HDA_DSP_GENERIC_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_SOF_RT5682_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_SOF_CS42L42_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_SOF_PCM512x_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_SOF_ES8336_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_CML_LP_DA7219_MAX98357A_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_SOF_CML_RT1011_RT5682_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_SOF_DA7219_MAX98373_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_EHL_RT5660_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_SOUNDWIRE_SOF_MACH=m
|
||||
CONFIG_SND_SOC_MTK_BTCVSD=m
|
||||
CONFIG_SND_SOC_SOF_TOPLEVEL=y
|
||||
CONFIG_SND_SOC_SOF_PCI_DEV=m
|
||||
CONFIG_SND_SOC_SOF_PCI=m
|
||||
CONFIG_SND_SOC_SOF_ACPI=m
|
||||
CONFIG_SND_SOC_SOF_ACPI_DEV=m
|
||||
# CONFIG_SND_SOC_SOF_DEBUG_PROBES is not set
|
||||
CONFIG_SND_SOC_SOF_DEBUG_PROBES=m
|
||||
CONFIG_SND_SOC_SOF=m
|
||||
CONFIG_SND_SOC_SOF_PROBE_WORK_QUEUE=y
|
||||
CONFIG_SND_SOC_SOF_INTEL_TOPLEVEL=y
|
||||
|
@ -163,8 +145,6 @@ CONFIG_SND_SOC_SOF_HDA_LINK=y
|
|||
CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC=y
|
||||
CONFIG_SND_SOC_SOF_HDA_LINK_BASELINE=m
|
||||
CONFIG_SND_SOC_SOF_HDA=m
|
||||
CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE=m
|
||||
CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE=m
|
||||
CONFIG_SND_SOC_SOF_XTENSA=m
|
||||
|
||||
CONFIG_THINKPAD_ACPI=m
|
||||
|
|
|
@ -1 +1 @@
|
|||
cma=384M mitigations=off snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_compat_alsa=0 dwc_otg.lpm_enable=0 acpi=off cgroup_enable=memory psi=1 usb-storage.quirks=174c:55aa:u,2109:0715:u,152d:0578:u,152d:0579:u,152d:1561:u,174c:0829:u,14b0:0206:u
|
||||
mitigations=off snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_compat_alsa=0 dwc_otg.lpm_enable=0 acpi=off cgroup_enable=memory psi=1 usb-storage.quirks=174c:55aa:u,2109:0715:u,152d:0578:u,152d:0579:u,152d:1561:u,174c:0829:u,14b0:0206:u
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
CONFIG_ARCH_SUPPORTS_ACPI=y
|
||||
CONFIG_ACPI=y
|
||||
CONFIG_ACPI=ACPI
|
||||
|
||||
CONFIG_EFI=y
|
||||
CONFIG_EFI_STUB=y
|
||||
|
@ -25,7 +24,6 @@ CONFIG_VIRTIO_NET=y
|
|||
CONFIG_VIRTIO_BALLOON=m
|
||||
CONFIG_VIRTIO_INPUT=m
|
||||
CONFIG_VIRTIO_BLK=y
|
||||
CONFIG_VIRTIO_BLK_SCSI=y
|
||||
CONFIG_VIRTIO_CONSOLE=m
|
||||
CONFIG_VIRTIO_VSOCKETS=m
|
||||
CONFIG_VIRTIO_MMIO=y
|
||||
|
@ -38,14 +36,9 @@ CONFIG_NVME_HWMON=y
|
|||
|
||||
CONFIG_DRM_VIRTIO_GPU=m
|
||||
|
||||
CONFIG_HYPERVISOR_GUEST=y
|
||||
CONFIG_HYPERV=y
|
||||
CONFIG_HYPERV_UTILS=m
|
||||
CONFIG_HYPERV_BALLOON=m
|
||||
CONFIG_HYPERV_KEYBOARD=m
|
||||
CONFIG_HYPERV_STORAGE=y
|
||||
CONFIG_HYPERV_NET=y
|
||||
CONFIG_HYPERV_VSOCKETS=m
|
||||
CONFIG_PCI_HYPERV=m
|
||||
CONFIG_PCI_HYPERV_INTERFACE=m
|
||||
CONFIG_FB_HYPERV=y
|
||||
CONFIG_HYPERVISOR_GUEST=HYPERVISOR_GUEST
|
||||
|
||||
# Disabling devices that are non commonly used for smart speaker/devices
|
||||
# CONFIG_CDROM is not set
|
||||
# CONFIG_VIDEO_IRS1125 is not set
|
||||
# CONFIG_LEDS_TRIGGER_AUDIO is not set
|
||||
|
|
|
@ -31,7 +31,7 @@ disable_overscan=1
|
|||
display_auto_detect=1
|
||||
|
||||
# Enable DRM VC4 V3D driver and setup the mode
|
||||
dtoverlay=vc4-fkms-v3d
|
||||
dtoverlay=vc4-fkms-v3d,cma-384
|
||||
# dtoverlay=vc4-kms-v3d-pi4
|
||||
# hdmi_drive=2
|
||||
# hdmi_group=2
|
||||
|
|
|
@ -29,7 +29,7 @@ disable_overscan=1
|
|||
display_auto_detect=1
|
||||
|
||||
# Enable DRM VC4 V3D driver and setup the mode
|
||||
dtoverlay=vc4-fkms-v3d
|
||||
dtoverlay=vc4-fkms-v3d,cma-384
|
||||
# dtoverlay=vc4-kms-v3d-pi4
|
||||
# hdmi_drive=2
|
||||
# hdmi_group=2
|
||||
|
|
|
@ -333,3 +333,5 @@ BR2_PACKAGE_USERLAND_TOOLS=y
|
|||
BR2_PACKAGE_VOCALFUSION=y
|
||||
BR2_PACKAGE_WIFI_CONNECT=y
|
||||
BR2_PACKAGE_PYTHON_SMBUS2=y
|
||||
BR2_PACKAGE_PYTHON_ADAFRUIT_BLINKA=y
|
||||
BR2_PACKAGE_PYTHON_GPIOD=y
|
|
@ -333,3 +333,5 @@ BR2_PACKAGE_USERLAND_TOOLS=y
|
|||
BR2_PACKAGE_VOCALFUSION=y
|
||||
BR2_PACKAGE_WIFI_CONNECT=y
|
||||
BR2_PACKAGE_PYTHON_SMBUS2=y
|
||||
BR2_PACKAGE_PYTHON_ADAFRUIT_BLINKA=y
|
||||
BR2_PACKAGE_PYTHON_GPIOD=y
|
|
@ -1 +1,12 @@
|
|||
include $(sort $(wildcard $(BR2_EXTERNAL_OPENVOICEOS_PATH)/package/*/*.mk))
|
||||
|
||||
.PHONY: linux-check-dotconfig
|
||||
linux-check-dotconfig: linux-check-configuration-done
|
||||
CC=$(TARGET_CC) LD=$(TARGET_LD) srctree=$(LINUX_SRCDIR) \
|
||||
ARCH=$(if $(BR2_x86_64),x86,$(if $(BR2_arm)$(BR2_aarch64),arm,$(ARCH))) \
|
||||
SRCARCH=$(if $(BR2_x86_64),x86,$(if $(BR2_arm)$(BR2_aarch64),arm,$(ARCH))) \
|
||||
$(BR2_EXTERNAL_OPENVOICEOS_PATH)/scripts/check-dotconfig.py \
|
||||
$(BR2_CHECK_DOTCONFIG_OPTS) \
|
||||
--src-kconfig $(LINUX_SRCDIR)Kconfig \
|
||||
--actual-config $(LINUX_SRCDIR).config \
|
||||
$(shell echo $(BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE) $(BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES))
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
CONFIG_USB_GADGET=y
|
||||
|
||||
CONFIG_USBIP_CORE=m
|
||||
CONFIG_USBIP_VHCI_HCD=m
|
||||
CONFIG_USBIP_VHCI_HC_PORTS=8
|
||||
|
@ -8,7 +10,6 @@ CONFIG_USBIP_VUDC=m
|
|||
CONFIG_USB_SERIAL=y
|
||||
CONFIG_USB_SERIAL_GENERIC=y
|
||||
CONFIG_USB_SERIAL_OPTION=m
|
||||
CONFIG_USB_SERIAL_WWAN=m
|
||||
CONFIG_USB_SERIAL_SIMPLE=m
|
||||
CONFIG_USB_SERIAL_CP210X=m
|
||||
CONFIG_USB_SERIAL_FTDI_SIO=m
|
||||
|
@ -35,6 +36,9 @@ CONFIG_USB_NET_SMSC95XX=m
|
|||
|
||||
CONFIG_MEDIA_CEC_SUPPORT=y
|
||||
|
||||
# Required for BT drivers
|
||||
CONFIG_SERIAL_DEV_BUS=y
|
||||
|
||||
CONFIG_BT_INTEL=m
|
||||
CONFIG_BT_BCM=m
|
||||
CONFIG_BT_RTL=m
|
||||
|
@ -46,7 +50,6 @@ CONFIG_BT_HCIBTUSB_RTL=y
|
|||
CONFIG_RTL_CARDS=m
|
||||
CONFIG_RTL8192CU=m
|
||||
CONFIG_RTL8XXXU=m
|
||||
CONFIG_R8188EU=m
|
||||
|
||||
CONFIG_WLAN_VENDOR_MEDIATEK=y
|
||||
CONFIG_MT7601U=m
|
||||
|
@ -65,28 +68,18 @@ CONFIG_RT2800USB_UNKNOWN=y
|
|||
|
||||
# Multimedia core support
|
||||
CONFIG_MEDIA_SUPPORT=y
|
||||
CONFIG_MEDIA_SUPPORT_FILTER=n
|
||||
CONFIG_MEDIA_CONTROLLER=y
|
||||
CONFIG_MEDIA_CONTROLLER_DVB=y
|
||||
CONFIG_MEDIA_CAMERA_SUPPORT=y
|
||||
CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
|
||||
CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
|
||||
CONFIG_MEDIA_USB_SUPPORT=y
|
||||
CONFIG_MEDIA_PCI_SUPPORT=y
|
||||
CONFIG_VIDEO_DEV=m
|
||||
CONFIG_VIDEO_V4L2=m
|
||||
CONFIG_VIDEO_V4L2_SUBDEV_API=y
|
||||
CONFIG_VIDEO_V4L2_TPG=m
|
||||
CONFIG_VIDEO_TVEEPROM=m
|
||||
CONFIG_VIDEOBUF_GEN=m
|
||||
CONFIG_VIDEOBUF_DMA_SG=m
|
||||
CONFIG_VIDEOBUF_VMALLOC=m
|
||||
CONFIG_VIDEOBUF2_CORE=m
|
||||
CONFIG_VIDEOBUF2_V4L2=m
|
||||
CONFIG_VIDEOBUF2_MEMOPS=m
|
||||
CONFIG_VIDEOBUF2_DMA_CONTIG=m
|
||||
CONFIG_VIDEOBUF2_VMALLOC=m
|
||||
CONFIG_VIDEOBUF2_DMA_SG=m
|
||||
CONFIG_VIDEOBUF2_DVB=m
|
||||
CONFIG_MEDIA_PLATFORM_SUPPORT=y
|
||||
CONFIG_MEDIA_PLATFORM_DRIVERS=y
|
||||
CONFIG_V4L_PLATFORM_DRIVERS=y
|
||||
|
||||
# Webcam devices
|
||||
|
@ -144,53 +137,10 @@ CONFIG_USB_GSPCA_XIRLINK_CIT=m
|
|||
CONFIG_USB_GSPCA_ZC3XX=m
|
||||
CONFIG_USB_PWC=m
|
||||
CONFIG_USB_PWC_INPUT_EVDEV=y
|
||||
CONFIG_VIDEO_CPIA2=m
|
||||
CONFIG_USB_ZR364XX=m
|
||||
CONFIG_USB_STKWEBCAM=m
|
||||
CONFIG_USB_S2255=m
|
||||
|
||||
# Analog capture USB devices
|
||||
CONFIG_VIDEO_USBTV=m
|
||||
CONFIG_VIDEO_PVRUSB2=m
|
||||
CONFIG_VIDEO_PVRUSB2_SYSFS=y
|
||||
CONFIG_VIDEO_PVRUSB2_DVB=y
|
||||
CONFIG_VIDEO_HDPVR=m
|
||||
CONFIG_VIDEO_USBVISION=m
|
||||
CONFIG_VIDEO_STK1160_COMMON=m
|
||||
CONFIG_VIDEO_STK1160=m
|
||||
CONFIG_VIDEO_SAA7146=m
|
||||
CONFIG_VIDEO_SAA7146_VV=m
|
||||
|
||||
# Analog/digital capture USB devices
|
||||
CONFIG_VIDEO_AU0828=m
|
||||
CONFIG_VIDEO_AU0828_V4L2=y
|
||||
CONFIG_VIDEO_CX231XX=m
|
||||
CONFIG_VIDEO_CX231XX_RC=y
|
||||
CONFIG_VIDEO_CX231XX_ALSA=m
|
||||
CONFIG_VIDEO_CX231XX_DVB=m
|
||||
CONFIG_VIDEO_TM6000=m
|
||||
CONFIG_VIDEO_TM6000_ALSA=m
|
||||
CONFIG_VIDEO_TM6000_DVB=m
|
||||
CONFIG_VIDEO_CX2341X=m
|
||||
|
||||
# Webcam/capture (analog/digital) USB devices
|
||||
CONFIG_VIDEO_EM28XX=m
|
||||
CONFIG_VIDEO_EM28XX_V4L2=m
|
||||
CONFIG_VIDEO_EM28XX_ALSA=m
|
||||
CONFIG_VIDEO_EM28XX_DVB=m
|
||||
CONFIG_VIDEO_EM28XX_RC=m
|
||||
|
||||
# Audio devices (USB/PCI)
|
||||
CONFIG_SND_USB_AUDIO=m
|
||||
CONFIG_SND_HDA=y
|
||||
CONFIG_SND_HDA_CORE=y
|
||||
CONFIG_SND_HDA_GENERIC=y
|
||||
CONFIG_SND_HDA_INTEL=m
|
||||
CONFIG_SND_HDA_I915=y
|
||||
CONFIG_SND_HDA_CODEC_REALTEK=m
|
||||
CONFIG_SND_HDA_CODEC_ANALOG=m
|
||||
CONFIG_SND_HDA_CODEC_VIA=m
|
||||
CONFIG_SND_HDA_CODEC_HDMI=m
|
||||
|
||||
# GPIO support
|
||||
CONFIG_GPIOLIB=y
|
||||
|
@ -210,3 +160,186 @@ CONFIG_W1=y
|
|||
CONFIG_W1_MASTER_DS2490=m
|
||||
CONFIG_W1_MASTER_DS2482=m
|
||||
CONFIG_W1_MASTER_GPIO=m
|
||||
|
||||
# Disabling devices that are non commonly used for smart speaker/devices
|
||||
# CONFIG_SENSORS_LIS3_SPI is not set
|
||||
# CONFIG_VIDEO_TUNER is not set
|
||||
# CONFIG_MEDIA_CONTROLLER_DVB is not set
|
||||
# CONFIG_DVB_NET is not set
|
||||
# CONFIG_DVB_DYNAMIC_MINORS is not set
|
||||
# CONFIG_USB_S2255 is not set
|
||||
# CONFIG_VIDEO_USBTV is not set
|
||||
# CONFIG_VIDEO_GO7007 is not set
|
||||
# CONFIG_VIDEO_HDPVR is not set
|
||||
# CONFIG_VIDEO_PVRUSB2 is not set
|
||||
# CONFIG_VIDEO_STK1160 is not set
|
||||
# CONFIG_VIDEO_AU0828 is not set
|
||||
# CONFIG_VIDEO_CX231XX is not set
|
||||
# CONFIG_DVB_AS102 is not set
|
||||
# CONFIG_DVB_B2C2_FLEXCOP_USB is not set
|
||||
# CONFIG_DVB_USB_V2 is not set
|
||||
# CONFIG_DVB_USB is not set
|
||||
# CONFIG_SMS_USB_DRV is not set
|
||||
# CONFIG_VIDEO_EM28XX is not set
|
||||
# CONFIG_MEDIA_PCI_SUPPORT is not set
|
||||
# CONFIG_RADIO_ADAPTERS is not set
|
||||
# CONFIG_VIDEO_ADV7180 is not set
|
||||
# CONFIG_VIDEO_SAA711X is not set
|
||||
# CONFIG_VIDEO_TC358743 is not set
|
||||
# CONFIG_VIDEO_TVP5150 is not set
|
||||
# CONFIG_VIDEO_TW2804 is not set
|
||||
# CONFIG_VIDEO_TW9903 is not set
|
||||
# CONFIG_VIDEO_TW9906 is not set
|
||||
# CONFIG_VIDEO_CX25840 is not set
|
||||
# CONFIG_MEDIA_TUNER_E4000 is not set
|
||||
# CONFIG_MEDIA_TUNER_FC0011 is not set
|
||||
# CONFIG_MEDIA_TUNER_FC0012 is not set
|
||||
# CONFIG_MEDIA_TUNER_FC0013 is not set
|
||||
# CONFIG_MEDIA_TUNER_FC2580 is not set
|
||||
# CONFIG_MEDIA_TUNER_IT913X is not set
|
||||
# CONFIG_MEDIA_TUNER_M88RS6000T is not set
|
||||
# CONFIG_MEDIA_TUNER_MAX2165 is not set
|
||||
# CONFIG_MEDIA_TUNER_MC44S803 is not set
|
||||
# CONFIG_MEDIA_TUNER_MSI001 is not set
|
||||
# CONFIG_MEDIA_TUNER_MT2060 is not set
|
||||
# CONFIG_MEDIA_TUNER_MT2063 is not set
|
||||
# CONFIG_MEDIA_TUNER_MT20XX is not set
|
||||
# CONFIG_MEDIA_TUNER_MT2131 is not set
|
||||
# CONFIG_MEDIA_TUNER_MT2266 is not set
|
||||
# CONFIG_MEDIA_TUNER_MXL301RF is not set
|
||||
# CONFIG_MEDIA_TUNER_MXL5005S is not set
|
||||
# CONFIG_MEDIA_TUNER_MXL5007T is not set
|
||||
# CONFIG_MEDIA_TUNER_QM1D1B0004 is not set
|
||||
# CONFIG_MEDIA_TUNER_QM1D1C0042 is not set
|
||||
# CONFIG_MEDIA_TUNER_QT1010 is not set
|
||||
# CONFIG_MEDIA_TUNER_R820T is not set
|
||||
# CONFIG_MEDIA_TUNER_SI2157 is not set
|
||||
# CONFIG_MEDIA_TUNER_SIMPLE is not set
|
||||
# CONFIG_MEDIA_TUNER_TDA18212 is not set
|
||||
# CONFIG_MEDIA_TUNER_TDA18218 is not set
|
||||
# CONFIG_MEDIA_TUNER_TDA18250 is not set
|
||||
# CONFIG_MEDIA_TUNER_TDA18271 is not set
|
||||
# CONFIG_MEDIA_TUNER_TDA827X is not set
|
||||
# CONFIG_MEDIA_TUNER_TDA8290 is not set
|
||||
# CONFIG_MEDIA_TUNER_TDA9887 is not set
|
||||
# CONFIG_MEDIA_TUNER_TEA5761 is not set
|
||||
# CONFIG_MEDIA_TUNER_TEA5767 is not set
|
||||
# CONFIG_MEDIA_TUNER_TUA9001 is not set
|
||||
# CONFIG_MEDIA_TUNER_XC2028 is not set
|
||||
# CONFIG_MEDIA_TUNER_XC4000 is not set
|
||||
# CONFIG_MEDIA_TUNER_XC5000 is not set
|
||||
# CONFIG_DVB_M88DS3103 is not set
|
||||
# CONFIG_DVB_MXL5XX is not set
|
||||
# CONFIG_DVB_STB0899 is not set
|
||||
# CONFIG_DVB_STB6100 is not set
|
||||
# CONFIG_DVB_STV090x is not set
|
||||
# CONFIG_DVB_STV0910 is not set
|
||||
# CONFIG_DVB_STV6110x is not set
|
||||
# CONFIG_DVB_STV6111 is not set
|
||||
# CONFIG_DVB_DRXK is not set
|
||||
# CONFIG_DVB_MN88472 is not set
|
||||
# CONFIG_DVB_MN88473 is not set
|
||||
# CONFIG_DVB_SI2165 is not set
|
||||
# CONFIG_DVB_TDA18271C2DD is not set
|
||||
# CONFIG_DVB_CX24110 is not set
|
||||
# CONFIG_DVB_CX24116 is not set
|
||||
# CONFIG_DVB_CX24117 is not set
|
||||
# CONFIG_DVB_CX24120 is not set
|
||||
# CONFIG_DVB_CX24123 is not set
|
||||
# CONFIG_DVB_DS3000 is not set
|
||||
# CONFIG_DVB_MB86A16 is not set
|
||||
# CONFIG_DVB_MT312 is not set
|
||||
# CONFIG_DVB_S5H1420 is not set
|
||||
# CONFIG_DVB_SI21XX is not set
|
||||
# CONFIG_DVB_STB6000 is not set
|
||||
# CONFIG_DVB_STV0288 is not set
|
||||
# CONFIG_DVB_STV0299 is not set
|
||||
# CONFIG_DVB_STV0900 is not set
|
||||
# CONFIG_DVB_STV6110 is not set
|
||||
# CONFIG_DVB_TDA10071 is not set
|
||||
# CONFIG_DVB_TDA10086 is not set
|
||||
# CONFIG_DVB_TDA8083 is not set
|
||||
# CONFIG_DVB_TDA8261 is not set
|
||||
# CONFIG_DVB_TDA826X is not set
|
||||
# CONFIG_DVB_TS2020 is not set
|
||||
# CONFIG_DVB_TUA6100 is not set
|
||||
# CONFIG_DVB_TUNER_CX24113 is not set
|
||||
# CONFIG_DVB_TUNER_ITD1000 is not set
|
||||
# CONFIG_DVB_VES1X93 is not set
|
||||
# CONFIG_DVB_ZL10036 is not set
|
||||
# CONFIG_DVB_ZL10039 is not set
|
||||
# CONFIG_DVB_AF9013 is not set
|
||||
# CONFIG_DVB_CX22700 is not set
|
||||
# CONFIG_DVB_CX22702 is not set
|
||||
# CONFIG_DVB_CXD2820R is not set
|
||||
# CONFIG_DVB_CXD2841ER is not set
|
||||
# CONFIG_DVB_DIB3000MB is not set
|
||||
# CONFIG_DVB_DIB3000MC is not set
|
||||
# CONFIG_DVB_DIB7000M is not set
|
||||
# CONFIG_DVB_DIB7000P is not set
|
||||
# CONFIG_DVB_DIB9000 is not set
|
||||
# CONFIG_DVB_DRXD is not set
|
||||
# CONFIG_DVB_EC100 is not set
|
||||
# CONFIG_DVB_L64781 is not set
|
||||
# CONFIG_DVB_MT352 is not set
|
||||
# CONFIG_DVB_NXT6000 is not set
|
||||
# CONFIG_DVB_RTL2830 is not set
|
||||
# CONFIG_DVB_RTL2832 is not set
|
||||
# CONFIG_DVB_RTL2832_SDR is not set
|
||||
# CONFIG_DVB_S5H1432 is not set
|
||||
# CONFIG_DVB_SI2168 is not set
|
||||
# CONFIG_DVB_SP887X is not set
|
||||
# CONFIG_DVB_STV0367 is not set
|
||||
# CONFIG_DVB_TDA10048 is not set
|
||||
# CONFIG_DVB_TDA1004X is not set
|
||||
# CONFIG_DVB_ZD1301_DEMOD is not set
|
||||
# CONFIG_DVB_ZL10353 is not set
|
||||
# CONFIG_DVB_CXD2880 is not set
|
||||
# CONFIG_DVB_STV0297 is not set
|
||||
# CONFIG_DVB_TDA10021 is not set
|
||||
# CONFIG_DVB_TDA10023 is not set
|
||||
# CONFIG_DVB_VES1820 is not set
|
||||
# CONFIG_DVB_AU8522_DTV is not set
|
||||
# CONFIG_DVB_AU8522_V4L is not set
|
||||
# CONFIG_DVB_BCM3510 is not set
|
||||
# CONFIG_DVB_LG2160 is not set
|
||||
# CONFIG_DVB_LGDT3305 is not set
|
||||
# CONFIG_DVB_LGDT3306A is not set
|
||||
# CONFIG_DVB_LGDT330X is not set
|
||||
# CONFIG_DVB_MXL692 is not set
|
||||
# CONFIG_DVB_NXT200X is not set
|
||||
# CONFIG_DVB_OR51132 is not set
|
||||
# CONFIG_DVB_OR51211 is not set
|
||||
# CONFIG_DVB_S5H1409 is not set
|
||||
# CONFIG_DVB_S5H1411 is not set
|
||||
# CONFIG_DVB_DIB8000 is not set
|
||||
# CONFIG_DVB_MB86A20S is not set
|
||||
# CONFIG_DVB_S921 is not set
|
||||
# CONFIG_DVB_MN88443X is not set
|
||||
# CONFIG_DVB_TC90522 is not set
|
||||
# CONFIG_DVB_PLL is not set
|
||||
# CONFIG_DVB_TUNER_DIB0070 is not set
|
||||
# CONFIG_DVB_TUNER_DIB0090 is not set
|
||||
# CONFIG_DVB_A8293 is not set
|
||||
# CONFIG_DVB_AF9033 is not set
|
||||
# CONFIG_DVB_ASCOT2E is not set
|
||||
# CONFIG_DVB_ATBM8830 is not set
|
||||
# CONFIG_DVB_HELENE is not set
|
||||
# CONFIG_DVB_HORUS3A is not set
|
||||
# CONFIG_DVB_ISL6405 is not set
|
||||
# CONFIG_DVB_ISL6421 is not set
|
||||
# CONFIG_DVB_ISL6423 is not set
|
||||
# CONFIG_DVB_IX2505V is not set
|
||||
# CONFIG_DVB_LGS8GL5 is not set
|
||||
# CONFIG_DVB_LGS8GXX is not set
|
||||
# CONFIG_DVB_LNBH25 is not set
|
||||
# CONFIG_DVB_LNBH29 is not set
|
||||
# CONFIG_DVB_LNBP21 is not set
|
||||
# CONFIG_DVB_LNBP22 is not set
|
||||
# CONFIG_DVB_M88RS2000 is not set
|
||||
# CONFIG_DVB_TDA665x is not set
|
||||
# CONFIG_DVB_DRX39XYJ is not set
|
||||
# CONFIG_DVB_CXD2099 is not set
|
||||
# CONFIG_DVB_SP2 is not set
|
||||
# CONFIG_USB_PRINTER is not set
|
||||
# CONFIG_USB_MICROTEK is not set
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_CFQ_GROUP_IOSCHED=y
|
||||
CONFIG_CFS_BANDWIDTH=y
|
||||
CONFIG_FAIR_GROUP_SCHED=y
|
||||
CONFIG_NET_SCHED=y
|
||||
|
@ -7,13 +6,11 @@ CONFIG_NET_SCHED=y
|
|||
|
||||
CONFIG_CGROUPS=y
|
||||
CONFIG_CPUSETS=y
|
||||
CONFIG_HUGETLB_PAGE=y
|
||||
CONFIG_BLK_CGROUP=y
|
||||
CONFIG_BLK_DEV_THROTTLING=y
|
||||
CONFIG_CGROUP_SCHED=y
|
||||
CONFIG_CGROUP_PIDS=y
|
||||
CONFIG_CGROUP_FREEZER=y
|
||||
CONFIG_CGROUP_HUGETLB=y
|
||||
CONFIG_CGROUP_DEVICE=y
|
||||
CONFIG_CGROUP_CPUACCT=y
|
||||
CONFIG_CGROUP_PERF=y
|
||||
|
@ -24,7 +21,6 @@ CONFIG_CGROUP_BPF=y
|
|||
CONFIG_BPF_SYSCALL=y
|
||||
|
||||
CONFIG_MEMCG=y
|
||||
CONFIG_MEMCG_SWAP=y
|
||||
|
||||
CONFIG_NAMESPACES=y
|
||||
CONFIG_USER_NS=y
|
||||
|
@ -42,16 +38,13 @@ CONFIG_BRIDGE_VLAN_FILTERING=y
|
|||
CONFIG_INET=y
|
||||
CONFIG_IPV6=y
|
||||
CONFIG_INET_ESP=y
|
||||
CONFIG_INET_XFRM_MODE_TRANSPORT=y
|
||||
CONFIG_NETCONSOLE=y
|
||||
CONFIG_VETH=y
|
||||
CONFIG_NETFILTER=y
|
||||
CONFIG_NF_CONNTRACK=y
|
||||
CONFIG_NF_CONNTRACK_TFTP=y
|
||||
CONFIG_NF_NAT=y
|
||||
CONFIG_NF_NAT_NEEDED=y
|
||||
CONFIG_NF_NAT_TFTP=y
|
||||
CONFIG_NF_CONNTRACK_IPV4=y
|
||||
CONFIG_IP6_NF_IPTABLES=y
|
||||
CONFIG_IP6_NF_FILTER=y
|
||||
CONFIG_IP6_NF_MANGLE=y
|
||||
|
@ -74,9 +67,7 @@ CONFIG_IP_NF_TARGET_MASQUERADE=y
|
|||
CONFIG_IP_NF_TARGET_REDIRECT=y
|
||||
CONFIG_BRIDGE=y
|
||||
CONFIG_BRIDGE_NETFILTER=y
|
||||
CONFIG_XFRM=m
|
||||
CONFIG_XFRM_USER=y
|
||||
CONFIG_XFRM_ALGO=y
|
||||
|
||||
CONFIG_NET_L3_MASTER_DEV=y
|
||||
|
||||
|
@ -85,9 +76,7 @@ CONFIG_EXT4_FS_POSIX_ACL=y
|
|||
CONFIG_EXT4_FS_SECURITY=y
|
||||
CONFIG_OVERLAY_FS=y
|
||||
CONFIG_OVERLAY_FS_METACOPY=y
|
||||
CONFIG_VBOXSF_FS=m
|
||||
|
||||
CONFIG_CRYPTO_CCM=m
|
||||
CONFIG_CRYPTO_GCM=m
|
||||
CONFIG_CRYPTO_GCM=y
|
||||
CONFIG_CRYPTO_CMAC=m
|
||||
CONFIG_CRYPTO_ARC4=m
|
||||
|
|
|
@ -1,13 +1,20 @@
|
|||
CONFIG_LOCALVERSION="-ovos-buildroot"
|
||||
CONFIG_KERNEL_LZO=y
|
||||
# CONFIG_KERNEL_GZIP is not set
|
||||
CONFIG_EXPERT=y
|
||||
|
||||
# GCC plugins are disabled by linux.mk, disable them here to reduce
|
||||
# linux-diff-config noise
|
||||
|
||||
CONFIG_GCC_PLUGINS=n
|
||||
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_PANIC_TIMEOUT=5
|
||||
|
||||
# CONFIG_PREEMPT_NONE is not set
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
CONFIG_PREEMPT_RT=y
|
||||
CONFIG_PREEMPT_COUNT=y
|
||||
CONFIG_PREEMPTION=y
|
||||
|
||||
CONFIG_PSI=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
|
@ -33,12 +40,15 @@ CONFIG_EXFAT_FS=m
|
|||
CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"
|
||||
CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
|
||||
CONFIG_SQUASHFS=y
|
||||
# CONFIG_SQUASHFS_FILE_CACHE is not set
|
||||
CONFIG_SQUASHFS_FILE_DIRECT=y
|
||||
# CONFIG_SQUASHFS_DECOMP_SINGLE is not set
|
||||
# CONFIG_SQUASHFS_DECOMP_MULTI is not set
|
||||
CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
|
||||
# CONFIG_SQUASHFS_CHOICE_DECOMP_BY_MOUNT is not set
|
||||
# CONFIG_SQUASHFS_COMPILE_DECOMP_SINGLE is not set
|
||||
# CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI is not set
|
||||
CONFIG_SQUASHFS_COMPILE_DECOMP_MULTI_PERCPU=y
|
||||
CONFIG_SQUASHFS_XATTR=y
|
||||
CONFIG_SQUASHFS_ZLIB=y
|
||||
CONFIG_SQUASHFS_LZ4=y
|
||||
|
@ -48,12 +58,12 @@ CONFIG_SQUASHFS_ZSTD=y
|
|||
# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
|
||||
# CONFIG_SQUASHFS_EMBEDDED is not set
|
||||
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
|
||||
|
||||
CONFIG_BTRFS_FS=m
|
||||
CONFIG_OVERLAY_FS=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
CONFIG_TMPFS_XATTR=y
|
||||
CONFIG_TMPFS_INODE64=y
|
||||
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_SECCOMP_FILTER=y
|
||||
|
@ -72,7 +82,7 @@ CONFIG_MSDOS_PARTITION=y
|
|||
# CONFIG_LOGO is not set
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
|
||||
CONFIG_BT=y
|
||||
CONFIG_BT=m
|
||||
CONFIG_BT_BREDR=y
|
||||
CONFIG_BT_RFCOMM=m
|
||||
CONFIG_BT_RFCOMM_TTY=y
|
||||
|
@ -80,13 +90,11 @@ CONFIG_BT_LE=y
|
|||
CONFIG_BT_BNEP=m
|
||||
CONFIG_BT_BNEP_MC_FILTER=y
|
||||
CONFIG_BT_BNEP_PROTO_FILTER=y
|
||||
CONFIG_BT_CMTP=m
|
||||
CONFIG_BT_HIDP=m
|
||||
CONFIG_BT_LEDS=y
|
||||
|
||||
CONFIG_IPV6=y
|
||||
CONFIG_IPV6_ROUTER_PREF=y
|
||||
CONFIG_IPV6_REACHABILITY_PROBE=y
|
||||
CONFIG_IPV6_SIT=m
|
||||
|
||||
CONFIG_IP_MROUTE=y
|
||||
|
@ -101,11 +109,11 @@ CONFIG_NF_TABLES_ARP=y
|
|||
CONFIG_NF_TPROXY_IPV6=m
|
||||
CONFIG_NF_TABLES_IPV6=y
|
||||
CONFIG_NF_TABLES_BRIDGE=m
|
||||
CONFIG_NF_FLOW_TABLE=m
|
||||
|
||||
CONFIG_NFT_NUMGEN=m
|
||||
CONFIG_NFT_CT=m
|
||||
CONFIG_NFT_FLOW_OFFLOAD=m
|
||||
CONFIG_NFT_COUNTER=m
|
||||
CONFIG_NFT_CONNLIMIT=m
|
||||
CONFIG_NFT_LOG=m
|
||||
CONFIG_NFT_LIMIT=m
|
||||
|
@ -113,7 +121,6 @@ CONFIG_NFT_MASQ=m
|
|||
CONFIG_NFT_REDIR=m
|
||||
CONFIG_NFT_NAT=m
|
||||
CONFIG_NFT_TUNNEL=m
|
||||
CONFIG_NFT_OBJREF=m
|
||||
CONFIG_NFT_QUEUE=m
|
||||
CONFIG_NFT_QUOTA=m
|
||||
CONFIG_NFT_REJECT=m
|
||||
|
@ -140,6 +147,7 @@ CONFIG_NFT_FIB_IPV6=m
|
|||
CONFIG_NFT_BRIDGE_META=m
|
||||
CONFIG_NFT_BRIDGE_REJECT=m
|
||||
|
||||
CONFIG_NETFILTER_NETLINK_QUEUE=m
|
||||
CONFIG_NETFILTER_XT_SET=m
|
||||
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
|
||||
|
||||
|
@ -176,17 +184,15 @@ CONFIG_WEXT_CORE=y
|
|||
CONFIG_WEXT_PROC=y
|
||||
CONFIG_CFG80211=m
|
||||
CONFIG_CFG80211_WEXT=y
|
||||
# CONFIG_CFG80211_CRDA_SUPPORT is not set
|
||||
|
||||
CONFIG_CIFS=m
|
||||
CONFIG_CIFS_XATTR=y
|
||||
CONFIG_CIFS_POSIX=y
|
||||
CONFIG_CIFS_ACL=y
|
||||
CONFIG_CIFS_DFS_UPCALL=y
|
||||
|
||||
CONFIG_WIREGUARD=m
|
||||
|
||||
CONFIG_HID=m
|
||||
CONFIG_HID=y
|
||||
CONFIG_HIDRAW=y
|
||||
|
||||
CONFIG_NLS=y
|
||||
|
@ -195,12 +201,3 @@ CONFIG_NLS_CODEPAGE_437=y
|
|||
CONFIG_NLS_ASCII=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NLS_UTF8=y
|
||||
|
||||
CONFIG_HAVE_PREEMPT_LAZY=y
|
||||
CONFIG_PREEMPT_LAZY=y
|
||||
# CONFIG_PREEMPT_NONE is not set
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
CONFIG_PREEMPT_RT=y
|
||||
CONFIG_PREEMPT_COUNT=y
|
||||
CONFIG_PREEMPTION=y
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
config BR2_PACKAGE_PYTHON_ADAFRUIT_BLINKA
|
||||
bool "python-adafruit-blinka"
|
||||
select BR2_PACKAGE_PYTHON_ADAFRUIT_CIRCUITPYTHON_TYPING # runtime
|
||||
select BR2_PACKAGE_PYTHON_ADAFRUIT_PLATFORMDETECT # runtime
|
||||
select BR2_PACKAGE_PYTHON_ADAFRUIT_PUREIO # runtime
|
||||
select BR2_PACKAGE_PYTHON_PYFTDI # runtime
|
||||
select BR2_PACKAGE_PYTHON_ADAFRUIT_CIRCUITPYTHON_TYPING
|
||||
select BR2_PACKAGE_PYTHON_ADAFRUIT_PLATFORMDETECT
|
||||
select BR2_PACKAGE_PYTHON_ADAFRUIT_PUREIO
|
||||
select BR2_PACKAGE_PYTHON_PYFTDI
|
||||
select BR2_PACKAGE_PYTHON_RPI_GPIO
|
||||
select BR2_PACKAGE_PYTHON_SYSV_IPC
|
||||
select BR2_PACKAGE_PYTHON_GPIOD
|
||||
help
|
||||
CircuitPython APIs for non-CircuitPython versions of Python
|
||||
such as CPython on Linux and MicroPython.
|
||||
CircuitPython APIs for non-CircuitPython versions of Python such as
|
||||
CPython on Linux and MicroPython.
|
||||
|
||||
https://github.com/adafruit/Adafruit_Blinka
|
||||
https://pypi.org/project/Adafruit-Blinka
|
|
@ -1,5 +1,5 @@
|
|||
# md5, sha256 from https://pypi.org/pypi/adafruit-blinka/json
|
||||
md5 b15a11eb7e0910af0d5825ed386b71d6 Adafruit-Blinka-8.6.0.tar.gz
|
||||
sha256 b05f03468edc898aa07af59bafa88ca78e1b50f7d263a53e6573ace0050f64eb Adafruit-Blinka-8.6.0.tar.gz
|
||||
md5 835cabd601befbe78dc64720f7efacd6 Adafruit-Blinka-8.31.0.tar.gz
|
||||
sha256 720edca821066022e912dffcb364ea04bd3e3f208132b975876a21b2a2daa850 Adafruit-Blinka-8.31.0.tar.gz
|
||||
# Locally computed sha256 checksums
|
||||
sha256 50e0c3b5b4486be0ed420639f8a1f6f115f29101feee6bcd954a4b81db04d0f3 LICENSE
|
||||
|
|
|
@ -4,11 +4,13 @@
|
|||
#
|
||||
################################################################################
|
||||
|
||||
PYTHON_ADAFRUIT_BLINKA_VERSION = 8.6.0
|
||||
PYTHON_ADAFRUIT_BLINKA_VERSION = 8.31.0
|
||||
PYTHON_ADAFRUIT_BLINKA_SOURCE = Adafruit-Blinka-$(PYTHON_ADAFRUIT_BLINKA_VERSION).tar.gz
|
||||
PYTHON_ADAFRUIT_BLINKA_SITE = https://files.pythonhosted.org/packages/76/29/541a6a22d923fbe0d4cf52f953a2c737370cb717f8df1cbd95ab97fe2fba
|
||||
PYTHON_ADAFRUIT_BLINKA_SITE = https://files.pythonhosted.org/packages/74/ed/e51689be726338ba16f2a88373ad4690702c5ddf8668be1b0289cb279840
|
||||
PYTHON_ADAFRUIT_BLINKA_SETUP_TYPE = setuptools
|
||||
PYTHON_ADAFRUIT_BLINKA_LICENSE = MIT
|
||||
PYTHON_ADAFRUIT_BLINKA_LICENSE_FILES = LICENSE
|
||||
PYTHON_ADAFRUIT_BLINKA_BIN_ARCH_EXCLUDE = usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/adafruit_blinka/microcontroller/bcm283x/pulseio
|
||||
PYTHON_ADAFRUIT_BLINKA_BIN_ARCH_EXCLUDE += usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/adafruit_blinka/microcontroller/amlogic/a311d/pulseio
|
||||
|
||||
$(eval $(python-package))
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
config BR2_PACKAGE_PYTHON_ADAFRUIT_CIRCUITPYTHON_TYPING
|
||||
bool "python-adafruit-circuitpython-typing"
|
||||
help
|
||||
Types needed for type annotation that are not in `typing`
|
||||
|
||||
https://pypi.org/project/adafruit-circuitpython-typing
|
|
@ -0,0 +1,5 @@
|
|||
# md5, sha256 from https://pypi.org/pypi/adafruit-circuitpython-typing/json
|
||||
md5 3ff67f52cdb0ece5df86a477b1be5572 adafruit-circuitpython-typing-1.9.6.tar.gz
|
||||
sha256 dc69ed6362dcb890f7103d4da0db94b7d1849bc66804598d34508f413724d152 adafruit-circuitpython-typing-1.9.6.tar.gz
|
||||
# Locally computed sha256 checksums
|
||||
sha256 50e0c3b5b4486be0ed420639f8a1f6f115f29101feee6bcd954a4b81db04d0f3 LICENSE
|
|
@ -0,0 +1,14 @@
|
|||
################################################################################
|
||||
#
|
||||
# python-adafruit-circuitpython-typing
|
||||
#
|
||||
################################################################################
|
||||
|
||||
PYTHON_ADAFRUIT_CIRCUITPYTHON_TYPING_VERSION = 1.9.6
|
||||
PYTHON_ADAFRUIT_CIRCUITPYTHON_TYPING_SOURCE = adafruit-circuitpython-typing-$(PYTHON_ADAFRUIT_CIRCUITPYTHON_TYPING_VERSION).tar.gz
|
||||
PYTHON_ADAFRUIT_CIRCUITPYTHON_TYPING_SITE = https://files.pythonhosted.org/packages/c7/2e/acfeeed27e42cfcb0450bc4afe0746e4d8ddd5d9081b7d7cec01705149e1
|
||||
PYTHON_ADAFRUIT_CIRCUITPYTHON_TYPING_SETUP_TYPE = setuptools
|
||||
PYTHON_ADAFRUIT_CIRCUITPYTHON_TYPING_LICENSE = MIT
|
||||
PYTHON_ADAFRUIT_CIRCUITPYTHON_TYPING_LICENSE_FILES = LICENSE LICENSES/CC-BY-4.0.txt LICENSES/MIT.txt LICENSES/Unlicense.txt
|
||||
|
||||
$(eval $(python-package))
|
|
@ -1,5 +1,5 @@
|
|||
# md5, sha256 from https://pypi.org/pypi/Adafruit-PlatformDetect/json
|
||||
md5 7e7b10a48f6e6a7c650bb6bd432ec613 Adafruit-PlatformDetect-3.32.0.tar.gz
|
||||
sha256 31bad17fb91c3cd61bd62fb9712902bcef5225bbeb3c078a196c6d7e2d4599a4 Adafruit-PlatformDetect-3.32.0.tar.gz
|
||||
md5 4e80a7d7200a67d4528d580b16d3ca98 Adafruit-PlatformDetect-3.60.0.tar.gz
|
||||
sha256 644deb113c00ba1bfba4703fcd80cab52b5638d4a1146f2d58378df4af09746f Adafruit-PlatformDetect-3.60.0.tar.gz
|
||||
# Locally computed sha256 checksums
|
||||
sha256 50e0c3b5b4486be0ed420639f8a1f6f115f29101feee6bcd954a4b81db04d0f3 LICENSE
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
#
|
||||
################################################################################
|
||||
|
||||
PYTHON_ADAFRUIT_PLATFORMDETECT_VERSION = 3.32.0
|
||||
PYTHON_ADAFRUIT_PLATFORMDETECT_VERSION = 3.60.0
|
||||
PYTHON_ADAFRUIT_PLATFORMDETECT_SOURCE = Adafruit-PlatformDetect-$(PYTHON_ADAFRUIT_PLATFORMDETECT_VERSION).tar.gz
|
||||
PYTHON_ADAFRUIT_PLATFORMDETECT_SITE = https://files.pythonhosted.org/packages/15/42/2192f64a9732878ddb39bb4359864d1398849e90f39f5591a23005e65d8e
|
||||
PYTHON_ADAFRUIT_PLATFORMDETECT_SITE = https://files.pythonhosted.org/packages/e5/e3/71ba7ff4cbcecf40783613c192bd0ec6c69a70053915567a998ce41050bc
|
||||
PYTHON_ADAFRUIT_PLATFORMDETECT_SETUP_TYPE = setuptools
|
||||
PYTHON_ADAFRUIT_PLATFORMDETECT_LICENSE = MIT
|
||||
PYTHON_ADAFRUIT_PLATFORMDETECT_LICENSE_FILES = LICENSE
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# md5, sha256 from https://pypi.org/pypi/Adafruit-PureIO/json
|
||||
md5 f7d2f93db567333321b4097b4858bea5 Adafruit_PureIO-1.1.9.tar.gz
|
||||
sha256 2caf22fb07c7f771d83267f331a76cde314723f884a9570ea6f768730c87a879 Adafruit_PureIO-1.1.9.tar.gz
|
||||
md5 f9ddf83f2166ce69522a25f82d1fcdf7 Adafruit_PureIO-1.1.11.tar.gz
|
||||
sha256 c4cfbb365731942d1f1092a116f47dfdae0aef18c5b27f1072b5824ad5ea8c7c Adafruit_PureIO-1.1.11.tar.gz
|
||||
# Locally computed sha256 checksums
|
||||
sha256 aa5e54136c840ed2e333f65d43fecbc6c0e8fff62ebaece4ff281cd2a6672088 LICENSE
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
#
|
||||
################################################################################
|
||||
|
||||
PYTHON_ADAFRUIT_PUREIO_VERSION = 1.1.9
|
||||
PYTHON_ADAFRUIT_PUREIO_VERSION = 1.1.11
|
||||
PYTHON_ADAFRUIT_PUREIO_SOURCE = Adafruit_PureIO-$(PYTHON_ADAFRUIT_PUREIO_VERSION).tar.gz
|
||||
PYTHON_ADAFRUIT_PUREIO_SITE = https://files.pythonhosted.org/packages/df/ca/9162d4648669d12af16d5a66d808bdef6967eb684cbed9b1a3ebc19b361a
|
||||
PYTHON_ADAFRUIT_PUREIO_SITE = https://files.pythonhosted.org/packages/e5/b7/f1672435116822079bbdab42163f9e6424769b7db778873d95d18c085230
|
||||
PYTHON_ADAFRUIT_PUREIO_SETUP_TYPE = setuptools
|
||||
PYTHON_ADAFRUIT_PUREIO_LICENSE = MIT
|
||||
PYTHON_ADAFRUIT_PUREIO_LICENSE_FILES = LICENSE
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
config BR2_PACKAGE_PYTHON_GPIOD
|
||||
bool "python-gpiod"
|
||||
depends on !BR2_PACKAGE_LIBGPIOD
|
||||
help
|
||||
This is a C library that abstracts the GPIO character
|
||||
device operations on linux.
|
||||
|
||||
https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/
|
||||
|
||||
This package is the continuation of the libgpiod package
|
||||
for versions 2.0 and above.
|
||||
|
||||
Note that a kernel of 5.10 or above is required for the
|
||||
ioctls to work.
|
|
@ -0,0 +1,5 @@
|
|||
# md5, sha256 from https://pypi.org/pypi/gpiod/json
|
||||
md5 faf8736f9584a28426e4832fe22f38f4 gpiod-2.1.3.tar.gz
|
||||
sha256 a33193d6cab79d252329f71666a35a3668e04f1f82bf9b93ee2c9ae852398b20 gpiod-2.1.3.tar.gz
|
||||
# Locally computed sha256 checksums
|
||||
sha256 50e0c3b5b4486be0ed420639f8a1f6f115f29101feee6bcd954a4b81db04d0f3 LICENSE
|
|
@ -0,0 +1,13 @@
|
|||
################################################################################
|
||||
#
|
||||
# python-gpiod
|
||||
#
|
||||
################################################################################
|
||||
|
||||
PYTHON_GPIOD_VERSION = 2.1.3
|
||||
PYTHON_GPIOD_SOURCE = gpiod-$(PYTHON_GPIOD_VERSION).tar.gz
|
||||
PYTHON_GPIOD_SITE = https://files.pythonhosted.org/packages/a8/56/730573fe8d03c4d32a31e7182d27317b0cef298c9170b5a2994e2248986f
|
||||
PYTHON_GPIOD_SETUP_TYPE = setuptools
|
||||
#PYTHON_LIBGPIOD_DEPENDENCIES = libgpiod
|
||||
|
||||
$(eval $(python-package))
|
|
@ -1,5 +1,5 @@
|
|||
# md5, sha256 from https://pypi.org/pypi/pyftdi/json
|
||||
md5 d8969beb9cd11c123f1249963bf8c0d8 pyftdi-0.54.0.tar.gz
|
||||
sha256 8df9af22077d17533d2f95b508b1d87959877627ea5dc2369056e90a3b5a232d pyftdi-0.54.0.tar.gz
|
||||
md5 fa9feda5b80db51d538ed9b98e25504e pyftdi-0.55.0.tar.gz
|
||||
sha256 a747bbbccc4eeea26cefa2c8bd3d2b8bef8c94ecb6969bb9c75a63640887519a pyftdi-0.55.0.tar.gz
|
||||
# Locally computed sha256 checksums
|
||||
sha256 7342c9ccf3ec21eee9a23c6c74af15fb08ac1b79ddbccb4e063ddeaa6ef7c52d pyftdi/doc/license.rst
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
#
|
||||
################################################################################
|
||||
|
||||
PYTHON_PYFTDI_VERSION = 0.54.0
|
||||
PYTHON_PYFTDI_VERSION = 0.55.0
|
||||
PYTHON_PYFTDI_SOURCE = pyftdi-$(PYTHON_PYFTDI_VERSION).tar.gz
|
||||
PYTHON_PYFTDI_SITE = https://files.pythonhosted.org/packages/49/a3/6cd09c0493662b285b2ba87a08b1378a5b13e5cab44eb6a3f740c801c804
|
||||
PYTHON_PYFTDI_SITE = https://files.pythonhosted.org/packages/da/db/b900789a154e32dba50f132a2a76837331801f8b521b7e1bcbb852b01a35
|
||||
PYTHON_PYFTDI_SETUP_TYPE = setuptools
|
||||
PYTHON_PYFTDI_LICENSE = FIXME: please specify the exact BSD version
|
||||
PYTHON_PYFTDI_LICENSE_FILES = pyftdi/doc/license.rst
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# md5, sha256 from https://pypi.org/pypi/smbus2/json
|
||||
md5 ea4bba25b43863aecd6ec33b2252fdae smbus2-0.4.1.tar.gz
|
||||
sha256 6276eb599b76c4e74372f2582d2282f03b4398f0da16bc996608e4f21557ca9b smbus2-0.4.1.tar.gz
|
||||
md5 ab83d83e9eb3bd1d0bef8d6fd64b1398 smbus2-0.4.3.tar.gz
|
||||
sha256 36f2288a8e1a363cb7a7b2244ec98d880eb5a728a2494ac9c71e9de7bf6a803a smbus2-0.4.3.tar.gz
|
||||
# Locally computed sha256 checksums
|
||||
sha256 6ee9cf18c3a75dd76fb549a4b607ae34eedc31a796c48157895e2ad28d66ce79 LICENSE
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
#
|
||||
################################################################################
|
||||
|
||||
PYTHON_SMBUS2_VERSION = 0.4.1
|
||||
PYTHON_SMBUS2_VERSION = 0.4.3
|
||||
PYTHON_SMBUS2_SOURCE = smbus2-$(PYTHON_SMBUS2_VERSION).tar.gz
|
||||
PYTHON_SMBUS2_SITE = https://files.pythonhosted.org/packages/d9/33/787448c69603eec96af07d36f7ae3a7e3fce4020632eddb55152dc903233
|
||||
PYTHON_SMBUS2_SITE = https://files.pythonhosted.org/packages/98/17/9663936e52a348b3ad1c85e6ca6071d2abf00a5f64f2df50bec8dcca6e16
|
||||
PYTHON_SMBUS2_SETUP_TYPE = setuptools
|
||||
PYTHON_SMBUS2_LICENSE = MIT
|
||||
PYTHON_SMBUS2_LICENSE_FILES = LICENSE
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
# Locally computed
|
||||
sha256 88bec397f9bf2a6887efa39cb660d37ef1f08e2e378a81a1b88d3b14798e44da vocalfusion-cc7c690176416998ee6a918f439130224fa24699.tar.gz
|
||||
sha256 c974fd4a6eeac9ce676827ca617674ee43ad40c98c31e6dd0a878591467ecd69 vocalfusion-fdf7e4efbe3237d68eb0d00388e57b0c891366b3.tar.gz
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
#
|
||||
################################################################################
|
||||
|
||||
VOCALFUSION_VERSION = cc7c690176416998ee6a918f439130224fa24699
|
||||
VOCALFUSION_SITE = $(call github,OpenVoiceOS,VocalFusionDriver,$(VOCALFUSION_VERSION))
|
||||
VOCALFUSION_VERSION = fdf7e4efbe3237d68eb0d00388e57b0c891366b3
|
||||
VOCALFUSION_SITE = $(call github,BohdanBuinich,VocalFusionDriver,$(VOCALFUSION_VERSION))
|
||||
VOCALFUSION_MODULE_SUBDIRS = driver
|
||||
|
||||
$(eval $(kernel-module))
|
||||
|
|
|
@ -3,207 +3,244 @@
|
|||
# requires dtparam=spi=on in /boot/config.txt
|
||||
|
||||
"""
|
||||
This script configures the XVF3510 board in boot from SPI slave and load a
|
||||
binary file. It requires a bin file as input parameter.
|
||||
This script configures the XVF3510 board to boot from SPI slave and loads a
|
||||
binary file. It requires a bin file as an input parameter.
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
import time
|
||||
import argparse
|
||||
import spidev
|
||||
import RPi.GPIO as GPIO
|
||||
from smbus import SMBus
|
||||
from smbus2 import SMBus
|
||||
import digitalio
|
||||
import busio
|
||||
from pathlib import Path
|
||||
import board
|
||||
from typing import Optional
|
||||
|
||||
if sys.version[0] != '3':
|
||||
print("Run this script with Python 3")
|
||||
# Global variables for GPIO pins
|
||||
BOOT_SEL_PIN = digitalio.DigitalInOut(board.D26) # GPIO pin used for boot selection (PIN 37)
|
||||
RST_N_PIN = digitalio.DigitalInOut(board.D27) # GPIO pin used for reset (PIN 13)
|
||||
I2C_ADDRESS = 0x2C # I2C address for the I/O expander. TODO: 0x20 was in original code, misstake?
|
||||
|
||||
if sys.version_info[0] < 3:
|
||||
print("This script requires Python 3.")
|
||||
sys.exit(1)
|
||||
|
||||
def bit_reversed_byte(byte_to_reverse):
|
||||
def bit_reversed_byte(byte_to_reverse: int) -> int:
|
||||
"""
|
||||
Function to reverse the bit-order of a byte
|
||||
Reverse the bits of a byte.
|
||||
|
||||
Args:
|
||||
byte_to_reverse: byte to process
|
||||
|
||||
Retruns:
|
||||
byte in reversed order
|
||||
"""
|
||||
return int('{:08b}'.format(byte_to_reverse)[::-1], 2)
|
||||
|
||||
def set_boot_sel():
|
||||
"""
|
||||
Function to set XVF3510 board in SPI slave boot mode
|
||||
|
||||
Args:
|
||||
None
|
||||
byte_to_reverse (int): The byte to reverse.
|
||||
|
||||
Returns:
|
||||
None
|
||||
int: The reversed byte.
|
||||
"""
|
||||
|
||||
bus = SMBus(1)
|
||||
|
||||
# reset BOOT_SEL
|
||||
bus.write_byte_data(0x20, 3, 0xFE)
|
||||
bus.write_byte_data(0x20, 7, 0xFF)
|
||||
|
||||
state = {}
|
||||
for i in [2, 6]:
|
||||
state[i] = bus.read_byte_data(0x20, i)
|
||||
|
||||
# start reset
|
||||
data_to_write = 0x00 | (state[2] & 0xDF)
|
||||
bus.write_byte_data(0x20, 2, data_to_write)
|
||||
data_to_write = 0x00 | (state[6] & 0xDF)
|
||||
bus.write_byte_data(0x20, 6, data_to_write)
|
||||
# set BOOT_SEL high
|
||||
data_to_write = 0x01
|
||||
bus.write_byte_data(0x20, 3, data_to_write)
|
||||
data_to_write = 0xFE
|
||||
bus.write_byte_data(0x20, 7, data_to_write)
|
||||
# stop reset
|
||||
data_to_write = 0x20 | (state[2] & 0xDF)
|
||||
bus.write_byte_data(0x20, 2, data_to_write)
|
||||
data_to_write = 0x20 | (state[6] & 0xDF)
|
||||
bus.write_byte_data(0x20, 6, data_to_write)
|
||||
return int("{:08b}".format(byte_to_reverse)[::-1], 2)
|
||||
|
||||
|
||||
|
||||
def send_image(bin_filename, verbose=False, max_spi_speed_mhz = 5, block_transfer_pause_ms = 1, direct = False, delay = False):
|
||||
def set_boot_sel() -> None:
|
||||
"""
|
||||
Function to send the given image to the device via SPI slave
|
||||
Set XVF3510 board in SPI slave boot mode using I2C to manipulate BOOT_SEL pin.
|
||||
"""
|
||||
try:
|
||||
with SMBus(1) as bus:
|
||||
# Reset BOOT_SEL to default
|
||||
bus.write_byte_data(I2C_ADDRESS, 3, 0xFE)
|
||||
bus.write_byte_data(I2C_ADDRESS, 7, 0xFF)
|
||||
|
||||
# Preserve other settings while manipulating BOOT_SEL
|
||||
state = {i: bus.read_byte_data(I2C_ADDRESS, i) for i in [2, 6]}
|
||||
|
||||
# Start reset sequence
|
||||
for i in [2, 6]:
|
||||
bus.write_byte_data(I2C_ADDRESS, i, 0x00 | (state[i] & 0xDF))
|
||||
# Set BOOT_SEL high
|
||||
bus.write_byte_data(I2C_ADDRESS, 3, 0x01)
|
||||
bus.write_byte_data(I2C_ADDRESS, 7, 0xFE)
|
||||
# End reset sequence
|
||||
for i in [2, 6]:
|
||||
bus.write_byte_data(I2C_ADDRESS, i, 0x20 | (state[i] & 0xDF))
|
||||
except Exception as e:
|
||||
print(f"Error setting BOOT_SEL via I2C: {e}")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def send_image(
|
||||
bin_filename: str,
|
||||
verbose: bool = False,
|
||||
max_spi_speed_mhz: float = 5,
|
||||
block_transfer_pause_ms: float = 1,
|
||||
direct: bool = False,
|
||||
delay: bool = False,
|
||||
) -> None:
|
||||
"""
|
||||
Send the given image to the device via SPI slave.
|
||||
|
||||
Args:
|
||||
bin_filename: binary file containing the image to boot
|
||||
verbose: flag to print debug printouts
|
||||
direct: Use Pi GPIO outputs rather than the XVF3510 Pi HAT
|
||||
delay: Release BootSel early to delay startup on version 4.0.0 onwards
|
||||
|
||||
Returns:
|
||||
None
|
||||
bin_filename (str): Binary file name.
|
||||
verbose (bool, optional): Enable verbose output. Defaults to False.
|
||||
max_spi_speed_mhz (float, optional): Max SPI speed in MHz. Defaults to 5.
|
||||
block_transfer_pause_ms (float, optional): Pause between blocks in milliseconds. Defaults to 1.
|
||||
direct (bool, optional): Direct mode flag. Defaults to False.
|
||||
delay (bool, optional): Delay startup flag. Defaults to False.
|
||||
"""
|
||||
binary_size = Path(bin_filename).stat().st_size
|
||||
print(f'Read file "{bin_filename}" size: {binary_size} Bytes')
|
||||
|
||||
if direct:
|
||||
#setup GPIO
|
||||
GPIO.setmode(GPIO.BOARD)
|
||||
GPIO.setwarnings(False)
|
||||
BOOT_SEL_PIN.switch_to_input()
|
||||
RST_N_PIN.switch_to_output(value=True)
|
||||
|
||||
#boot_sel = 8
|
||||
#rst_n = 10
|
||||
'''
|
||||
Mycroft board update
|
||||
'''
|
||||
#GPIO.setmode(GPIO.BCM)
|
||||
|
||||
boot_sel = 37 #26 #= 25 # fix these numbers to be Wiring Pi
|
||||
rst_n = 13 #27 #= 2
|
||||
GPIO.setup(boot_sel, GPIO.IN) # Normally, the Pi should not drive this
|
||||
GPIO.setup(rst_n, GPIO.OUT, initial=GPIO.HIGH)
|
||||
|
||||
#setup SPI
|
||||
spi = spidev.SpiDev()
|
||||
bus_spi = 0
|
||||
device = 0
|
||||
spi.open(bus_spi, device)
|
||||
|
||||
#SPI Settings
|
||||
spi.max_speed_hz = int(max_spi_speed_mhz * 1000000)
|
||||
spi.mode = 0b00 #XMOS supports 00 or 11
|
||||
|
||||
spi_block_size = 4096 #Limitation in spidev and xfer2 doesn't work!
|
||||
spi = setup_spi(max_spi_speed_mhz)
|
||||
|
||||
if direct:
|
||||
GPIO.output(rst_n, 0)
|
||||
GPIO.setup(boot_sel, GPIO.OUT, initial=GPIO.HIGH)
|
||||
GPIO.output(rst_n, 1)
|
||||
RST_N_PIN.value=False
|
||||
BOOT_SEL_PIN.switch_to_output(value=True)
|
||||
RST_N_PIN.value=True
|
||||
else:
|
||||
set_boot_sel()
|
||||
|
||||
# Create a table to map byte values to their bit-reversed values
|
||||
reverse_table = [bit_reversed_byte(byte) for byte in range(256)]
|
||||
reverse_table = [bit_reversed_byte(byte) for byte in range(256)]
|
||||
|
||||
data = []
|
||||
with open(bin_filename, "rb") as f:
|
||||
bytes_read = f.read()
|
||||
data = list(bytes_read)
|
||||
binary_size = len(data)
|
||||
block_count = 0
|
||||
print('Read file "{0}" size: {1} Bytes'.format(args.bin_filename, binary_size))
|
||||
if binary_size % spi_block_size != 0:
|
||||
print("Warning - binary file not a multiple of {} - {} remainder".format( \
|
||||
spi_block_size, binary_size % spi_block_size))
|
||||
while binary_size > 0:
|
||||
block = [reverse_table[byte] for byte in data[:spi_block_size]]
|
||||
del data[:spi_block_size]
|
||||
binary_size = len(data)
|
||||
if verbose:
|
||||
print("Sending {} Bytes in block {} checksum 0x{:X}".format( \
|
||||
len(block), block_count, sum(block)))
|
||||
spi.xfer(block)
|
||||
try:
|
||||
with open(bin_filename, "rb") as f:
|
||||
data = list(f.read())
|
||||
except Exception as e:
|
||||
print(f"Error reading binary file: {e}")
|
||||
sys.exit(1)
|
||||
|
||||
if block_count == 0:
|
||||
#Long delay for PLL reboot
|
||||
time.sleep(0.1)
|
||||
send_data_over_spi(data, spi, reverse_table, verbose, block_transfer_pause_ms, direct, delay)
|
||||
|
||||
if delay:
|
||||
# release boot_sel early to prevent startup
|
||||
if direct:
|
||||
GPIO.setup(boot_sel, GPIO.IN)
|
||||
else:
|
||||
#bus = smbus.SMBus(1)
|
||||
bus = SMBus(1)
|
||||
data_to_write = 0xFE
|
||||
bus.write_byte_data(0x20, 3, data_to_write)
|
||||
data_to_write = 0xFF
|
||||
bus.write_byte_data(0x20, 7, data_to_write)
|
||||
|
||||
elif binary_size > 0:
|
||||
time.sleep(block_transfer_pause_ms / 1000)
|
||||
block_count += 1
|
||||
print("Sending complete")
|
||||
|
||||
if direct:
|
||||
GPIO.setup(boot_sel, GPIO.IN) # Once booted, the Pi should not need to drive boot_sel
|
||||
GPIO.setup(rst_n, GPIO.OUT, initial=GPIO.HIGH) # Once booted, the Pi should not need to drive reset
|
||||
#GPIO.cleanup()
|
||||
# Once booted, the Pi should not need to drive boot_sel and reset
|
||||
BOOT_SEL_PIN.switch_to_input()
|
||||
RST_N_PIN.value=True
|
||||
else:
|
||||
#bus = smbus.SMBus(1)
|
||||
bus = SMBus(1)
|
||||
|
||||
# reset BOOT_SEL
|
||||
data_to_write = 0xFE
|
||||
bus.write_byte_data(0x20, 3, data_to_write)
|
||||
data_to_write = 0xFF
|
||||
bus.write_byte_data(0x20, 7, data_to_write)
|
||||
# Reset BOOT_SEL to default state
|
||||
with SMBus(1) as bus:
|
||||
bus.write_byte_data(I2C_ADDRESS, 3, 0xFE)
|
||||
bus.write_byte_data(I2C_ADDRESS, 7, 0xFF)
|
||||
|
||||
|
||||
def setup_spi(max_spi_speed_mhz: float) -> busio.SPI:
|
||||
"""
|
||||
Set up the SPI bus.
|
||||
|
||||
Args:
|
||||
max_spi_speed_mhz (float): Max SPI speed in MHz.
|
||||
|
||||
Returns:
|
||||
busio.SPI: Configured SPI bus.
|
||||
"""
|
||||
spi = busio.SPI(board.SCLK, MOSI=board.MOSI, MISO=board.MISO)
|
||||
while not spi.try_lock():
|
||||
pass
|
||||
spi.configure(baudrate=max_spi_speed_mhz * 1_000_000)
|
||||
return spi
|
||||
|
||||
|
||||
def send_data_over_spi(
|
||||
data: list,
|
||||
spi: busio.SPI,
|
||||
reverse_table: list,
|
||||
verbose: bool,
|
||||
pause_ms: float,
|
||||
direct: bool,
|
||||
delay: bool,
|
||||
) -> None:
|
||||
"""
|
||||
Send data over SPI, handling block transfers and optional delays.
|
||||
|
||||
Args:
|
||||
data (list): Data to send.
|
||||
spi (busio.SPI): Configured SPI bus.
|
||||
reverse_table (list): Table of bit-reversed byte values.
|
||||
verbose (bool): Enable verbose output.
|
||||
pause_ms (float): Pause between blocks in milliseconds.
|
||||
direct (bool): Direct mode flag.
|
||||
delay (bool): Delay startup flag.
|
||||
"""
|
||||
spi_block_size = 4096
|
||||
block_count = 0
|
||||
total_data_length = len(data)
|
||||
for i in range(0, total_data_length, spi_block_size):
|
||||
block = [reverse_table[byte] for byte in data[i : i + spi_block_size]]
|
||||
if verbose:
|
||||
print(f"Sending {len(block)} Bytes in block {block_count} checksum 0x{sum(block):X}")
|
||||
spi.write(block)
|
||||
|
||||
# Update the remaining data length after each block transfer
|
||||
remaining_data_length = total_data_length - (i + len(block))
|
||||
handle_block_transfer(
|
||||
block_count, delay, direct, pause_ms, remaining_data_length
|
||||
)
|
||||
block_count += 1
|
||||
|
||||
|
||||
def handle_block_transfer(
|
||||
block_count: int, delay: bool, direct: bool, pause_ms: float, remaining_data_length: int
|
||||
) -> None:
|
||||
"""
|
||||
Handle specifics of block transfer, including initial delays and conditional logic for direct mode.
|
||||
|
||||
Args:
|
||||
block_count (int): Number of blocks sent.
|
||||
delay (bool): Delay startup flag.
|
||||
direct (bool): Direct mode flag.
|
||||
pause_ms (float): Pause between blocks in milliseconds.
|
||||
remaining_data_length (int): Length of remaining data to send.
|
||||
"""
|
||||
if block_count == 0:
|
||||
# Long delay for PLL reboot
|
||||
time.sleep(0.1)
|
||||
|
||||
if delay:
|
||||
# release boot_sel early to prevent startup
|
||||
if direct:
|
||||
# release boot_sel early to prevent startup
|
||||
BOOT_SEL_PIN.switch_to_input()
|
||||
else:
|
||||
# Reset BOOT_SEL to default state
|
||||
with SMBus(1) as bus:
|
||||
bus.write_byte_data(I2C_ADDRESS, 3, 0xFE)
|
||||
bus.write_byte_data(I2C_ADDRESS, 7, 0xFF)
|
||||
|
||||
elif remaining_data_length > 0:
|
||||
time.sleep(pause_ms / 1000)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
start_time = time.time()
|
||||
parser = argparse.ArgumentParser(description='Load an image via SPI slave from an RPi')
|
||||
parser.add_argument('bin_filename', help='binary file name')
|
||||
parser.add_argument('--direct', action='store_true', \
|
||||
help='Use just direct GPIO outputs rather than using the XVF3510 Development Kit Pi HAT')
|
||||
parser.add_argument('--delay', action='store_true', \
|
||||
help='Delay xvf3510 device start. Release the BootSel pin early to prevent the XVF3510 (V4.0.0 onwards) from starting with the default I2S configuration. This gives AP a chance to configure and start the XVF3510 device.')
|
||||
parser.add_argument('--max-spi-speed-mhz', type=float, default=5, \
|
||||
help='Max SPI speed in MHz')
|
||||
parser.add_argument('--block-transfer-pause-ms', type=float, default=1, \
|
||||
help='pause between SPI transfers in milliseconds, default 1ms')
|
||||
parser.add_argument('--verbose', action='store_true', \
|
||||
help='print debug information')
|
||||
|
||||
parser = argparse.ArgumentParser(description="Load an image via SPI slave from an RPi")
|
||||
parser.add_argument("bin_filename", help="binary file name")
|
||||
parser.add_argument("--direct", action="store_true", help="Use direct GPIO outputs rather than the XVF3510 Development Kit Pi HAT")
|
||||
parser.add_argument("--delay", action="store_true", help="Delay xvf3510 device start")
|
||||
parser.add_argument("--max-spi-speed-mhz", type=float, default=5, help="Max SPI speed in MHz")
|
||||
parser.add_argument("--block-transfer-pause-ms", type=float, default=1, help="Pause between SPI transfers in milliseconds")
|
||||
parser.add_argument("--verbose", action="store_true", help="Print debug information")
|
||||
args = parser.parse_args()
|
||||
|
||||
if not Path(args.bin_filename).is_file():
|
||||
print("Error: input file {} not found".format(args.bin_filename))
|
||||
exit(1)
|
||||
|
||||
send_image(args.bin_filename, args.verbose, args.max_spi_speed_mhz, args.block_transfer_pause_ms, args.direct, args.delay)
|
||||
bin_path = Path(args.bin_filename)
|
||||
if not bin_path.is_file():
|
||||
print(f"Error: input file {bin_path} not found")
|
||||
sys.exit(1)
|
||||
|
||||
start_time = time.time()
|
||||
send_image(
|
||||
bin_path,
|
||||
args.verbose,
|
||||
args.max_spi_speed_mhz,
|
||||
args.block_transfer_pause_ms,
|
||||
args.direct,
|
||||
args.delay,
|
||||
)
|
||||
end_time = time.time()
|
||||
|
||||
BOOT_SEL_PIN.deinit()
|
||||
RST_N_PIN.deinit()
|
||||
|
||||
if args.verbose:
|
||||
print("Sending image took {:.3} seconds".format(end_time - start_time))
|
||||
print(f"Sending image took {end_time - start_time:.3f} seconds")
|
||||
|
||||
|
|
|
@ -10,8 +10,6 @@ StandardError=null
|
|||
ExecStart=/usr/bin/ovos-bus-server
|
||||
Restart=always
|
||||
StartLimitInterval=0
|
||||
CPUSchedulingPolicy=fifo
|
||||
CPUSchedulingPriority=49
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
|
|
@ -0,0 +1,128 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import argparse
|
||||
from collections import namedtuple
|
||||
import re
|
||||
|
||||
from kconfiglib import Kconfig
|
||||
|
||||
|
||||
# Can be either "CONFIG_OPTION=(y|m|n)" or "# CONFIG_OPTION is not set"
|
||||
regex = re.compile(
|
||||
r"^(CONFIG_(?P<option_set>[A-Z0-9_]+)=(?P<value>[mny])"
|
||||
r"|# CONFIG_(?P<option_unset>[A-Z0-9_]+) is not set)$"
|
||||
)
|
||||
|
||||
# use namedtuple as a lightweight representation of fragment-defined options
|
||||
OptionValue = namedtuple("OptionValue", ["option", "value", "file", "line"])
|
||||
|
||||
|
||||
def parse_fragment(
|
||||
filename: str, strip_path_prefix: str = None
|
||||
) -> dict[str, OptionValue]:
|
||||
"""
|
||||
Parse Buildroot Kconfig fragment and return dict of OptionValue objects.
|
||||
"""
|
||||
options: dict[str, OptionValue] = {}
|
||||
|
||||
with open(filename) as f:
|
||||
if strip_path_prefix and filename.startswith(strip_path_prefix):
|
||||
filename = filename[len(strip_path_prefix) :]
|
||||
|
||||
for line_number, line in enumerate(f, 1):
|
||||
if matches := re.match(regex, line):
|
||||
if matches["option_unset"]:
|
||||
value = OptionValue(
|
||||
matches["option_unset"], None, filename, line_number
|
||||
)
|
||||
options.update({matches.group("option_unset"): value})
|
||||
else:
|
||||
value = OptionValue(
|
||||
matches["option_set"], matches["value"], filename, line_number
|
||||
)
|
||||
options.update({matches.group("option_set"): value})
|
||||
|
||||
return options
|
||||
|
||||
|
||||
def _format_message(
|
||||
message: str, file: str, line: int, github_format: bool = False
|
||||
) -> str:
|
||||
"""
|
||||
Format message with source file and line number.
|
||||
"""
|
||||
if github_format:
|
||||
return f"::warning file={file},line={line}::{message}"
|
||||
return f"{message} (defined in {file}:{line})"
|
||||
|
||||
|
||||
def compare_configs(
|
||||
expected_options: dict[str, OptionValue],
|
||||
kconfig: Kconfig,
|
||||
github_format: bool = False,
|
||||
) -> None:
|
||||
"""
|
||||
Compare dictionary of expected options with actual Kconfig representation.
|
||||
"""
|
||||
for option, spec in expected_options.items():
|
||||
if option not in kconfig.syms:
|
||||
print(
|
||||
_format_message(
|
||||
f"{option}={spec.value} not found",
|
||||
file=spec.file,
|
||||
line=spec.line,
|
||||
github_format=github_format,
|
||||
)
|
||||
)
|
||||
elif (val := kconfig.syms[option].str_value) != spec.value:
|
||||
if spec.value is None and val == "n":
|
||||
continue
|
||||
print(
|
||||
_format_message(
|
||||
f"{option}={spec.value} requested, actual = {val}",
|
||||
file=spec.file,
|
||||
line=spec.line,
|
||||
github_format=github_format,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument(
|
||||
"--src-kconfig", help="Path to top-level Kconfig file", required=True
|
||||
)
|
||||
parser.add_argument(
|
||||
"--actual-config",
|
||||
help="Path to config with actual config values (.config)",
|
||||
required=True,
|
||||
)
|
||||
parser.add_argument(
|
||||
"--github-format",
|
||||
action="store_true",
|
||||
help="Use Github Workflow commands output format",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-s",
|
||||
"--strip-path-prefix",
|
||||
help="Path prefix to strip in the output from config fragment paths",
|
||||
)
|
||||
parser.add_argument("fragments", nargs="+", help="Paths to source config fragments")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
expected_options: dict[str, OptionValue] = {}
|
||||
|
||||
for f in args.fragments:
|
||||
expected_options.update(
|
||||
parse_fragment(f, strip_path_prefix=args.strip_path_prefix)
|
||||
)
|
||||
|
||||
kconfig = Kconfig(args.src_kconfig, warn_to_stderr=False)
|
||||
kconfig.load_config(args.actual_config)
|
||||
|
||||
compare_configs(expected_options, kconfig, github_format=args.github_format)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue