From: Johannes Stezenbach patch by Taylor Jacob: Add QAM64/256 Support Signed-off-by: Johannes Stezenbach Signed-off-by: Andrew Morton --- 25-akpm/drivers/media/dvb/frontends/Kconfig | 1 25-akpm/drivers/media/dvb/frontends/nxt2002.c | 43 ++++++++++++++++++++++++-- 2 files changed, 42 insertions(+), 2 deletions(-) diff -puN drivers/media/dvb/frontends/Kconfig~dvb-nxt2002-qam64-256-support drivers/media/dvb/frontends/Kconfig --- 25/drivers/media/dvb/frontends/Kconfig~dvb-nxt2002-qam64-256-support 2005-03-21 20:57:34.000000000 -0800 +++ 25-akpm/drivers/media/dvb/frontends/Kconfig 2005-03-21 20:57:34.000000000 -0800 @@ -154,6 +154,7 @@ comment "ATSC (North American/Korean Ter config DVB_NXT2002 tristate "Nxt2002 based" depends on DVB_CORE + select FW_LOADER help An ATSC 8VSB tuner module. Say Y when you want to support this frontend. diff -puN drivers/media/dvb/frontends/nxt2002.c~dvb-nxt2002-qam64-256-support drivers/media/dvb/frontends/nxt2002.c --- 25/drivers/media/dvb/frontends/nxt2002.c~dvb-nxt2002-qam64-256-support 2005-03-21 20:57:34.000000000 -0800 +++ 25-akpm/drivers/media/dvb/frontends/nxt2002.c 2005-03-21 20:57:34.000000000 -0800 @@ -343,8 +343,21 @@ static int nxt2002_setup_frontend_parame /* reset the agc now that tuning has been completed */ nxt2002_agc_reset(state); + + /* set target power level */ + switch (p->u.vsb.modulation) { + case QAM_64: + case QAM_256: + buf[0] = 0x74; + break; + case VSB_8: buf[0] = 0x70; + break; + default: + return -EINVAL; + break; + } i2c_writebytes(state,0x42,buf,1); /* configure sdm */ @@ -357,7 +370,20 @@ static int nxt2002_setup_frontend_parame nxt2002_writereg_multibyte(state,0x58,buf,2); /* write sdmx input */ + switch (p->u.vsb.modulation) { + case QAM_64: + buf[0] = 0x68; + break; + case QAM_256: + buf[0] = 0x64; + break; + case VSB_8: buf[0] = 0x60; + break; + default: + return -EINVAL; + break; + } buf[1] = 0x00; nxt2002_writereg_multibyte(state,0x5C,buf,2); @@ -387,7 +413,20 @@ static int nxt2002_setup_frontend_parame i2c_writebytes(state,0x41,buf,1); /* write agc ucgp0 */ + switch (p->u.vsb.modulation) { + case QAM_64: + buf[0] = 0x02; + break; + case QAM_256: + buf[0] = 0x03; + break; + case VSB_8: buf[0] = 0x00; + break; + default: + return -EINVAL; + break; + } i2c_writebytes(state,0x30,buf,1); /* write agc control reg */ @@ -632,12 +671,12 @@ static struct dvb_frontend_ops nxt2002_o .name = "Nextwave nxt2002 VSB/QAM frontend", .type = FE_ATSC, .frequency_min = 54000000, - .frequency_max = 803000000, + .frequency_max = 806000000, /* stepsize is just a guess */ .frequency_stepsize = 166666, .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | - FE_CAN_8VSB + FE_CAN_8VSB | FE_CAN_QAM_64 | FE_CAN_QAM_256 }, .release = nxt2002_release, _