Эх сурвалжийг харах

[media] em28xx: add support for Empia EM28178

New chip version, which is very similar than EM28174.

Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Antti Palosaari 12 жил өмнө
parent
commit
9f1d0bdab2

+ 5 - 0
drivers/media/usb/em28xx/em28xx-cards.c

@@ -3054,6 +3054,11 @@ static int em28xx_init_dev(struct em28xx *dev, struct usb_device *udev,
 			dev->wait_after_write = 0;
 			dev->wait_after_write = 0;
 			dev->eeprom_addrwidth_16bit = 1;
 			dev->eeprom_addrwidth_16bit = 1;
 			break;
 			break;
+		case CHIP_ID_EM28178:
+			chip_name = "em28178";
+			dev->wait_after_write = 0;
+			dev->eeprom_addrwidth_16bit = 1;
+			break;
 		case CHIP_ID_EM2883:
 		case CHIP_ID_EM2883:
 			chip_name = "em2882/3";
 			chip_name = "em2882/3";
 			dev->wait_after_write = 0;
 			dev->wait_after_write = 0;

+ 6 - 3
drivers/media/usb/em28xx/em28xx-core.c

@@ -501,8 +501,10 @@ int em28xx_audio_setup(struct em28xx *dev)
 	int vid1, vid2, feat, cfg;
 	int vid1, vid2, feat, cfg;
 	u32 vid;
 	u32 vid;
 
 
-	if (dev->chip_id == CHIP_ID_EM2870 || dev->chip_id == CHIP_ID_EM2874
-		|| dev->chip_id == CHIP_ID_EM28174) {
+	if (dev->chip_id == CHIP_ID_EM2870 ||
+	    dev->chip_id == CHIP_ID_EM2874 ||
+	    dev->chip_id == CHIP_ID_EM28174 ||
+	    dev->chip_id == CHIP_ID_EM28178) {
 		/* Digital only device - don't load any alsa module */
 		/* Digital only device - don't load any alsa module */
 		dev->audio_mode.has_audio = false;
 		dev->audio_mode.has_audio = false;
 		dev->has_audio_class = false;
 		dev->has_audio_class = false;
@@ -641,7 +643,8 @@ int em28xx_capture_start(struct em28xx *dev, int start)
 
 
 	if (dev->chip_id == CHIP_ID_EM2874 ||
 	if (dev->chip_id == CHIP_ID_EM2874 ||
 	    dev->chip_id == CHIP_ID_EM2884 ||
 	    dev->chip_id == CHIP_ID_EM2884 ||
-	    dev->chip_id == CHIP_ID_EM28174) {
+	    dev->chip_id == CHIP_ID_EM28174 ||
+	    dev->chip_id == CHIP_ID_EM28178) {
 		/* The Transport Stream Enable Register moved in em2874 */
 		/* The Transport Stream Enable Register moved in em2874 */
 		rc = em28xx_write_reg_bits(dev, EM2874_R5F_TS_ENABLE,
 		rc = em28xx_write_reg_bits(dev, EM2874_R5F_TS_ENABLE,
 					   start ?
 					   start ?

+ 2 - 0
drivers/media/usb/em28xx/em28xx-input.c

@@ -442,6 +442,7 @@ static int em28xx_ir_change_protocol(struct rc_dev *rc_dev, u64 *rc_type)
 	case CHIP_ID_EM2884:
 	case CHIP_ID_EM2884:
 	case CHIP_ID_EM2874:
 	case CHIP_ID_EM2874:
 	case CHIP_ID_EM28174:
 	case CHIP_ID_EM28174:
+	case CHIP_ID_EM28178:
 		return em2874_ir_change_protocol(rc_dev, rc_type);
 		return em2874_ir_change_protocol(rc_dev, rc_type);
 	default:
 	default:
 		printk("Unrecognized em28xx chip id 0x%02x: IR not supported\n",
 		printk("Unrecognized em28xx chip id 0x%02x: IR not supported\n",
@@ -734,6 +735,7 @@ static int em28xx_ir_init(struct em28xx *dev)
 		case CHIP_ID_EM2884:
 		case CHIP_ID_EM2884:
 		case CHIP_ID_EM2874:
 		case CHIP_ID_EM2874:
 		case CHIP_ID_EM28174:
 		case CHIP_ID_EM28174:
+		case CHIP_ID_EM28178:
 			ir->get_key = em2874_polling_getkey;
 			ir->get_key = em2874_polling_getkey;
 			rc->allowed_protos = RC_BIT_RC5 | RC_BIT_NEC |
 			rc->allowed_protos = RC_BIT_RC5 | RC_BIT_NEC |
 					     RC_BIT_RC6_0;
 					     RC_BIT_RC6_0;

+ 1 - 0
drivers/media/usb/em28xx/em28xx-reg.h

@@ -245,6 +245,7 @@ enum em28xx_chip_id {
 	CHIP_ID_EM2874 = 65,
 	CHIP_ID_EM2874 = 65,
 	CHIP_ID_EM2884 = 68,
 	CHIP_ID_EM2884 = 68,
 	CHIP_ID_EM28174 = 113,
 	CHIP_ID_EM28174 = 113,
+	CHIP_ID_EM28178 = 114,
 };
 };
 
 
 /*
 /*