case CX231XX_BOARD_HAUPPAUGE_930C_HD_1114xx:
        case CX231XX_BOARD_HAUPPAUGE_955Q:
                {
-                       struct tveeprom tvee;
-                       static u8 eeprom[256];
-                       struct i2c_client client;
-
-                       memset(&client, 0, sizeof(client));
-                       client.adapter = cx231xx_get_i2c_adap(dev, I2C_1_MUX_1);
-                       client.addr = 0xa0 >> 1;
+                       struct eeprom {
+                               struct tveeprom tvee;
+                               u8 eeprom[256];
+                               struct i2c_client client;
+                       };
+                       struct eeprom *e = kzalloc(sizeof(*e), GFP_KERNEL);
+
+                       if (e == NULL) {
+                               dev_err(dev->dev,
+                                       "failed to allocate memory to read eeprom\n");
+                               break;
+                       }
+                       e->client.adapter = cx231xx_get_i2c_adap(dev, I2C_1_MUX_1);
+                       e->client.addr = 0xa0 >> 1;
 
-                       read_eeprom(dev, &client, eeprom, sizeof(eeprom));
-                       tveeprom_hauppauge_analog(&client,
-                                               &tvee, eeprom + 0xc0);
+                       read_eeprom(dev, &e->client, e->eeprom, sizeof(e->eeprom));
+                       tveeprom_hauppauge_analog(&e->client,
+                                               &e->tvee, e->eeprom + 0xc0);
+                       kfree(e);
                        break;
                }
        }