diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c
index 28f64e0b0b4b..3d85017ad147 100644
--- a/drivers/media/video/em28xx/em28xx-cards.c
+++ b/drivers/media/video/em28xx/em28xx-cards.c
@@ -1355,6 +1355,12 @@ void em28xx_pre_card_setup(struct em28xx *dev)
 	if (rc > 0) {
 		dev->chip_id = rc;
 		switch (rc) {
+		case CHIP_ID_EM2820:
+			em28xx_info("chip ID is em2820\n");
+			break;
+		case CHIP_ID_EM2840:
+			em28xx_info("chip ID is em2840\n");
+			break;
 		case CHIP_ID_EM2860:
 			em28xx_info("chip ID is em2860\n");
 			break;
diff --git a/drivers/media/video/em28xx/em28xx-reg.h b/drivers/media/video/em28xx/em28xx-reg.h
index b8e97836370f..6e5757caa48b 100644
--- a/drivers/media/video/em28xx/em28xx-reg.h
+++ b/drivers/media/video/em28xx/em28xx-reg.h
@@ -111,6 +111,8 @@
 
 /* FIXME: Need to be populated with the other chip ID's */
 enum em28xx_chip_id {
+	CHIP_ID_EM2820 = 18,
+	CHIP_ID_EM2840 = 20,
 	CHIP_ID_EM2860 = 34,
 	CHIP_ID_EM2883 = 36,
 	CHIP_ID_EM2874 = 65,