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

[media] cx24117: Add complete demod command list

This patch adds the complete list of all the commands known
for the cx24117 demodulator.

Signed-off-by: Luis Alves <ljalvs@gmail.com>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>

authored by

Luis Alves and committed by
Mauro Carvalho Chehab
9fa7c419 3f823e09

+58 -40
+58 -40
drivers/media/dvb-frontends/cx24117.c
··· 135 135 136 136 137 137 enum cmds { 138 - CMD_SET_VCO = 0x10, 139 - CMD_TUNEREQUEST = 0x11, 140 - CMD_MPEGCONFIG = 0x13, 141 - CMD_TUNERINIT = 0x14, 142 - CMD_LNBSEND = 0x21, /* Formerly CMD_SEND_DISEQC */ 143 - CMD_LNBDCLEVEL = 0x22, 144 - CMD_SET_TONE = 0x23, 145 - CMD_UPDFWVERS = 0x35, 146 - CMD_TUNERSLEEP = 0x36, 138 + CMD_SET_VCOFREQ = 0x10, 139 + CMD_TUNEREQUEST = 0x11, 140 + CMD_GLOBAL_MPEGCFG = 0x13, 141 + CMD_MPEGCFG = 0x14, 142 + CMD_TUNERINIT = 0x15, 143 + CMD_GET_SRATE = 0x18, 144 + CMD_SET_GOLDCODE = 0x19, 145 + CMD_GET_AGCACC = 0x1a, 146 + CMD_DEMODINIT = 0x1b, 147 + CMD_GETCTLACC = 0x1c, 148 + 149 + CMD_LNBCONFIG = 0x20, 150 + CMD_LNBSEND = 0x21, 151 + CMD_LNBDCLEVEL = 0x22, 152 + CMD_LNBPCBCONFIG = 0x23, 153 + CMD_LNBSENDTONEBST = 0x24, 154 + CMD_LNBUPDREPLY = 0x25, 155 + 156 + CMD_SET_GPIOMODE = 0x30, 157 + CMD_SET_GPIOEN = 0x31, 158 + CMD_SET_GPIODIR = 0x32, 159 + CMD_SET_GPIOOUT = 0x33, 160 + CMD_ENABLERSCORR = 0x34, 161 + CMD_FWVERSION = 0x35, 162 + CMD_SET_SLEEPMODE = 0x36, 163 + CMD_BERCTRL = 0x3c, 164 + CMD_EVENTCTRL = 0x3d, 147 165 }; 148 166 149 167 static LIST_HEAD(hybrid_tuner_instance_list); ··· 637 619 cx24117_writereg(state, 0xf7, 0x0c); 638 620 cx24117_writereg(state, 0xe0, 0x00); 639 621 640 - /* CMD 1B */ 641 - cmd.args[0] = 0x1b; 622 + /* Init demodulator */ 623 + cmd.args[0] = CMD_DEMODINIT; 642 624 cmd.args[1] = 0x00; 643 625 cmd.args[2] = 0x01; 644 626 cmd.args[3] = 0x00; ··· 647 629 if (ret != 0) 648 630 goto error; 649 631 650 - /* CMD 10 */ 651 - cmd.args[0] = CMD_SET_VCO; 632 + /* Set VCO frequency */ 633 + cmd.args[0] = CMD_SET_VCOFREQ; 652 634 cmd.args[1] = 0x06; 653 635 cmd.args[2] = 0x2b; 654 636 cmd.args[3] = 0xd8; ··· 666 648 if (ret != 0) 667 649 goto error; 668 650 669 - /* CMD 15 */ 670 - cmd.args[0] = 0x15; 651 + /* Tuner init */ 652 + cmd.args[0] = CMD_TUNERINIT; 671 653 cmd.args[1] = 0x00; 672 654 cmd.args[2] = 0x01; 673 655 cmd.args[3] = 0x00; ··· 685 667 if (ret != 0) 686 668 goto error; 687 669 688 - /* CMD 13 */ 689 - cmd.args[0] = CMD_MPEGCONFIG; 670 + /* Global MPEG config */ 671 + cmd.args[0] = CMD_GLOBAL_MPEGCFG; 690 672 cmd.args[1] = 0x00; 691 673 cmd.args[2] = 0x00; 692 674 cmd.args[3] = 0x00; ··· 697 679 if (ret != 0) 698 680 goto error; 699 681 700 - /* CMD 14 */ 682 + /* MPEG config for each demod */ 701 683 for (i = 0; i < 2; i++) { 702 - cmd.args[0] = CMD_TUNERINIT; 684 + cmd.args[0] = CMD_MPEGCFG; 703 685 cmd.args[1] = (u8) i; 704 686 cmd.args[2] = 0x00; 705 687 cmd.args[3] = 0x05; ··· 717 699 cx24117_writereg(state, 0xcf, 0x00); 718 700 cx24117_writereg(state, 0xe5, 0x04); 719 701 720 - /* Firmware CMD 35: Get firmware version */ 721 - cmd.args[0] = CMD_UPDFWVERS; 702 + /* Get firmware version */ 703 + cmd.args[0] = CMD_FWVERSION; 722 704 cmd.len = 2; 723 705 for (i = 0; i < 4; i++) { 724 706 cmd.args[1] = i; ··· 797 779 u8 reg = (state->demod == 0) ? 798 780 CX24117_REG_SSTATUS0 : CX24117_REG_SSTATUS1; 799 781 800 - /* Firmware CMD 1A */ 801 - cmd.args[0] = 0x1a; 782 + /* Read AGC accumulator register */ 783 + cmd.args[0] = CMD_GET_AGCACC; 802 784 cmd.args[1] = (u8) state->demod; 803 785 cmd.len = 2; 804 786 ret = cx24117_cmd_execute(fe, &cmd); ··· 917 899 voltage == SEC_VOLTAGE_18 ? "SEC_VOLTAGE_18" : 918 900 "SEC_VOLTAGE_OFF"); 919 901 920 - /* CMD 32 */ 921 - cmd.args[0] = 0x32; 902 + /* Set GPIO direction */ 903 + cmd.args[0] = CMD_SET_GPIODIR; 922 904 cmd.args[1] = reg; 923 905 cmd.args[2] = reg; 924 906 cmd.len = 3; ··· 928 910 929 911 if ((voltage == SEC_VOLTAGE_13) || 930 912 (voltage == SEC_VOLTAGE_18)) { 931 - /* CMD 33 */ 932 - cmd.args[0] = 0x33; 913 + /* Set GPIO logic level */ 914 + cmd.args[0] = CMD_SET_GPIOOUT; 933 915 cmd.args[1] = reg; 934 916 cmd.args[2] = reg; 935 917 cmd.len = 3; ··· 944 926 /* Wait for voltage/min repeat delay */ 945 927 msleep(100); 946 928 947 - /* CMD 22 - CMD_LNBDCLEVEL */ 929 + /* Set 13V/18V select pin */ 948 930 cmd.args[0] = CMD_LNBDCLEVEL; 949 931 cmd.args[1] = state->demod ? 0 : 1; 950 932 cmd.args[2] = (voltage == SEC_VOLTAGE_18 ? 0x01 : 0x00); ··· 953 935 /* Min delay time before DiSEqC send */ 954 936 msleep(20); 955 937 } else { 956 - cmd.args[0] = 0x33; 938 + cmd.args[0] = CMD_SET_GPIOOUT; 957 939 cmd.args[1] = 0x00; 958 940 cmd.args[2] = reg; 959 941 cmd.len = 3; ··· 986 968 msleep(20); 987 969 988 970 /* Set the tone */ 989 - /* CMD 23 - CMD_SET_TONE */ 990 - cmd.args[0] = CMD_SET_TONE; 971 + cmd.args[0] = CMD_LNBPCBCONFIG; 991 972 cmd.args[1] = (state->demod ? 0 : 1); 992 973 cmd.args[2] = 0x00; 993 974 cmd.args[3] = 0x00; ··· 1248 1231 1249 1232 mutex_lock(&state->priv->fe_lock); 1250 1233 1251 - /* Firmware CMD 36: Power config */ 1252 - cmd.args[0] = CMD_TUNERSLEEP; 1234 + /* Set sleep mode off */ 1235 + cmd.args[0] = CMD_SET_SLEEPMODE; 1253 1236 cmd.args[1] = (state->demod ? 1 : 0); 1254 1237 cmd.args[2] = 0; 1255 1238 cmd.len = 3; ··· 1261 1244 if (ret != 0) 1262 1245 goto exit; 1263 1246 1264 - /* CMD 3C */ 1265 - cmd.args[0] = 0x3c; 1247 + /* Set BER control */ 1248 + cmd.args[0] = CMD_BERCTRL; 1266 1249 cmd.args[1] = (state->demod ? 1 : 0); 1267 1250 cmd.args[2] = 0x10; 1268 1251 cmd.args[3] = 0x10; ··· 1271 1254 if (ret != 0) 1272 1255 goto exit; 1273 1256 1274 - /* CMD 34 */ 1275 - cmd.args[0] = 0x34; 1257 + /* Set RS correction (enable/disable) */ 1258 + cmd.args[0] = CMD_ENABLERSCORR; 1276 1259 cmd.args[1] = (state->demod ? 1 : 0); 1277 1260 cmd.args[2] = CX24117_OCC; 1278 1261 cmd.len = 3; ··· 1295 1278 dev_dbg(&state->priv->i2c->dev, "%s() demod%d\n", 1296 1279 __func__, state->demod); 1297 1280 1298 - /* Firmware CMD 36: Power config */ 1299 - cmd.args[0] = CMD_TUNERSLEEP; 1281 + /* Set sleep mode on */ 1282 + cmd.args[0] = CMD_SET_SLEEPMODE; 1300 1283 cmd.args[1] = (state->demod ? 1 : 0); 1301 1284 cmd.args[2] = 1; 1302 1285 cmd.len = 3; ··· 1575 1558 1576 1559 u8 buf[0x1f-4]; 1577 1560 1578 - cmd.args[0] = 0x1c; 1561 + /* Read current tune parameters */ 1562 + cmd.args[0] = CMD_GETCTLACC; 1579 1563 cmd.args[1] = (u8) state->demod; 1580 1564 cmd.len = 2; 1581 1565 ret = cx24117_cmd_execute(fe, &cmd);