aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/saa7134/saa7134-cards.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/saa7134/saa7134-cards.c')
-rw-r--r--drivers/media/video/saa7134/saa7134-cards.c204
1 files changed, 186 insertions, 18 deletions
diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c
index 89f32107f46b..4ea479baee74 100644
--- a/drivers/media/video/saa7134/saa7134-cards.c
+++ b/drivers/media/video/saa7134/saa7134-cards.c
@@ -1543,12 +1543,12 @@ struct saa7134_board saa7134_boards[] = {
1543 },{ 1543 },{
1544 .name = name_comp1, 1544 .name = name_comp1,
1545 .vmux = 0, 1545 .vmux = 0,
1546 .amux = LINE2, 1546 .amux = LINE1,
1547 .gpio = 0x02, 1547 .gpio = 0x02,
1548 },{ 1548 },{
1549 .name = name_svideo, 1549 .name = name_svideo,
1550 .vmux = 6, 1550 .vmux = 6,
1551 .amux = LINE2, 1551 .amux = LINE1,
1552 .gpio = 0x02, 1552 .gpio = 0x02,
1553 }}, 1553 }},
1554 .radio = { 1554 .radio = {
@@ -1778,17 +1778,19 @@ struct saa7134_board saa7134_boards[] = {
1778 [SAA7134_BOARD_FLYDVBTDUO] = { 1778 [SAA7134_BOARD_FLYDVBTDUO] = {
1779 /* LifeView FlyDVB-T DUO */ 1779 /* LifeView FlyDVB-T DUO */
1780 /* "Nico Sabbi <nsabbi@tiscali.it> Hartmut Hackmann hartmut.hackmann@t-online.de*/ 1780 /* "Nico Sabbi <nsabbi@tiscali.it> Hartmut Hackmann hartmut.hackmann@t-online.de*/
1781 .name = "LifeView FlyDVB-T DUO", 1781 .name = "LifeView FlyDVB-T DUO / MSI TV@nywhere Duo",
1782 .audio_clock = 0x00200000, 1782 .audio_clock = 0x00200000,
1783 .tuner_type = TUNER_PHILIPS_TDA8290, 1783 .tuner_type = TUNER_PHILIPS_TDA8290,
1784 .radio_type = UNSET, 1784 .radio_type = UNSET,
1785 .tuner_addr = ADDR_UNSET, 1785 .tuner_addr = ADDR_UNSET,
1786 .radio_addr = ADDR_UNSET, 1786 .radio_addr = ADDR_UNSET,
1787 .gpiomask = 0x00200000,
1787 .mpeg = SAA7134_MPEG_DVB, 1788 .mpeg = SAA7134_MPEG_DVB,
1788 .inputs = {{ 1789 .inputs = {{
1789 .name = name_tv, 1790 .name = name_tv,
1790 .vmux = 1, 1791 .vmux = 1,
1791 .amux = TV, 1792 .amux = TV,
1793 .gpio = 0x200000, /* GPIO21=High for TV input */
1792 .tv = 1, 1794 .tv = 1,
1793 },{ 1795 },{
1794 .name = name_comp1, /* Composite signal on S-Video input */ 1796 .name = name_comp1, /* Composite signal on S-Video input */
@@ -1803,6 +1805,11 @@ struct saa7134_board saa7134_boards[] = {
1803 .vmux = 8, 1805 .vmux = 8,
1804 .amux = LINE2, 1806 .amux = LINE2,
1805 }}, 1807 }},
1808 .radio = {
1809 .name = name_radio,
1810 .amux = TV,
1811 .gpio = 0x000000, /* GPIO21=Low for FM radio antenna */
1812 },
1806 }, 1813 },
1807 [SAA7134_BOARD_PHILIPS_TOUGH] = { 1814 [SAA7134_BOARD_PHILIPS_TOUGH] = {
1808 .name = "Philips TOUGH DVB-T reference design", 1815 .name = "Philips TOUGH DVB-T reference design",
@@ -2546,8 +2553,9 @@ struct saa7134_board saa7134_boards[] = {
2546 .radio_type = UNSET, 2553 .radio_type = UNSET,
2547 .tuner_addr = ADDR_UNSET, 2554 .tuner_addr = ADDR_UNSET,
2548 .radio_addr = ADDR_UNSET, 2555 .radio_addr = ADDR_UNSET,
2556 .tuner_config = 0,
2549 .mpeg = SAA7134_MPEG_DVB, 2557 .mpeg = SAA7134_MPEG_DVB,
2550 .gpiomask = 1 << 21, 2558 .gpiomask = 0x0200000,
2551 .inputs = {{ 2559 .inputs = {{
2552 .name = name_tv, 2560 .name = name_tv,
2553 .vmux = 1, 2561 .vmux = 1,
@@ -2624,7 +2632,7 @@ struct saa7134_board saa7134_boards[] = {
2624 }}, 2632 }},
2625 .radio = { 2633 .radio = {
2626 .name = name_radio, 2634 .name = name_radio,
2627 .amux = LINE1, 2635 .amux = TV,
2628 .gpio = 0x0200000, 2636 .gpio = 0x0200000,
2629 }, 2637 },
2630 }, 2638 },
@@ -3043,6 +3051,7 @@ struct saa7134_board saa7134_boards[] = {
3043 .radio_type = UNSET, 3051 .radio_type = UNSET,
3044 .tuner_addr = ADDR_UNSET, 3052 .tuner_addr = ADDR_UNSET,
3045 .radio_addr = ADDR_UNSET, 3053 .radio_addr = ADDR_UNSET,
3054 .tuner_config = 1,
3046 .mpeg = SAA7134_MPEG_DVB, 3055 .mpeg = SAA7134_MPEG_DVB,
3047 .gpiomask = 0x000200000, 3056 .gpiomask = 0x000200000,
3048 .inputs = {{ 3057 .inputs = {{
@@ -3289,6 +3298,115 @@ struct saa7134_board saa7134_boards[] = {
3289 .amux = LINE1, 3298 .amux = LINE1,
3290 }}, 3299 }},
3291 }, 3300 },
3301 [SAA7134_BOARD_PHILIPS_TIGER_S] = {
3302 .name = "Philips Tiger - S Reference design",
3303 .audio_clock = 0x00187de7,
3304 .tuner_type = TUNER_PHILIPS_TDA8290,
3305 .radio_type = UNSET,
3306 .tuner_addr = ADDR_UNSET,
3307 .radio_addr = ADDR_UNSET,
3308 .tuner_config = 2,
3309 .mpeg = SAA7134_MPEG_DVB,
3310 .gpiomask = 0x0200000,
3311 .inputs = {{
3312 .name = name_tv,
3313 .vmux = 1,
3314 .amux = TV,
3315 .tv = 1,
3316 },{
3317 .name = name_comp1,
3318 .vmux = 3,
3319 .amux = LINE1,
3320 },{
3321 .name = name_svideo,
3322 .vmux = 8,
3323 .amux = LINE1,
3324 }},
3325 .radio = {
3326 .name = name_radio,
3327 .amux = TV,
3328 .gpio = 0x0200000,
3329 },
3330 },
3331 [SAA7134_BOARD_AVERMEDIA_M102] = {
3332 .name = "Avermedia M102",
3333 .audio_clock = 0x00187de7,
3334 .tuner_type = TUNER_PHILIPS_TDA8290,
3335 .radio_type = UNSET,
3336 .tuner_addr = ADDR_UNSET,
3337 .radio_addr = ADDR_UNSET,
3338 .gpiomask = 1<<21,
3339 .inputs = {{
3340 .name = name_tv,
3341 .vmux = 1,
3342 .amux = TV,
3343 .tv = 1,
3344 },{
3345 .name = name_comp1,
3346 .vmux = 0,
3347 .amux = LINE2,
3348 },{
3349 .name = name_svideo,
3350 .vmux = 6,
3351 .amux = LINE2,
3352 }},
3353 },
3354 [SAA7134_BOARD_ASUS_P7131_4871] = {
3355 .name = "ASUS P7131 4871",
3356 .audio_clock = 0x00187de7,
3357 .tuner_type = TUNER_PHILIPS_TDA8290,
3358 .radio_type = UNSET,
3359 .tuner_addr = ADDR_UNSET,
3360 .radio_addr = ADDR_UNSET,
3361 .tuner_config = 2,
3362 .mpeg = SAA7134_MPEG_DVB,
3363 .gpiomask = 0x0200000,
3364 .inputs = {{
3365 .name = name_tv,
3366 .vmux = 1,
3367 .amux = TV,
3368 .tv = 1,
3369 .gpio = 0x0200000,
3370 }},
3371 },
3372 [SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA] = {
3373 .name = "ASUSTeK P7131 Hybrid",
3374 .audio_clock = 0x00187de7,
3375 .tuner_type = TUNER_PHILIPS_TDA8290,
3376 .radio_type = UNSET,
3377 .tuner_addr = ADDR_UNSET,
3378 .radio_addr = ADDR_UNSET,
3379 .tuner_config = 2,
3380 .gpiomask = 1 << 21,
3381 .mpeg = SAA7134_MPEG_DVB,
3382 .inputs = {{
3383 .name = name_tv,
3384 .vmux = 1,
3385 .amux = TV,
3386 .tv = 1,
3387 .gpio = 0x0000000,
3388 },{
3389 .name = name_comp1,
3390 .vmux = 3,
3391 .amux = LINE2,
3392 .gpio = 0x0200000,
3393 },{
3394 .name = name_comp2,
3395 .vmux = 0,
3396 .amux = LINE2,
3397 .gpio = 0x0200000,
3398 },{
3399 .name = name_svideo,
3400 .vmux = 8,
3401 .amux = LINE2,
3402 .gpio = 0x0200000,
3403 }},
3404 .radio = {
3405 .name = name_radio,
3406 .amux = TV,
3407 .gpio = 0x0200000,
3408 },
3409 },
3292}; 3410};
3293 3411
3294const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards); 3412const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
@@ -3914,7 +4032,7 @@ struct pci_device_id saa7134_pci_tbl[] = {
3914 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4032 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
3915 .subvendor = 0x1043, 4033 .subvendor = 0x1043,
3916 .subdevice = 0x4876, 4034 .subdevice = 0x4876,
3917 .driver_data = SAA7134_BOARD_ASUSTeK_P7131_DUAL, 4035 .driver_data = SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA,
3918 },{ 4036 },{
3919 .vendor = PCI_VENDOR_ID_PHILIPS, 4037 .vendor = PCI_VENDOR_ID_PHILIPS,
3920 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4038 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
@@ -3958,6 +4076,30 @@ struct pci_device_id saa7134_pci_tbl[] = {
3958 .subdevice = 0x1175, 4076 .subdevice = 0x1175,
3959 .driver_data = SAA7134_BOARD_CINERGY_HT_PCI, 4077 .driver_data = SAA7134_BOARD_CINERGY_HT_PCI,
3960 },{ 4078 },{
4079 .vendor = PCI_VENDOR_ID_PHILIPS,
4080 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
4081 .subvendor = 0x1461, /* Avermedia Technologies Inc */
4082 .subdevice = 0xf31e,
4083 .driver_data = SAA7134_BOARD_AVERMEDIA_M102,
4084 },{
4085 .vendor = PCI_VENDOR_ID_PHILIPS,
4086 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
4087 .subvendor = 0x4E42, /* MSI */
4088 .subdevice = 0x0306, /* TV@nywhere DUO */
4089 .driver_data = SAA7134_BOARD_FLYDVBTDUO,
4090 },{
4091 .vendor = PCI_VENDOR_ID_PHILIPS,
4092 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
4093 .subvendor = 0x1043,
4094 .subdevice = 0x4871,
4095 .driver_data = SAA7134_BOARD_ASUS_P7131_4871,
4096 },{
4097 .vendor = PCI_VENDOR_ID_PHILIPS,
4098 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
4099 .subvendor = 0x1043,
4100 .subdevice = 0x4857,
4101 .driver_data = SAA7134_BOARD_ASUSTeK_P7131_DUAL,
4102 },{
3961 /* --- boards without eeprom + subsystem ID --- */ 4103 /* --- boards without eeprom + subsystem ID --- */
3962 .vendor = PCI_VENDOR_ID_PHILIPS, 4104 .vendor = PCI_VENDOR_ID_PHILIPS,
3963 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 4105 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
@@ -3971,7 +4113,6 @@ struct pci_device_id saa7134_pci_tbl[] = {
3971 .subdevice = 0, 4113 .subdevice = 0,
3972 .driver_data = SAA7134_BOARD_NOAUTO, 4114 .driver_data = SAA7134_BOARD_NOAUTO,
3973 },{ 4115 },{
3974
3975 /* --- default catch --- */ 4116 /* --- default catch --- */
3976 .vendor = PCI_VENDOR_ID_PHILIPS, 4117 .vendor = PCI_VENDOR_ID_PHILIPS,
3977 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 4118 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
@@ -4063,6 +4204,7 @@ int saa7134_board_init1(struct saa7134_dev *dev)
4063 case SAA7134_BOARD_SEDNA_PC_TV_CARDBUS: 4204 case SAA7134_BOARD_SEDNA_PC_TV_CARDBUS:
4064 case SAA7134_BOARD_FLYDVBT_LR301: 4205 case SAA7134_BOARD_FLYDVBT_LR301:
4065 case SAA7134_BOARD_ASUSTeK_P7131_DUAL: 4206 case SAA7134_BOARD_ASUSTeK_P7131_DUAL:
4207 case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA:
4066 case SAA7134_BOARD_FLYDVBTDUO: 4208 case SAA7134_BOARD_FLYDVBTDUO:
4067 case SAA7134_BOARD_PROTEUS_2309: 4209 case SAA7134_BOARD_PROTEUS_2309:
4068 case SAA7134_BOARD_AVERMEDIA_A16AR: 4210 case SAA7134_BOARD_AVERMEDIA_A16AR:
@@ -4103,8 +4245,8 @@ int saa7134_board_init1(struct saa7134_dev *dev)
4103 break; 4245 break;
4104 case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331: 4246 case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331:
4105 case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS: 4247 case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS:
4106 saa_writeb(SAA7134_GPIO_GPMODE3, 0x08); 4248 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x08000000, 0x08000000);
4107 saa_writeb(SAA7134_GPIO_GPSTATUS3, 0x00); 4249 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x08000000, 0x00000000);
4108 break; 4250 break;
4109 case SAA7134_BOARD_AVERMEDIA_CARDBUS: 4251 case SAA7134_BOARD_AVERMEDIA_CARDBUS:
4110 /* power-up tuner chip */ 4252 /* power-up tuner chip */
@@ -4137,6 +4279,11 @@ int saa7134_board_init1(struct saa7134_dev *dev)
4137 "%s: Dual decoder functionality is disabled for now, use the other chip.\n", 4279 "%s: Dual decoder functionality is disabled for now, use the other chip.\n",
4138 dev->name,card(dev).name,dev->name,dev->name); 4280 dev->name,card(dev).name,dev->name,dev->name);
4139 break; 4281 break;
4282 case SAA7134_BOARD_AVERMEDIA_M102:
4283 /* enable tuner */
4284 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x8c040007, 0x8c040007);
4285 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x0c0007cd, 0x0c0007cd);
4286 break;
4140 } 4287 }
4141 return 0; 4288 return 0;
4142} 4289}
@@ -4146,6 +4293,9 @@ int saa7134_board_init2(struct saa7134_dev *dev)
4146{ 4293{
4147 unsigned char buf; 4294 unsigned char buf;
4148 int board; 4295 int board;
4296 struct tuner_setup tun_setup;
4297 tun_setup.config = 0;
4298 tun_setup.tuner_callback = saa7134_tuner_callback;
4149 4299
4150 switch (dev->board) { 4300 switch (dev->board) {
4151 case SAA7134_BOARD_BMK_MPEX_NOTUNER: 4301 case SAA7134_BOARD_BMK_MPEX_NOTUNER:
@@ -4162,8 +4312,6 @@ int saa7134_board_init2(struct saa7134_dev *dev)
4162 dev->tuner_type = saa7134_boards[dev->board].tuner_type; 4312 dev->tuner_type = saa7134_boards[dev->board].tuner_type;
4163 4313
4164 if (TUNER_ABSENT != dev->tuner_type) { 4314 if (TUNER_ABSENT != dev->tuner_type) {
4165 struct tuner_setup tun_setup;
4166
4167 tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV; 4315 tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV;
4168 tun_setup.type = dev->tuner_type; 4316 tun_setup.type = dev->tuner_type;
4169 tun_setup.addr = ADDR_UNSET; 4317 tun_setup.addr = ADDR_UNSET;
@@ -4173,7 +4321,6 @@ int saa7134_board_init2(struct saa7134_dev *dev)
4173 break; 4321 break;
4174 case SAA7134_BOARD_MD7134: 4322 case SAA7134_BOARD_MD7134:
4175 { 4323 {
4176 struct tuner_setup tun_setup;
4177 u8 subaddr; 4324 u8 subaddr;
4178 u8 data[3]; 4325 u8 data[3];
4179 int ret, tuner_t; 4326 int ret, tuner_t;
@@ -4245,7 +4392,6 @@ int saa7134_board_init2(struct saa7134_dev *dev)
4245 * the channel decoder. We have to make it transparent to find it 4392 * the channel decoder. We have to make it transparent to find it
4246 */ 4393 */
4247 { 4394 {
4248 struct tuner_setup tun_setup;
4249 u8 data[] = { 0x07, 0x02}; 4395 u8 data[] = { 0x07, 0x02};
4250 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)}; 4396 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
4251 i2c_transfer(&dev->i2c_adap, &msg, 1); 4397 i2c_transfer(&dev->i2c_adap, &msg, 1);
@@ -4258,16 +4404,38 @@ int saa7134_board_init2(struct saa7134_dev *dev)
4258 } 4404 }
4259 break; 4405 break;
4260 case SAA7134_BOARD_PHILIPS_TIGER: 4406 case SAA7134_BOARD_PHILIPS_TIGER:
4407 case SAA7134_BOARD_PHILIPS_TIGER_S:
4408 {
4409 u8 data[] = { 0x3c, 0x33, 0x60};
4410 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
4411 if(dev->autodetected && (dev->eedata[0x49] == 0x50)) {
4412 dev->board = SAA7134_BOARD_PHILIPS_TIGER_S;
4413 printk(KERN_INFO "%s: Reconfigured board as %s\n",
4414 dev->name, saa7134_boards[dev->board].name);
4415 }
4416 if(dev->board == SAA7134_BOARD_PHILIPS_TIGER_S) {
4417 tun_setup.mode_mask = T_ANALOG_TV | T_DIGITAL_TV;
4418 tun_setup.type = TUNER_PHILIPS_TDA8290;
4419 tun_setup.addr = 0x4b;
4420 tun_setup.config = 2;
4421
4422 saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR,&tun_setup);
4423 data[2] = 0x68;
4424 }
4425 i2c_transfer(&dev->i2c_adap, &msg, 1);
4426 }
4427 break;
4261 case SAA7134_BOARD_PINNACLE_PCTV_310i: 4428 case SAA7134_BOARD_PINNACLE_PCTV_310i:
4262 case SAA7134_BOARD_TEVION_DVBT_220RF: 4429 case SAA7134_BOARD_TEVION_DVBT_220RF:
4263 case SAA7134_BOARD_ASUSTeK_P7131_DUAL: 4430 case SAA7134_BOARD_ASUSTeK_P7131_DUAL:
4431 case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA:
4264 case SAA7134_BOARD_MEDION_MD8800_QUADRO: 4432 case SAA7134_BOARD_MEDION_MD8800_QUADRO:
4265 case SAA7134_BOARD_HAUPPAUGE_HVR1110: 4433 case SAA7134_BOARD_HAUPPAUGE_HVR1110:
4266 /* this is a hybrid board, initialize to analog mode 4434 /* this is a hybrid board, initialize to analog mode
4267 * and configure firmware eeprom address 4435 * and configure firmware eeprom address
4268 */ 4436 */
4269 { 4437 {
4270 u8 data[] = { 0x3c, 0x33, 0x68}; 4438 u8 data[] = { 0x3c, 0x33, 0x60};
4271 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)}; 4439 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
4272 i2c_transfer(&dev->i2c_adap, &msg, 1); 4440 i2c_transfer(&dev->i2c_adap, &msg, 1);
4273 } 4441 }
@@ -4281,18 +4449,18 @@ int saa7134_board_init2(struct saa7134_dev *dev)
4281 break; 4449 break;
4282 case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331: 4450 case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331:
4283 case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS: 4451 case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS:
4284 /* make the tda10046 find its eeprom */ 4452 /* initialize analog mode */
4285 { 4453 {
4286 u8 data[] = { 0x3c, 0x33, 0x62}; 4454 u8 data[] = { 0x3c, 0x33, 0x6a};
4287 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)}; 4455 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
4288 i2c_transfer(&dev->i2c_adap, &msg, 1); 4456 i2c_transfer(&dev->i2c_adap, &msg, 1);
4289 } 4457 }
4290 break; 4458 break;
4291 case SAA7134_BOARD_CINERGY_HT_PCMCIA: 4459 case SAA7134_BOARD_CINERGY_HT_PCMCIA:
4292 case SAA7134_BOARD_CINERGY_HT_PCI: 4460 case SAA7134_BOARD_CINERGY_HT_PCI:
4293 /* make the tda10046 find its eeprom */ 4461 /* initialize analog mode */
4294 { 4462 {
4295 u8 data[] = { 0x3c, 0x33, 0x60}; 4463 u8 data[] = { 0x3c, 0x33, 0x68};
4296 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)}; 4464 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
4297 i2c_transfer(&dev->i2c_adap, &msg, 1); 4465 i2c_transfer(&dev->i2c_adap, &msg, 1);
4298 } 4466 }