aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2013-03-05 20:35:44 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2013-03-21 06:45:06 -0400
commit347d8f1fa69f4dd021f1ca3d69e1527d95f185e0 (patch)
treeec7025a899f91801871cc7c1773ad5adeacf4f1e
parentb4059095ab281b940b52a6a0e826de25eb50e3c7 (diff)
[media] siano: add new devices to the Siano Driver
This patch is based on Doron Cohen's patches: http://patchwork.linuxtv.org/patch/7881/ http://patchwork.linuxtv.org/patch/7888/ http://patchwork.linuxtv.org/patch/7883/ It basically merges the above patches, rebasing them to the macro definitions used upstream, with are different than the ones used by them internally. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/common/siano/sms-cards.c65
-rw-r--r--drivers/media/common/siano/sms-cards.h8
-rw-r--r--drivers/media/mmc/siano/smssdio.c10
-rw-r--r--drivers/media/usb/siano/smsusb.c31
4 files changed, 111 insertions, 3 deletions
diff --git a/drivers/media/common/siano/sms-cards.c b/drivers/media/common/siano/sms-cards.c
index 04bb04ca414f..bb6e558b8120 100644
--- a/drivers/media/common/siano/sms-cards.c
+++ b/drivers/media/common/siano/sms-cards.c
@@ -28,43 +28,53 @@ MODULE_PARM_DESC(cards_dbg, "set debug level (info=1, adv=2 (or-able))");
28static struct sms_board sms_boards[] = { 28static struct sms_board sms_boards[] = {
29 [SMS_BOARD_UNKNOWN] = { 29 [SMS_BOARD_UNKNOWN] = {
30 .name = "Unknown board", 30 .name = "Unknown board",
31 .type = SMS_UNKNOWN_TYPE,
32 .default_mode = DEVICE_MODE_NONE,
31 }, 33 },
32 [SMS1XXX_BOARD_SIANO_STELLAR] = { 34 [SMS1XXX_BOARD_SIANO_STELLAR] = {
33 .name = "Siano Stellar Digital Receiver", 35 .name = "Siano Stellar Digital Receiver",
34 .type = SMS_STELLAR, 36 .type = SMS_STELLAR,
37 .default_mode = DEVICE_MODE_DVBT_BDA,
35 }, 38 },
36 [SMS1XXX_BOARD_SIANO_NOVA_A] = { 39 [SMS1XXX_BOARD_SIANO_NOVA_A] = {
37 .name = "Siano Nova A Digital Receiver", 40 .name = "Siano Nova A Digital Receiver",
38 .type = SMS_NOVA_A0, 41 .type = SMS_NOVA_A0,
42 .default_mode = DEVICE_MODE_DVBT_BDA,
39 }, 43 },
40 [SMS1XXX_BOARD_SIANO_NOVA_B] = { 44 [SMS1XXX_BOARD_SIANO_NOVA_B] = {
41 .name = "Siano Nova B Digital Receiver", 45 .name = "Siano Nova B Digital Receiver",
42 .type = SMS_NOVA_B0, 46 .type = SMS_NOVA_B0,
47 .default_mode = DEVICE_MODE_DVBT_BDA,
43 }, 48 },
44 [SMS1XXX_BOARD_SIANO_VEGA] = { 49 [SMS1XXX_BOARD_SIANO_VEGA] = {
45 .name = "Siano Vega Digital Receiver", 50 .name = "Siano Vega Digital Receiver",
46 .type = SMS_VEGA, 51 .type = SMS_VEGA,
52 .default_mode = DEVICE_MODE_CMMB,
47 }, 53 },
48 [SMS1XXX_BOARD_HAUPPAUGE_CATAMOUNT] = { 54 [SMS1XXX_BOARD_HAUPPAUGE_CATAMOUNT] = {
49 .name = "Hauppauge Catamount", 55 .name = "Hauppauge Catamount",
50 .type = SMS_STELLAR, 56 .type = SMS_STELLAR,
51 .fw[DEVICE_MODE_DVBT_BDA] = "sms1xxx-stellar-dvbt-01.fw", 57 .fw[DEVICE_MODE_DVBT_BDA] = "sms1xxx-stellar-dvbt-01.fw",
58 .default_mode = DEVICE_MODE_DVBT_BDA,
52 }, 59 },
53 [SMS1XXX_BOARD_HAUPPAUGE_OKEMO_A] = { 60 [SMS1XXX_BOARD_HAUPPAUGE_OKEMO_A] = {
54 .name = "Hauppauge Okemo-A", 61 .name = "Hauppauge Okemo-A",
55 .type = SMS_NOVA_A0, 62 .type = SMS_NOVA_A0,
56 .fw[DEVICE_MODE_DVBT_BDA] = "sms1xxx-nova-a-dvbt-01.fw", 63 .fw[DEVICE_MODE_DVBT_BDA] = "sms1xxx-nova-a-dvbt-01.fw",
64 .default_mode = DEVICE_MODE_DVBT_BDA,
57 }, 65 },
58 [SMS1XXX_BOARD_HAUPPAUGE_OKEMO_B] = { 66 [SMS1XXX_BOARD_HAUPPAUGE_OKEMO_B] = {
59 .name = "Hauppauge Okemo-B", 67 .name = "Hauppauge Okemo-B",
60 .type = SMS_NOVA_B0, 68 .type = SMS_NOVA_B0,
61 .fw[DEVICE_MODE_DVBT_BDA] = "sms1xxx-nova-b-dvbt-01.fw", 69 .fw[DEVICE_MODE_DVBT_BDA] = "sms1xxx-nova-b-dvbt-01.fw",
70 .default_mode = DEVICE_MODE_DVBT_BDA,
62 }, 71 },
63 [SMS1XXX_BOARD_HAUPPAUGE_WINDHAM] = { 72 [SMS1XXX_BOARD_HAUPPAUGE_WINDHAM] = {
64 .name = "Hauppauge WinTV MiniStick", 73 .name = "Hauppauge WinTV MiniStick",
65 .type = SMS_NOVA_B0, 74 .type = SMS_NOVA_B0,
66 .fw[DEVICE_MODE_ISDBT_BDA] = "sms1xxx-hcw-55xxx-isdbt-02.fw", 75 .fw[DEVICE_MODE_ISDBT_BDA] = "sms1xxx-hcw-55xxx-isdbt-02.fw",
67 .fw[DEVICE_MODE_DVBT_BDA] = "sms1xxx-hcw-55xxx-dvbt-02.fw", 76 .fw[DEVICE_MODE_DVBT_BDA] = "sms1xxx-hcw-55xxx-dvbt-02.fw",
77 .default_mode = DEVICE_MODE_DVBT_BDA,
68 .rc_codes = RC_MAP_HAUPPAUGE, 78 .rc_codes = RC_MAP_HAUPPAUGE,
69 .board_cfg.leds_power = 26, 79 .board_cfg.leds_power = 26,
70 .board_cfg.led0 = 27, 80 .board_cfg.led0 = 27,
@@ -78,6 +88,7 @@ static struct sms_board sms_boards[] = {
78 .name = "Hauppauge WinTV MiniCard", 88 .name = "Hauppauge WinTV MiniCard",
79 .type = SMS_NOVA_B0, 89 .type = SMS_NOVA_B0,
80 .fw[DEVICE_MODE_DVBT_BDA] = "sms1xxx-hcw-55xxx-dvbt-02.fw", 90 .fw[DEVICE_MODE_DVBT_BDA] = "sms1xxx-hcw-55xxx-dvbt-02.fw",
91 .default_mode = DEVICE_MODE_DVBT_BDA,
81 .lna_ctrl = 29, 92 .lna_ctrl = 29,
82 .board_cfg.foreign_lna0_ctrl = 29, 93 .board_cfg.foreign_lna0_ctrl = 29,
83 .rf_switch = 17, 94 .rf_switch = 17,
@@ -87,17 +98,64 @@ static struct sms_board sms_boards[] = {
87 .name = "Hauppauge WinTV MiniCard", 98 .name = "Hauppauge WinTV MiniCard",
88 .type = SMS_NOVA_B0, 99 .type = SMS_NOVA_B0,
89 .fw[DEVICE_MODE_DVBT_BDA] = "sms1xxx-hcw-55xxx-dvbt-02.fw", 100 .fw[DEVICE_MODE_DVBT_BDA] = "sms1xxx-hcw-55xxx-dvbt-02.fw",
101 .default_mode = DEVICE_MODE_DVBT_BDA,
90 .lna_ctrl = -1, 102 .lna_ctrl = -1,
91 }, 103 },
92 [SMS1XXX_BOARD_SIANO_NICE] = { 104 [SMS1XXX_BOARD_SIANO_NICE] = {
93 /* 11 */
94 .name = "Siano Nice Digital Receiver", 105 .name = "Siano Nice Digital Receiver",
95 .type = SMS_NOVA_B0, 106 .type = SMS_NOVA_B0,
107 .default_mode = DEVICE_MODE_DVBT_BDA,
96 }, 108 },
97 [SMS1XXX_BOARD_SIANO_VENICE] = { 109 [SMS1XXX_BOARD_SIANO_VENICE] = {
98 /* 12 */
99 .name = "Siano Venice Digital Receiver", 110 .name = "Siano Venice Digital Receiver",
100 .type = SMS_VEGA, 111 .type = SMS_VEGA,
112 .default_mode = DEVICE_MODE_CMMB,
113 },
114 [SMS1XXX_BOARD_SIANO_STELLAR_ROM] = {
115 .name = "Siano Stellar Digital Receiver ROM",
116 .type = SMS_STELLAR,
117 .default_mode = DEVICE_MODE_DVBT_BDA,
118 .intf_num = 1,
119 },
120 [SMS1XXX_BOARD_ZTE_DVB_DATA_CARD] = {
121 .name = "ZTE Data Card Digital Receiver",
122 .type = SMS_NOVA_B0,
123 .default_mode = DEVICE_MODE_DVBT_BDA,
124 .intf_num = 5,
125 .mtu = 15792,
126 },
127 [SMS1XXX_BOARD_ONDA_MDTV_DATA_CARD] = {
128 .name = "ONDA Data Card Digital Receiver",
129 .type = SMS_NOVA_B0,
130 .default_mode = DEVICE_MODE_DVBT_BDA,
131 .intf_num = 6,
132 .mtu = 15792,
133 },
134 [SMS1XXX_BOARD_SIANO_MING] = {
135 .name = "Siano Ming Digital Receiver",
136 .type = SMS_MING,
137 .default_mode = DEVICE_MODE_CMMB,
138 },
139 [SMS1XXX_BOARD_SIANO_PELE] = {
140 .name = "Siano Pele Digital Receiver",
141 .type = SMS_PELE,
142 .default_mode = DEVICE_MODE_ISDBT_BDA,
143 },
144 [SMS1XXX_BOARD_SIANO_RIO] = {
145 .name = "Siano Rio Digital Receiver",
146 .type = SMS_RIO,
147 .default_mode = DEVICE_MODE_ISDBT_BDA,
148 },
149 [SMS1XXX_BOARD_SIANO_DENVER_1530] = {
150 .name = "Siano Denver (ATSC-M/H) Digital Receiver",
151 .type = SMS_DENVER_1530,
152 .default_mode = DEVICE_MODE_ATSC,
153 .crystal = 2400,
154 },
155 [SMS1XXX_BOARD_SIANO_DENVER_2160] = {
156 .name = "Siano Denver (TDMB) Digital Receiver",
157 .type = SMS_DENVER_2160,
158 .default_mode = DEVICE_MODE_DAB_TDMB,
101 }, 159 },
102}; 160};
103 161
@@ -119,7 +177,8 @@ static inline void sms_gpio_assign_11xx_default_led_config(
119} 177}
120 178
121int sms_board_event(struct smscore_device_t *coredev, 179int sms_board_event(struct smscore_device_t *coredev,
122 enum SMS_BOARD_EVENTS gevent) { 180 enum SMS_BOARD_EVENTS gevent)
181{
123 struct smscore_config_gpio MyGpioConfig; 182 struct smscore_config_gpio MyGpioConfig;
124 183
125 sms_gpio_assign_11xx_default_led_config(&MyGpioConfig); 184 sms_gpio_assign_11xx_default_led_config(&MyGpioConfig);
diff --git a/drivers/media/common/siano/sms-cards.h b/drivers/media/common/siano/sms-cards.h
index 9f1861aa71c9..c63b544c49c5 100644
--- a/drivers/media/common/siano/sms-cards.h
+++ b/drivers/media/common/siano/sms-cards.h
@@ -37,6 +37,14 @@
37#define SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD_R2 10 37#define SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD_R2 10
38#define SMS1XXX_BOARD_SIANO_NICE 11 38#define SMS1XXX_BOARD_SIANO_NICE 11
39#define SMS1XXX_BOARD_SIANO_VENICE 12 39#define SMS1XXX_BOARD_SIANO_VENICE 12
40#define SMS1XXX_BOARD_SIANO_STELLAR_ROM 13
41#define SMS1XXX_BOARD_ZTE_DVB_DATA_CARD 14
42#define SMS1XXX_BOARD_ONDA_MDTV_DATA_CARD 15
43#define SMS1XXX_BOARD_SIANO_MING 16
44#define SMS1XXX_BOARD_SIANO_PELE 17
45#define SMS1XXX_BOARD_SIANO_RIO 18
46#define SMS1XXX_BOARD_SIANO_DENVER_1530 19
47#define SMS1XXX_BOARD_SIANO_DENVER_2160 20
40 48
41struct sms_board_gpio_cfg { 49struct sms_board_gpio_cfg {
42 int lna_vhf_exist; 50 int lna_vhf_exist;
diff --git a/drivers/media/mmc/siano/smssdio.c b/drivers/media/mmc/siano/smssdio.c
index 15d34935e00b..c96da47bece5 100644
--- a/drivers/media/mmc/siano/smssdio.c
+++ b/drivers/media/mmc/siano/smssdio.c
@@ -61,6 +61,16 @@ static const struct sdio_device_id smssdio_ids[] = {
61 .driver_data = SMS1XXX_BOARD_SIANO_VEGA}, 61 .driver_data = SMS1XXX_BOARD_SIANO_VEGA},
62 {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_VENICE), 62 {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_VENICE),
63 .driver_data = SMS1XXX_BOARD_SIANO_VEGA}, 63 .driver_data = SMS1XXX_BOARD_SIANO_VEGA},
64 {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, 0x302),
65 .driver_data = SMS1XXX_BOARD_SIANO_MING},
66 {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, 0x500),
67 .driver_data = SMS1XXX_BOARD_SIANO_PELE},
68 {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, 0x600),
69 .driver_data = SMS1XXX_BOARD_SIANO_RIO},
70 {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, 0x700),
71 .driver_data = SMS1XXX_BOARD_SIANO_DENVER_2160},
72 {SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, 0x800),
73 .driver_data = SMS1XXX_BOARD_SIANO_DENVER_1530},
64 { /* end: all zeroes */ }, 74 { /* end: all zeroes */ },
65}; 75};
66 76
diff --git a/drivers/media/usb/siano/smsusb.c b/drivers/media/usb/siano/smsusb.c
index a31bf74a5957..751c0d6d98b8 100644
--- a/drivers/media/usb/siano/smsusb.c
+++ b/drivers/media/usb/siano/smsusb.c
@@ -441,6 +441,7 @@ static int smsusb_probe(struct usb_interface *intf,
441 const struct usb_device_id *id) 441 const struct usb_device_id *id)
442{ 442{
443 struct usb_device *udev = interface_to_usbdev(intf); 443 struct usb_device *udev = interface_to_usbdev(intf);
444 char devpath[32];
444 int i, rc; 445 int i, rc;
445 446
446 sms_info("interface number %d", 447 sms_info("interface number %d",
@@ -485,6 +486,16 @@ static int smsusb_probe(struct usb_interface *intf,
485 return -ENODEV; 486 return -ENODEV;
486 } 487 }
487 488
489 if (id->driver_info == SMS1XXX_BOARD_SIANO_STELLAR_ROM) {
490 sms_info("stellar device was found.");
491 snprintf(devpath, sizeof(devpath), "usb\\%d-%s",
492 udev->bus->busnum, udev->devpath);
493 sms_info("stellar device was found.");
494 return smsusb1_load_firmware(
495 udev, smscore_registry_getmode(devpath),
496 id->driver_info);
497 }
498
488 rc = smsusb_init_device(intf, id->driver_info); 499 rc = smsusb_init_device(intf, id->driver_info);
489 sms_info("rc %d", rc); 500 sms_info("rc %d", rc);
490 sms_board_load_modules(id->driver_info); 501 sms_board_load_modules(id->driver_info);
@@ -602,6 +613,26 @@ static const struct usb_device_id smsusb_id_table[] = {
602 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM }, 613 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
603 { USB_DEVICE(0x2040, 0xf5a0), 614 { USB_DEVICE(0x2040, 0xf5a0),
604 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM }, 615 .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
616 { USB_DEVICE(0x187f, 0x0202),
617 .driver_info = SMS1XXX_BOARD_SIANO_NICE },
618 { USB_DEVICE(0x187f, 0x0301),
619 .driver_info = SMS1XXX_BOARD_SIANO_VENICE },
620 { USB_DEVICE(0x187f, 0x0302),
621 .driver_info = SMS1XXX_BOARD_SIANO_VENICE },
622 { USB_DEVICE(0x187f, 0x0310),
623 .driver_info = SMS1XXX_BOARD_SIANO_MING },
624 { USB_DEVICE(0x187f, 0x0500),
625 .driver_info = SMS1XXX_BOARD_SIANO_PELE },
626 { USB_DEVICE(0x187f, 0x0600),
627 .driver_info = SMS1XXX_BOARD_SIANO_RIO },
628 { USB_DEVICE(0x187f, 0x0700),
629 .driver_info = SMS1XXX_BOARD_SIANO_DENVER_2160 },
630 { USB_DEVICE(0x187f, 0x0800),
631 .driver_info = SMS1XXX_BOARD_SIANO_DENVER_1530 },
632 { USB_DEVICE(0x19D2, 0x0086),
633 .driver_info = SMS1XXX_BOARD_ZTE_DVB_DATA_CARD },
634 { USB_DEVICE(0x19D2, 0x0078),
635 .driver_info = SMS1XXX_BOARD_ONDA_MDTV_DATA_CARD },
605 { } /* Terminating entry */ 636 { } /* Terminating entry */
606 }; 637 };
607 638