|
@@ -81,26 +81,26 @@ static void em28xx_pre_card_setup(struct em28xx *dev);
|
|
|
*/
|
|
|
|
|
|
/* Reset for the most [analog] boards */
|
|
|
-static struct em28xx_reg_seq default_analog[] = {
|
|
|
+static const struct em28xx_reg_seq default_analog[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0x6d, ~EM_GPIO_4, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
/* Reset for the most [digital] boards */
|
|
|
-static struct em28xx_reg_seq default_digital[] = {
|
|
|
+static const struct em28xx_reg_seq default_digital[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0x6e, ~EM_GPIO_4, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
/* Board Hauppauge WinTV HVR 900 analog */
|
|
|
-static struct em28xx_reg_seq hauppauge_wintv_hvr_900_analog[] = {
|
|
|
+static const struct em28xx_reg_seq hauppauge_wintv_hvr_900_analog[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0x2d, ~EM_GPIO_4, 10},
|
|
|
{ 0x05, 0xff, 0x10, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
/* Board Hauppauge WinTV HVR 900 digital */
|
|
|
-static struct em28xx_reg_seq hauppauge_wintv_hvr_900_digital[] = {
|
|
|
+static const struct em28xx_reg_seq hauppauge_wintv_hvr_900_digital[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0x2e, ~EM_GPIO_4, 10},
|
|
|
{EM2880_R04_GPO, 0x04, 0x0f, 10},
|
|
|
{EM2880_R04_GPO, 0x0c, 0x0f, 10},
|
|
@@ -108,14 +108,14 @@ static struct em28xx_reg_seq hauppauge_wintv_hvr_900_digital[] = {
|
|
|
};
|
|
|
|
|
|
/* Board Hauppauge WinTV HVR 900 (R2) digital */
|
|
|
-static struct em28xx_reg_seq hauppauge_wintv_hvr_900R2_digital[] = {
|
|
|
+static const struct em28xx_reg_seq hauppauge_wintv_hvr_900R2_digital[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0x2e, ~EM_GPIO_4, 10},
|
|
|
{EM2880_R04_GPO, 0x0c, 0x0f, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
/* Boards - EM2880 MSI DIGIVOX AD and EM2880_BOARD_MSI_DIGIVOX_AD_II */
|
|
|
-static struct em28xx_reg_seq em2880_msi_digivox_ad_analog[] = {
|
|
|
+static const struct em28xx_reg_seq em2880_msi_digivox_ad_analog[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0x69, ~EM_GPIO_4, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
@@ -126,7 +126,7 @@ static struct em28xx_reg_seq em2880_msi_digivox_ad_analog[] = {
|
|
|
Analog - No input analog */
|
|
|
|
|
|
/* Board - EM2882 Kworld 315U digital */
|
|
|
-static struct em28xx_reg_seq em2882_kworld_315u_digital[] = {
|
|
|
+static const struct em28xx_reg_seq em2882_kworld_315u_digital[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0xff, 0xff, 10},
|
|
|
{EM2820_R08_GPIO_CTRL, 0xfe, 0xff, 10},
|
|
|
{EM2880_R04_GPO, 0x04, 0xff, 10},
|
|
@@ -135,7 +135,7 @@ static struct em28xx_reg_seq em2882_kworld_315u_digital[] = {
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq em2882_kworld_315u_tuner_gpio[] = {
|
|
|
+static const struct em28xx_reg_seq em2882_kworld_315u_tuner_gpio[] = {
|
|
|
{EM2880_R04_GPO, 0x08, 0xff, 10},
|
|
|
{EM2880_R04_GPO, 0x0c, 0xff, 10},
|
|
|
{EM2880_R04_GPO, 0x08, 0xff, 10},
|
|
@@ -143,13 +143,13 @@ static struct em28xx_reg_seq em2882_kworld_315u_tuner_gpio[] = {
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq kworld_330u_analog[] = {
|
|
|
+static const struct em28xx_reg_seq kworld_330u_analog[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0x6d, ~EM_GPIO_4, 10},
|
|
|
{EM2880_R04_GPO, 0x00, 0xff, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq kworld_330u_digital[] = {
|
|
|
+static const struct em28xx_reg_seq kworld_330u_digital[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0x6e, ~EM_GPIO_4, 10},
|
|
|
{EM2880_R04_GPO, 0x08, 0xff, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
@@ -161,12 +161,12 @@ static struct em28xx_reg_seq kworld_330u_digital[] = {
|
|
|
GPIO4 - xc3028 reset
|
|
|
GOP3 - s5h1409 reset
|
|
|
*/
|
|
|
-static struct em28xx_reg_seq evga_indtube_analog[] = {
|
|
|
+static const struct em28xx_reg_seq evga_indtube_analog[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0x79, 0xff, 60},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq evga_indtube_digital[] = {
|
|
|
+static const struct em28xx_reg_seq evga_indtube_digital[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0x7a, 0xff, 1},
|
|
|
{EM2880_R04_GPO, 0x04, 0xff, 10},
|
|
|
{EM2880_R04_GPO, 0x0c, 0xff, 1},
|
|
@@ -184,12 +184,12 @@ static struct em28xx_reg_seq evga_indtube_digital[] = {
|
|
|
* EM_GPIO_6 - currently unknown
|
|
|
* EM_GPIO_7 - currently unknown
|
|
|
*/
|
|
|
-static struct em28xx_reg_seq kworld_a340_digital[] = {
|
|
|
+static const struct em28xx_reg_seq kworld_a340_digital[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0x6d, ~EM_GPIO_4, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq kworld_ub435q_v3_digital[] = {
|
|
|
+static const struct em28xx_reg_seq kworld_ub435q_v3_digital[] = {
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xff, 0xff, 100},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xfe, 0xff, 100},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xbe, 0xff, 100},
|
|
@@ -198,25 +198,25 @@ static struct em28xx_reg_seq kworld_ub435q_v3_digital[] = {
|
|
|
};
|
|
|
|
|
|
/* Pinnacle Hybrid Pro eb1a:2881 */
|
|
|
-static struct em28xx_reg_seq pinnacle_hybrid_pro_analog[] = {
|
|
|
+static const struct em28xx_reg_seq pinnacle_hybrid_pro_analog[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0xfd, ~EM_GPIO_4, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq pinnacle_hybrid_pro_digital[] = {
|
|
|
+static const struct em28xx_reg_seq pinnacle_hybrid_pro_digital[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0x6e, ~EM_GPIO_4, 10},
|
|
|
{EM2880_R04_GPO, 0x04, 0xff, 100},/* zl10353 reset */
|
|
|
{EM2880_R04_GPO, 0x0c, 0xff, 1},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq terratec_cinergy_USB_XS_FR_analog[] = {
|
|
|
+static const struct em28xx_reg_seq terratec_cinergy_USB_XS_FR_analog[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0x6d, ~EM_GPIO_4, 10},
|
|
|
{EM2880_R04_GPO, 0x00, 0xff, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq terratec_cinergy_USB_XS_FR_digital[] = {
|
|
|
+static const struct em28xx_reg_seq terratec_cinergy_USB_XS_FR_digital[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0x6e, ~EM_GPIO_4, 10},
|
|
|
{EM2880_R04_GPO, 0x08, 0xff, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
@@ -226,7 +226,7 @@ static struct em28xx_reg_seq terratec_cinergy_USB_XS_FR_digital[] = {
|
|
|
0-5: not used
|
|
|
6: demod reset, active low
|
|
|
7: LED on, active high */
|
|
|
-static struct em28xx_reg_seq em2874_pctv_80e_digital[] = {
|
|
|
+static const struct em28xx_reg_seq em2874_pctv_80e_digital[] = {
|
|
|
{EM28XX_R06_I2C_CLK, 0x45, 0xff, 10}, /*400 KHz*/
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x00, 0xff, 100},/*Demod reset*/
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x40, 0xff, 10},
|
|
@@ -236,7 +236,7 @@ static struct em28xx_reg_seq em2874_pctv_80e_digital[] = {
|
|
|
/* eb1a:2868 Reddo DVB-C USB TV Box
|
|
|
GPIO4 - CU1216L NIM
|
|
|
Other GPIOs seems to be don't care. */
|
|
|
-static struct em28xx_reg_seq reddo_dvb_c_usb_box[] = {
|
|
|
+static const struct em28xx_reg_seq reddo_dvb_c_usb_box[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0xfe, 0xff, 10},
|
|
|
{EM2820_R08_GPIO_CTRL, 0xde, 0xff, 10},
|
|
|
{EM2820_R08_GPIO_CTRL, 0xfe, 0xff, 10},
|
|
@@ -248,7 +248,7 @@ static struct em28xx_reg_seq reddo_dvb_c_usb_box[] = {
|
|
|
};
|
|
|
|
|
|
/* Callback for the most boards */
|
|
|
-static struct em28xx_reg_seq default_tuner_gpio[] = {
|
|
|
+static const struct em28xx_reg_seq default_tuner_gpio[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, EM_GPIO_4, EM_GPIO_4, 10},
|
|
|
{EM2820_R08_GPIO_CTRL, 0, EM_GPIO_4, 10},
|
|
|
{EM2820_R08_GPIO_CTRL, EM_GPIO_4, EM_GPIO_4, 10},
|
|
@@ -256,58 +256,58 @@ static struct em28xx_reg_seq default_tuner_gpio[] = {
|
|
|
};
|
|
|
|
|
|
/* Mute/unmute */
|
|
|
-static struct em28xx_reg_seq compro_unmute_tv_gpio[] = {
|
|
|
+static const struct em28xx_reg_seq compro_unmute_tv_gpio[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 5, 7, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq compro_unmute_svid_gpio[] = {
|
|
|
+static const struct em28xx_reg_seq compro_unmute_svid_gpio[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 4, 7, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq compro_mute_gpio[] = {
|
|
|
+static const struct em28xx_reg_seq compro_mute_gpio[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 6, 7, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
/* Terratec AV350 */
|
|
|
-static struct em28xx_reg_seq terratec_av350_mute_gpio[] = {
|
|
|
+static const struct em28xx_reg_seq terratec_av350_mute_gpio[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0xff, 0x7f, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq terratec_av350_unmute_gpio[] = {
|
|
|
+static const struct em28xx_reg_seq terratec_av350_unmute_gpio[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0xff, 0xff, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq silvercrest_reg_seq[] = {
|
|
|
+static const struct em28xx_reg_seq silvercrest_reg_seq[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0xff, 0xff, 10},
|
|
|
{EM2820_R08_GPIO_CTRL, 0x01, 0xf7, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq vc211a_enable[] = {
|
|
|
+static const struct em28xx_reg_seq vc211a_enable[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0xff, 0x07, 10},
|
|
|
{EM2820_R08_GPIO_CTRL, 0xff, 0x0f, 10},
|
|
|
{EM2820_R08_GPIO_CTRL, 0xff, 0x0b, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq dikom_dk300_digital[] = {
|
|
|
+static const struct em28xx_reg_seq dikom_dk300_digital[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0x6e, ~EM_GPIO_4, 10},
|
|
|
{EM2880_R04_GPO, 0x08, 0xff, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
/* Reset for the most [digital] boards */
|
|
|
-static struct em28xx_reg_seq leadership_digital[] = {
|
|
|
+static const struct em28xx_reg_seq leadership_digital[] = {
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x70, 0xff, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq leadership_reset[] = {
|
|
|
+static const struct em28xx_reg_seq leadership_reset[] = {
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xf0, 0xff, 10},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xb0, 0xff, 10},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xf0, 0xff, 10},
|
|
@@ -318,7 +318,7 @@ static struct em28xx_reg_seq leadership_reset[] = {
|
|
|
* GPIO_6 - demod reset
|
|
|
* GPIO_7 - LED
|
|
|
*/
|
|
|
-static struct em28xx_reg_seq pctv_290e[] = {
|
|
|
+static const struct em28xx_reg_seq pctv_290e[] = {
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x00, 0xff, 80},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x40, 0xff, 80}, /* GPIO_6 = 1 */
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xc0, 0xff, 80}, /* GPIO_7 = 1 */
|
|
@@ -326,7 +326,7 @@ static struct em28xx_reg_seq pctv_290e[] = {
|
|
|
};
|
|
|
|
|
|
#if 0
|
|
|
-static struct em28xx_reg_seq terratec_h5_gpio[] = {
|
|
|
+static const struct em28xx_reg_seq terratec_h5_gpio[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0xff, 0xff, 10},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xf6, 0xff, 100},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xf2, 0xff, 50},
|
|
@@ -334,7 +334,7 @@ static struct em28xx_reg_seq terratec_h5_gpio[] = {
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq terratec_h5_digital[] = {
|
|
|
+static const struct em28xx_reg_seq terratec_h5_digital[] = {
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xf6, 0xff, 10},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xe6, 0xff, 100},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xa6, 0xff, 10},
|
|
@@ -352,7 +352,7 @@ static struct em28xx_reg_seq terratec_h5_digital[] = {
|
|
|
* GPIO_6 - RESET_DEM
|
|
|
* GPIO_7 - LED (green LED)
|
|
|
*/
|
|
|
-static struct em28xx_reg_seq pctv_460e[] = {
|
|
|
+static const struct em28xx_reg_seq pctv_460e[] = {
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x01, 0xff, 50},
|
|
|
{ 0x0d, 0xff, 0xff, 50},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x41, 0xff, 50}, /* GPIO_6=1 */
|
|
@@ -361,7 +361,7 @@ static struct em28xx_reg_seq pctv_460e[] = {
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq c3tech_digital_duo_digital[] = {
|
|
|
+static const struct em28xx_reg_seq c3tech_digital_duo_digital[] = {
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xff, 0xff, 10},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xfd, 0xff, 10}, /* xc5000 reset */
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xf9, 0xff, 35},
|
|
@@ -384,7 +384,7 @@ static struct em28xx_reg_seq c3tech_digital_duo_digital[] = {
|
|
|
* GPIO 6 = #RESET_DEM
|
|
|
* GPIO 7 = P07_LED (green LED)
|
|
|
*/
|
|
|
-static struct em28xx_reg_seq pctv_461e[] = {
|
|
|
+static const struct em28xx_reg_seq pctv_461e[] = {
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x7f, 0xff, 0},
|
|
|
{0x0d, 0xff, 0xff, 0},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x3f, 0xff, 100}, /* reset demod */
|
|
@@ -396,7 +396,7 @@ static struct em28xx_reg_seq pctv_461e[] = {
|
|
|
};
|
|
|
|
|
|
#if 0
|
|
|
-static struct em28xx_reg_seq hauppauge_930c_gpio[] = {
|
|
|
+static const struct em28xx_reg_seq hauppauge_930c_gpio[] = {
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x6f, 0xff, 10},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x4f, 0xff, 10}, /* xc5000 reset */
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x6f, 0xff, 10},
|
|
@@ -404,7 +404,7 @@ static struct em28xx_reg_seq hauppauge_930c_gpio[] = {
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq hauppauge_930c_digital[] = {
|
|
|
+static const struct em28xx_reg_seq hauppauge_930c_digital[] = {
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xf6, 0xff, 10},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xe6, 0xff, 100},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xa6, 0xff, 10},
|
|
@@ -417,7 +417,7 @@ static struct em28xx_reg_seq hauppauge_930c_digital[] = {
|
|
|
* GPIO_6 - demod reset, 0=active
|
|
|
* GPIO_7 - LED, 0=active
|
|
|
*/
|
|
|
-static struct em28xx_reg_seq maxmedia_ub425_tc[] = {
|
|
|
+static const struct em28xx_reg_seq maxmedia_ub425_tc[] = {
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x83, 0xff, 100},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xc3, 0xff, 100}, /* GPIO_6 = 1 */
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x43, 0xff, 000}, /* GPIO_7 = 0 */
|
|
@@ -430,7 +430,7 @@ static struct em28xx_reg_seq maxmedia_ub425_tc[] = {
|
|
|
* GPIO_6: demod reset, 0=active
|
|
|
* GPIO_7: LED, 1=active
|
|
|
*/
|
|
|
-static struct em28xx_reg_seq pctv_510e[] = {
|
|
|
+static const struct em28xx_reg_seq pctv_510e[] = {
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x10, 0xff, 100},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x14, 0xff, 100}, /* GPIO_2 = 1 */
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x54, 0xff, 050}, /* GPIO_6 = 1 */
|
|
@@ -443,7 +443,7 @@ static struct em28xx_reg_seq pctv_510e[] = {
|
|
|
* GPIO_6: demod reset, 0=active
|
|
|
* GPIO_7: LED, 1=active
|
|
|
*/
|
|
|
-static struct em28xx_reg_seq pctv_520e[] = {
|
|
|
+static const struct em28xx_reg_seq pctv_520e[] = {
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x10, 0xff, 100},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x14, 0xff, 100}, /* GPIO_2 = 1 */
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0x54, 0xff, 050}, /* GPIO_6 = 1 */
|
|
@@ -460,13 +460,13 @@ static struct em28xx_reg_seq pctv_520e[] = {
|
|
|
* reg 0x81/0x85:
|
|
|
* GPIO_7: snapshot button, 0=pressed, 1=unpressed
|
|
|
*/
|
|
|
-static struct em28xx_reg_seq speedlink_vad_laplace_reg_seq[] = {
|
|
|
+static const struct em28xx_reg_seq speedlink_vad_laplace_reg_seq[] = {
|
|
|
{EM2820_R08_GPIO_CTRL, 0xf7, 0xff, 10},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xff, 0xb2, 10},
|
|
|
{ -1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq pctv_292e[] = {
|
|
|
+static const struct em28xx_reg_seq pctv_292e[] = {
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xff, 0xff, 0},
|
|
|
{0x0d, 0xff, 0xff, 950},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xbd, 0xff, 100},
|
|
@@ -478,7 +478,7 @@ static struct em28xx_reg_seq pctv_292e[] = {
|
|
|
{-1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq terratec_t2_stick_hd[] = {
|
|
|
+static const struct em28xx_reg_seq terratec_t2_stick_hd[] = {
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xff, 0xff, 0},
|
|
|
{0x0d, 0xff, 0xff, 600},
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xfc, 0xff, 10},
|
|
@@ -492,7 +492,7 @@ static struct em28xx_reg_seq terratec_t2_stick_hd[] = {
|
|
|
{-1, -1, -1, -1},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_reg_seq plex_px_bcud[] = {
|
|
|
+static const struct em28xx_reg_seq plex_px_bcud[] = {
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xff, 0xff, 0},
|
|
|
{0x0d, 0xff, 0xff, 0},
|
|
|
{EM2874_R50_IR_CONFIG, 0x01, 0xff, 0},
|
|
@@ -519,7 +519,7 @@ static struct em28xx_reg_seq plex_px_bcud[] = {
|
|
|
* GPIO_5: Reset #2, 0=active
|
|
|
* GPIO_6: Reset #1, 0=active
|
|
|
*/
|
|
|
-static struct em28xx_reg_seq hauppauge_dualhd_dvb[] = {
|
|
|
+static const struct em28xx_reg_seq hauppauge_dualhd_dvb[] = {
|
|
|
{EM2874_R80_GPIO_P0_CTRL, 0xff, 0xff, 0},
|
|
|
{0x0d, 0xff, 0xff, 200},
|
|
|
{0x50, 0x04, 0xff, 300},
|
|
@@ -536,7 +536,7 @@ static struct em28xx_reg_seq hauppauge_dualhd_dvb[] = {
|
|
|
/*
|
|
|
* Button definitions
|
|
|
*/
|
|
|
-static struct em28xx_button std_snapshot_button[] = {
|
|
|
+static const struct em28xx_button std_snapshot_button[] = {
|
|
|
{
|
|
|
.role = EM28XX_BUTTON_SNAPSHOT,
|
|
|
.reg_r = EM28XX_R0C_USBSUSP,
|
|
@@ -547,7 +547,7 @@ static struct em28xx_button std_snapshot_button[] = {
|
|
|
{-1, 0, 0, 0, 0},
|
|
|
};
|
|
|
|
|
|
-static struct em28xx_button speedlink_vad_laplace_buttons[] = {
|
|
|
+static const struct em28xx_button speedlink_vad_laplace_buttons[] = {
|
|
|
{
|
|
|
.role = EM28XX_BUTTON_SNAPSHOT,
|
|
|
.reg_r = EM2874_R85_GPIO_P1_STATE,
|
|
@@ -631,7 +631,7 @@ static struct em28xx_led hauppauge_dualhd_leds[] = {
|
|
|
/*
|
|
|
* Board definitions
|
|
|
*/
|
|
|
-struct em28xx_board em28xx_boards[] = {
|
|
|
+const struct em28xx_board em28xx_boards[] = {
|
|
|
[EM2750_BOARD_UNKNOWN] = {
|
|
|
.name = "EM2710/EM2750/EM2751 webcam grabber",
|
|
|
.xclk = EM28XX_XCLK_FREQUENCY_20MHZ,
|
|
@@ -2642,7 +2642,7 @@ MODULE_DEVICE_TABLE(usb, em28xx_id_table);
|
|
|
/*
|
|
|
* EEPROM hash table for devices with generic USB IDs
|
|
|
*/
|
|
|
-static struct em28xx_hash_table em28xx_eeprom_hash[] = {
|
|
|
+static const struct em28xx_hash_table em28xx_eeprom_hash[] = {
|
|
|
/* P/N: SA 60002070465 Tuner: TVF7533-MF */
|
|
|
{0x6ce05a8f, EM2820_BOARD_PROLINK_PLAYTV_USB2, TUNER_YMEC_TVF_5533MF},
|
|
|
{0x72cc5a8b, EM2820_BOARD_PROLINK_PLAYTV_BOX4_USB2, TUNER_YMEC_TVF_5533MF},
|
|
@@ -2655,7 +2655,7 @@ static struct em28xx_hash_table em28xx_eeprom_hash[] = {
|
|
|
};
|
|
|
|
|
|
/* I2C devicelist hash table for devices with generic USB IDs */
|
|
|
-static struct em28xx_hash_table em28xx_i2c_hash[] = {
|
|
|
+static const struct em28xx_hash_table em28xx_i2c_hash[] = {
|
|
|
{0xb06a32c3, EM2800_BOARD_TERRATEC_CINERGY_200, TUNER_LG_PAL_NEW_TAPC},
|
|
|
{0xf51200e3, EM2800_BOARD_VGEAR_POCKETTV, TUNER_LG_PAL_NEW_TAPC},
|
|
|
{0x1ba50080, EM2860_BOARD_SAA711X_REFERENCE_DESIGN, TUNER_ABSENT},
|
|
@@ -2687,7 +2687,7 @@ EXPORT_SYMBOL_GPL(em28xx_tuner_callback);
|
|
|
|
|
|
static inline void em28xx_set_xclk_i2c_speed(struct em28xx *dev)
|
|
|
{
|
|
|
- struct em28xx_board *board = &em28xx_boards[dev->model];
|
|
|
+ const struct em28xx_board *board = &em28xx_boards[dev->model];
|
|
|
u8 xclk = board->xclk, i2c_speed = board->i2c_speed;
|
|
|
|
|
|
/* Those are the default values for the majority of boards
|