Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

V4L/DVB (11987): au8522: add support for QAM-64 modulation type

Add support for QAM64 modulation type to the au8522 demod driver.

Signed-off-by: Frank Dischner <phaedrus961@gmail.com>
Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

authored by

Frank Dischner and committed by
Mauro Carvalho Chehab
040d4cbf 24dff657

+93 -7
+93 -7
drivers/media/dvb/frontends/au8522_dig.c
··· 367 367 { 0x8231, 0x13 }, 368 368 }; 369 369 370 - /* QAM Modulation table */ 370 + /* QAM64 Modulation table */ 371 371 static struct { 372 372 u16 reg; 373 373 u16 data; 374 - } QAM_mod_tab[] = { 374 + } QAM64_mod_tab[] = { 375 + { 0x00a3, 0x09 }, 376 + { 0x00a4, 0x00 }, 377 + { 0x0081, 0xc4 }, 378 + { 0x00a5, 0x40 }, 379 + { 0x00aa, 0x77 }, 380 + { 0x00ad, 0x77 }, 381 + { 0x00a6, 0x67 }, 382 + { 0x0262, 0x20 }, 383 + { 0x021c, 0x30 }, 384 + { 0x00b8, 0x3e }, 385 + { 0x00b9, 0xf0 }, 386 + { 0x00ba, 0x01 }, 387 + { 0x00bb, 0x18 }, 388 + { 0x00bc, 0x50 }, 389 + { 0x00bd, 0x00 }, 390 + { 0x00be, 0xea }, 391 + { 0x00bf, 0xef }, 392 + { 0x00c0, 0xfc }, 393 + { 0x00c1, 0xbd }, 394 + { 0x00c2, 0x1f }, 395 + { 0x00c3, 0xfc }, 396 + { 0x00c4, 0xdd }, 397 + { 0x00c5, 0xaf }, 398 + { 0x00c6, 0x00 }, 399 + { 0x00c7, 0x38 }, 400 + { 0x00c8, 0x30 }, 401 + { 0x00c9, 0x05 }, 402 + { 0x00ca, 0x4a }, 403 + { 0x00cb, 0xd0 }, 404 + { 0x00cc, 0x01 }, 405 + { 0x00cd, 0xd9 }, 406 + { 0x00ce, 0x6f }, 407 + { 0x00cf, 0xf9 }, 408 + { 0x00d0, 0x70 }, 409 + { 0x00d1, 0xdf }, 410 + { 0x00d2, 0xf7 }, 411 + { 0x00d3, 0xc2 }, 412 + { 0x00d4, 0xdf }, 413 + { 0x00d5, 0x02 }, 414 + { 0x00d6, 0x9a }, 415 + { 0x00d7, 0xd0 }, 416 + { 0x0250, 0x0d }, 417 + { 0x0251, 0xcd }, 418 + { 0x0252, 0xe0 }, 419 + { 0x0253, 0x05 }, 420 + { 0x0254, 0xa7 }, 421 + { 0x0255, 0xff }, 422 + { 0x0256, 0xed }, 423 + { 0x0257, 0x5b }, 424 + { 0x0258, 0xae }, 425 + { 0x0259, 0xe6 }, 426 + { 0x025a, 0x3d }, 427 + { 0x025b, 0x0f }, 428 + { 0x025c, 0x0d }, 429 + { 0x025d, 0xea }, 430 + { 0x025e, 0xf2 }, 431 + { 0x025f, 0x51 }, 432 + { 0x0260, 0xf5 }, 433 + { 0x0261, 0x06 }, 434 + { 0x021a, 0x00 }, 435 + { 0x0546, 0x40 }, 436 + { 0x0210, 0xc7 }, 437 + { 0x0211, 0xaa }, 438 + { 0x0212, 0xab }, 439 + { 0x0213, 0x02 }, 440 + { 0x0502, 0x00 }, 441 + { 0x0121, 0x04 }, 442 + { 0x0122, 0x04 }, 443 + { 0x052e, 0x10 }, 444 + { 0x00a4, 0xca }, 445 + { 0x00a7, 0x40 }, 446 + { 0x0526, 0x01 }, 447 + }; 448 + 449 + /* QAM256 Modulation table */ 450 + static struct { 451 + u16 reg; 452 + u16 data; 453 + } QAM256_mod_tab[] = { 375 454 { 0x80a3, 0x09 }, 376 455 { 0x80a4, 0x00 }, 377 456 { 0x8081, 0xc4 }, ··· 543 464 au8522_set_if(fe, state->config->vsb_if); 544 465 break; 545 466 case QAM_64: 546 - case QAM_256: 547 - dprintk("%s() QAM 64/256\n", __func__); 548 - for (i = 0; i < ARRAY_SIZE(QAM_mod_tab); i++) 467 + dprintk("%s() QAM 64\n", __func__); 468 + for (i = 0; i < ARRAY_SIZE(QAM64_mod_tab); i++) 549 469 au8522_writereg(state, 550 - QAM_mod_tab[i].reg, 551 - QAM_mod_tab[i].data); 470 + QAM64_mod_tab[i].reg, 471 + QAM64_mod_tab[i].data); 472 + au8522_set_if(fe, state->config->qam_if); 473 + break; 474 + case QAM_256: 475 + dprintk("%s() QAM 256\n", __func__); 476 + for (i = 0; i < ARRAY_SIZE(QAM256_mod_tab); i++) 477 + au8522_writereg(state, 478 + QAM256_mod_tab[i].reg, 479 + QAM256_mod_tab[i].data); 552 480 au8522_set_if(fe, state->config->qam_if); 553 481 break; 554 482 default: