Skip to content

Commit

Permalink
kernel-packages: add DVB support and drivers
Browse files Browse the repository at this point in the history
Adds DVB drivers intended to be used with tvheadend package and easily available Astrometa USB DVB tuners. More adapters can be added in the future.
This allows users to record and stream TV programs from DVB networks to tvheadend clients.

Changes:
- Add packages for these kernel modules:
  - Multimedia support (installs mc.ko)
  - DVB core (installs dvb-core.ko)
  - DVB USB v2 (installs dvb-usb-v2.ko)
  - Drivers for chips used in Astrometa DVB:
    - Rafael Micro R820T
    - Realtek RTL28xxU, RTL2830, RTL2832
    - Panasonic MN88472 (no firmware)
    - Panasonic MN88473 (no firmware)
    - Sony CXD2841ER
- Added new kernel config lines for v6.6
- USB audio needed a dependecy on kmod-multimedia, when kmod-multimedia is also selected.

Signed-off-by: Marius Dinu <m95d+git@psihoexpert.ro>
  • Loading branch information
M95D committed Oct 29, 2024
1 parent bafa44e commit 151df8b
Show file tree
Hide file tree
Showing 3 changed files with 155 additions and 2 deletions.
139 changes: 137 additions & 2 deletions package/kernel/linux/modules/multimedia.mk
Original file line number Diff line number Diff line change
@@ -1,15 +1,29 @@
MMEDIA_MENU:=Multimedia

define KernelPackage/multimedia
SUBMENU:=$(MMEDIA_MENU)
TITLE:=Multimedia
KCONFIG:= \
CONFIG_MEDIA_SUPPORT \
CONFIG_MEDIA_SUPPORT_FILTER=y \
CONFIG_MEDIA_USB_SUPPORT=y
FILES:=$(LINUX_DIR)/drivers/media/mc/mc.ko
AUTOLOAD:=$(call AutoLoad,80,mc)
endef
define KernelPackage/multimedia/description
Kernel module for Multimedia support (cameras, TV tuners, DVB)
endef
$(eval $(call KernelPackage,multimedia))

#
# Video Capture
#

define KernelPackage/video-core
SUBMENU:=$(MMEDIA_MENU)
TITLE=Video4Linux support
DEPENDS:=+PACKAGE_kmod-i2c-core:kmod-i2c-core
DEPENDS:=+kmod-multimedia +PACKAGE_kmod-i2c-core:kmod-i2c-core
KCONFIG:= \
CONFIG_MEDIA_SUPPORT \
CONFIG_MEDIA_CAMERA_SUPPORT=y \
CONFIG_VIDEO_DEV \
CONFIG_V4L_PLATFORM_DRIVERS=y \
Expand Down Expand Up @@ -664,3 +678,124 @@ define KernelPackage/video-gspca-konica/description
endef

$(eval $(call KernelPackage,video-gspca-konica))

#
# Tuners, radio, DVB
#

define KernelPackage/dvb-core
SUBMENU:=$(MMEDIA_MENU)
TITLE:=DVB core
KCONFIG:= \
CONFIG_MEDIA_ANALOG_TV_SUPPORT=y \
CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y \
CONFIG_DVB_CORE \
CONFIG_DVB_NET=n \
CONFIG_DVB_MAX_ADAPTERS=8 \
CONFIG_DVB_DYNAMIC_MINORS=n \
CONFIG_DVB_PLATFORM_DRIVERS=n
DEPENDS:=kmod-multimedia +kmod-i2c-core
FILES:=$(LINUX_DIR)/drivers/media/dvb-core/dvb-core.ko
AUTOLOAD:=$(call AutoLoad,81,dvb-core)
endef
define KernelPackage/dvb-core/description
Kernel module for generic DVB support.
endef
$(eval $(call KernelPackage,dvb-core))

#### TODO: INSERT HERE DVB-USB (v1)

define KernelPackage/dvb-usb-v2
SUBMENU:=$(MMEDIA_MENU)
TITLE:=DVB USB v2 support
KCONFIG:=CONFIG_DVB_USB_V2
DEPENDS:=kmod-dvb-core @USB_SUPPORT +kmod-usb-core
FILES:=$(LINUX_DIR)/drivers/media/usb/dvb-usb-v2/dvb_usb_v2.ko
AUTOLOAD:=$(call AutoLoad,82,dvb_usb_v2)
endef
define KernelPackage/dvb-usb-v2/description
Kernel module for DVB USB v2 support
endef
$(eval $(call KernelPackage,dvb-usb-v2))

define KernelPackage/dvb-tuner-r820t
SUBMENU:=$(MMEDIA_MENU)
TITLE:=DVB Tuner Rafael Micro R820T
KCONFIG:=CONFIG_MEDIA_TUNER_R820T
DEPENDS:=kmod-dvb-usb-v2
FILES:=$(LINUX_DIR)/drivers/media/tuners/r820t.ko
AUTOLOAD:=$(call AutoLoad,83,r820t)
endef
define KernelPackage/dvb-tuner-r820t/description
Kernel module for Rafael Micro R820T tuner
endef
$(eval $(call KernelPackage,dvb-tuner-r820t))

define KernelPackage/dvb-frontend-mn88472
SUBMENU:=$(MMEDIA_MENU)
TITLE:=DVB-T Panasonic MN88472 (no firmware)
KCONFIG:=CONFIG_DVB_MN88472
DEPENDS:=kmod-dvb-usb-v2 +kmod-regmap-i2c
FILES:=$(LINUX_DIR)/drivers/media/dvb-frontends/mn88472.ko
AUTOLOAD:=$(call AutoLoad,84,mn88472)
endef
define KernelPackage/dvb-frontend-mn88472/description
Kernel module for Panasonic MN88472 DVB-T/T2/C frontend

This chip requires firmware! It is not included due to missing license.
Firmware file: dvb-demod-mn88472-02.fw
Install in: /lib/firmware
endef
$(eval $(call KernelPackage,dvb-frontend-mn88472))

define KernelPackage/dvb-frontend-mn88473
SUBMENU:=$(MMEDIA_MENU)
TITLE:=DVB-T Panasonic MN88473 (no firmware)
KCONFIG:=CONFIG_DVB_MN88473
DEPENDS:=kmod-dvb-usb-v2 +kmod-regmap-i2c
FILES:=$(LINUX_DIR)/drivers/media/dvb-frontends/mn88473.ko
AUTOLOAD:=$(call AutoLoad,84,mn88473)
endef
define KernelPackage/dvb-frontend-mn88473/description
Kernel module for Panasonic MN88473 DVB-T/T2/C frontend

This chip requires firmware! It is not included due to missing license.
Firmware file: dvb-demod-mn88473-01.fw
Install in: /lib/firmware
endef
$(eval $(call KernelPackage,dvb-frontend-mn88473))

define KernelPackage/dvb-frontend-cxd2841er
SUBMENU:=$(MMEDIA_MENU)
TITLE:=DVB-C Sony CXD2841ER
KCONFIG:=CONFIG_DVB_CXD2841ER
DEPENDS:=kmod-dvb-usb-v2
FILES:=$(LINUX_DIR)/drivers/media/dvb-frontends/cxd2841er.ko
AUTOLOAD:=$(call AutoLoad,84,cxd2841er)
endef
define KernelPackage/dvb-frontend-cxd2841er/description
Kernel module for Sony CXD2841ER DVB-C frontend
endef
$(eval $(call KernelPackage,dvb-frontend-cxd2841er))

define KernelPackage/dvb-usb-rtl28xx
SUBMENU:=$(MMEDIA_MENU)
TITLE:=DVB USB Realtek RTL28xx
KCONFIG:= \
CONFIG_DVB_USB_RTL28XXU \
CONFIG_DVB_RTL2830 \
CONFIG_DVB_RTL2832
DEPENDS:=kmod-dvb-usb-v2 +kmod-regmap-i2c +kmod-i2c-mux
FILES:= \
$(LINUX_DIR)/drivers/media/usb/dvb-usb-v2/dvb-usb-rtl28xxu.ko \
$(LINUX_DIR)/drivers/media/dvb-frontends/rtl2830.ko \
$(LINUX_DIR)/drivers/media/dvb-frontends/rtl2832.ko
AUTOLOAD:=$(call AutoLoad,84,rtl2830)
AUTOLOAD:=$(call AutoLoad,84,rtl2832)
AUTOLOAD:=$(call AutoLoad,89,dvb-usb-rtl28xxu)
# rtl28xxu must load after these frontends: MN88472, MN88473, CXD2841ER, RTL2830, RTL2832, R820T, and others not yet added in OpenWrt (see dependencies in kernel_menuconfig help for this module)
endef
define KernelPackage/dvb-usb-rtl28xx/description
Kernel modules for RTL28xxU USB DVB demod and RTL2830 & RTL2832 DVB-T frontends
endef
$(eval $(call KernelPackage,dvb-usb-rtl28xx))
1 change: 1 addition & 0 deletions package/kernel/linux/modules/usb.mk
Original file line number Diff line number Diff line change
Expand Up @@ -574,6 +574,7 @@ define KernelPackage/usb-audio
KCONFIG:= \
CONFIG_SND_USB=y \
CONFIG_SND_USB_AUDIO
DEPENDS:=+PACKAGE_kmod-multimedia:kmod-multimedia
$(call AddDepends/usb)
$(call AddDepends/sound)
FILES:= \
Expand Down
17 changes: 17 additions & 0 deletions target/linux/generic/config-6.6
Original file line number Diff line number Diff line change
Expand Up @@ -1653,6 +1653,7 @@ CONFIG_DUMMY_CONSOLE_ROWS=25
# CONFIG_DVB_B2C2_FLEXCOP_PCI is not set
# CONFIG_DVB_B2C2_FLEXCOP_USB is not set
# CONFIG_DVB_BCM3510 is not set
# CONFIG_DVB_BUDGET_CORE is not set
# CONFIG_DVB_CORE is not set
# CONFIG_DVB_CX22700 is not set
# CONFIG_DVB_CX22702 is not set
Expand Down Expand Up @@ -1773,7 +1774,20 @@ CONFIG_DVB_MAX_ADAPTERS=16
# CONFIG_DVB_TUNER_ITD1000 is not set
# CONFIG_DVB_ULE_DEBUG is not set
# CONFIG_DVB_USB is not set
# CONFIG_DVB_USB_AF9015 is not set
# CONFIG_DVB_USB_AF9035 is not set
# CONFIG_DVB_USB_ANYSEE is not set
# CONFIG_DVB_USB_AU6610 is not set
# CONFIG_DVB_USB_AZ6007 is not set
# CONFIG_DVB_USB_CE6230 is not set
# CONFIG_DVB_USB_DVBSKY is not set
# CONFIG_DVB_USB_EC168 is not set
# CONFIG_DVB_USB_GL861 is not set
# CONFIG_DVB_USB_LME2510 is not set
# CONFIG_DVB_USB_MXL111SF is not set
# CONFIG_DVB_USB_RTL28XXU is not set
# CONFIG_DVB_USB_V2 is not set
# CONFIG_DVB_USB_ZD1301 is not set
# CONFIG_DVB_VES1820 is not set
# CONFIG_DVB_VES1X93 is not set
# CONFIG_DVB_ZD1301_DEMOD is not set
Expand Down Expand Up @@ -7331,6 +7345,9 @@ CONFIG_VHOST_MENU=y
# CONFIG_VIDEO_UPD64031A is not set
# CONFIG_VIDEO_UPD64083 is not set
# CONFIG_VIDEO_USBTV is not set
# CONFIG_VIDEO_USBVISION is not set
# CONFIG_VIDEO_V4L2 is not set
# CONFIG_VIDEO_V4L2_SUBDEV_API is not set
# CONFIG_VIDEO_VP27SMPX is not set
# CONFIG_VIDEO_VPX3220 is not set
# CONFIG_VIDEO_WM8739 is not set
Expand Down

0 comments on commit 151df8b

Please sign in to comment.