Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) // SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /* DVB USB compliant linux driver for mobile DVB-T USB devices based on
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  * reference designs made by DiBcom (http://www.dibcom.fr/) (DiB3000M-C/P)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  * Copyright (C) 2004-5 Patrick Boettcher (patrick.boettcher@posteo.de)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  * based on GPL code from DiBcom, which has
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  * Copyright (C) 2004 Amaury Demol for DiBcom
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)  * see Documentation/driver-api/media/drivers/dvb-usb.rst for more information
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) #include "dibusb.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) /* USB Driver stuff */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) static struct dvb_usb_device_properties dibusb_mc_properties;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) static int dibusb_mc_probe(struct usb_interface *intf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 		const struct usb_device_id *id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 	return dvb_usb_device_init(intf, &dibusb_mc_properties, THIS_MODULE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 				   NULL, adapter_nr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) /* do not change the order of the ID table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) static struct usb_device_id dibusb_dib3000mc_table [] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) /* 00 */	{ USB_DEVICE(USB_VID_DIBCOM,		USB_PID_DIBCOM_MOD3001_COLD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) /* 01 */	{ USB_DEVICE(USB_VID_DIBCOM,		USB_PID_DIBCOM_MOD3001_WARM) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) /* 02 */	{ USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC,	USB_PID_ULTIMA_TVBOX_USB2_COLD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) /* 03 */	{ USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC,	USB_PID_ULTIMA_TVBOX_USB2_WARM) }, // ( ? )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) /* 04 */	{ USB_DEVICE(USB_VID_LITEON,		USB_PID_LITEON_DVB_T_COLD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) /* 05 */	{ USB_DEVICE(USB_VID_LITEON,		USB_PID_LITEON_DVB_T_WARM) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) /* 06 */	{ USB_DEVICE(USB_VID_EMPIA,		USB_PID_DIGIVOX_MINI_SL_COLD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) /* 07 */	{ USB_DEVICE(USB_VID_EMPIA,		USB_PID_DIGIVOX_MINI_SL_WARM) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) /* 08 */	{ USB_DEVICE(USB_VID_GRANDTEC,          USB_PID_GRANDTEC_DVBT_USB2_COLD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) /* 09 */	{ USB_DEVICE(USB_VID_GRANDTEC,          USB_PID_GRANDTEC_DVBT_USB2_WARM) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) /* 10 */	{ USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC,	USB_PID_ARTEC_T14_COLD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) /* 11 */	{ USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC,	USB_PID_ARTEC_T14_WARM) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) /* 12 */	{ USB_DEVICE(USB_VID_LEADTEK,		USB_PID_WINFAST_DTV_DONGLE_COLD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) /* 13 */	{ USB_DEVICE(USB_VID_LEADTEK,		USB_PID_WINFAST_DTV_DONGLE_WARM) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) /* 14 */	{ USB_DEVICE(USB_VID_HUMAX_COEX,	USB_PID_DVB_T_USB_STICK_HIGH_SPEED_COLD) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) /* 15 */	{ USB_DEVICE(USB_VID_HUMAX_COEX,	USB_PID_DVB_T_USB_STICK_HIGH_SPEED_WARM) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 			{ }		/* Terminating entry */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) MODULE_DEVICE_TABLE (usb, dibusb_dib3000mc_table);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) static struct dvb_usb_device_properties dibusb_mc_properties = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	.caps = DVB_USB_IS_AN_I2C_ADAPTER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 	.usb_ctrl = CYPRESS_FX2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	.firmware = "dvb-usb-dibusb-6.0.0.8.fw",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 	.num_adapters = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	.adapter = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 		{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 		.num_frontends = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 		.fe = {{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 			.caps = DVB_USB_ADAP_HAS_PID_FILTER | DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 			.pid_filter_count = 32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 			.streaming_ctrl   = dibusb2_0_streaming_ctrl,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 			.pid_filter       = dibusb_pid_filter,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 			.pid_filter_ctrl  = dibusb_pid_filter_ctrl,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 			.frontend_attach  = dibusb_dib3000mc_frontend_attach,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 			.tuner_attach     = dibusb_dib3000mc_tuner_attach,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 	/* parameter for the MPEG2-data transfer */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 			.stream = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 				.type = USB_BULK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 				.count = 8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 				.endpoint = 0x06,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 				.u = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 					.bulk = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 						.buffersize = 4096,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 					}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 				}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 			},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 		}},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 			.size_of_priv     = sizeof(struct dibusb_state),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 	.power_ctrl       = dibusb2_0_power_ctrl,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	.rc.legacy = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 		.rc_interval      = DEFAULT_RC_INTERVAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 		.rc_map_table     = rc_map_dibusb_table,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 		.rc_map_size      = 111, /* FIXME */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 		.rc_query         = dibusb_rc_query,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 	.i2c_algo         = &dibusb_i2c_algo,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 	.generic_bulk_ctrl_endpoint = 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 	.num_device_descs = 8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 	.devices = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 		{   "DiBcom USB2.0 DVB-T reference design (MOD3000P)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 			{ &dibusb_dib3000mc_table[0], NULL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 			{ &dibusb_dib3000mc_table[1], NULL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 		},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 		{   "Artec T1 USB2.0 TVBOX (please check the warm ID)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 			{ &dibusb_dib3000mc_table[2], NULL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 			{ &dibusb_dib3000mc_table[3], NULL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 		},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 		{   "LITE-ON USB2.0 DVB-T Tuner",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 		    /* Also rebranded as Intuix S800, Toshiba */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 			{ &dibusb_dib3000mc_table[4], NULL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 			{ &dibusb_dib3000mc_table[5], NULL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 		},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 		{   "MSI Digivox Mini SL",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 			{ &dibusb_dib3000mc_table[6], NULL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 			{ &dibusb_dib3000mc_table[7], NULL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 		},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 		{   "GRAND - USB2.0 DVB-T adapter",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 			{ &dibusb_dib3000mc_table[8], NULL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 			{ &dibusb_dib3000mc_table[9], NULL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 		},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 		{   "Artec T14 - USB2.0 DVB-T",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 			{ &dibusb_dib3000mc_table[10], NULL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 			{ &dibusb_dib3000mc_table[11], NULL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 		},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 		{   "Leadtek - USB2.0 Winfast DTV dongle",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 			{ &dibusb_dib3000mc_table[12], NULL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 			{ &dibusb_dib3000mc_table[13], NULL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 		},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 		{   "Humax/Coex DVB-T USB Stick 2.0 High Speed",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 			{ &dibusb_dib3000mc_table[14], NULL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 			{ &dibusb_dib3000mc_table[15], NULL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 		},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 		{ NULL },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) static struct usb_driver dibusb_mc_driver = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 	.name		= "dvb_usb_dibusb_mc",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) 	.probe		= dibusb_mc_probe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 	.disconnect = dvb_usb_device_exit,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 	.id_table	= dibusb_dib3000mc_table,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) module_usb_driver(dibusb_mc_driver);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) MODULE_AUTHOR("Patrick Boettcher <patrick.boettcher@posteo.de>");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) MODULE_DESCRIPTION("Driver for DiBcom USB2.0 DVB-T (DiB3000M-C/P based) devices");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) MODULE_VERSION("1.0");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) MODULE_LICENSE("GPL");