axehelper/axe-debug: add demod status dump
This commit is contained in:
parent
4594c78293
commit
ae897833ea
@ -55,6 +55,28 @@ pti)
|
|||||||
vdev) while [ 1 -eq 1 ]; do grep -v $noex $d/vDeviceInfo ; sleep 0.2 ; done ;;
|
vdev) while [ 1 -eq 1 ]; do grep -v $noex $d/vDeviceInfo ; sleep 0.2 ; done ;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
demod)
|
||||||
|
for a in 0xd0:f2:f3:Input_1 0xd0:f4:f5:Input_2 \
|
||||||
|
0xd2:f2:f3:Input_3 0xd2:f4:f5:Input_4; do
|
||||||
|
d=$(echo $a | cut -d ':' -f 1)
|
||||||
|
a1=$(echo $a | cut -d ':' -f 2)
|
||||||
|
a2=$(echo $a | cut -d ':' -f 3)
|
||||||
|
n=$(echo $a | cut -d ':' -f 4)
|
||||||
|
echo
|
||||||
|
echo ">>> $n"
|
||||||
|
echo "********************************************************"
|
||||||
|
echo
|
||||||
|
axehelper i2c_demod_reg_read --decode $d 0x${a1}12 2
|
||||||
|
axehelper i2c_demod_reg_read --decode $d 0x${a1}16 1
|
||||||
|
axehelper i2c_demod_reg_read --decode $d 0x${a2}69 2
|
||||||
|
axehelper i2c_demod_reg_read --decode $d 0x${a2}70 1
|
||||||
|
axehelper i2c_demod_reg_read --decode $d 0x${a2}80 5
|
||||||
|
axehelper i2c_demod_reg_read --decode $d 0x${a2}99 3
|
||||||
|
axehelper i2c_demod_reg_read --decode $d 0x${a2}9d 3
|
||||||
|
axehelper i2c_demod_reg_read --decode $d 0x${a2}a4 1
|
||||||
|
axehelper i2c_demod_reg_read --decode $d 0x${a2}ad 3
|
||||||
|
done
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
show_help
|
show_help
|
||||||
esac
|
esac
|
||||||
|
@ -178,6 +178,15 @@ static struct regdmp f212[] = {
|
|||||||
{ 0, 0, 0, NULL }
|
{ 0, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct regdmp f213[] = {
|
||||||
|
{ 0, 7, 1, "DEMOD_DELOCK" },
|
||||||
|
{ 0, 3, 3, "AGC1_NOSIGNALACK" },
|
||||||
|
{ 0, 2, 1, "AGC2_OVERFLOW" },
|
||||||
|
{ 0, 1, 1, "CFR_OVERFLOW" },
|
||||||
|
{ 0, 0, 1, "GAMMA_OVERUNDER" },
|
||||||
|
{ 0, 0, 0, NULL }
|
||||||
|
};
|
||||||
|
|
||||||
static struct regdmp f214[] = {
|
static struct regdmp f214[] = {
|
||||||
{ 0, 7, 1, "DVBS2_ENABLE" },
|
{ 0, 7, 1, "DVBS2_ENABLE" },
|
||||||
{ 0, 6, 1, "DVBS1_ENABLE" },
|
{ 0, 6, 1, "DVBS1_ENABLE" },
|
||||||
@ -468,6 +477,22 @@ static struct regdmp f369[] = {
|
|||||||
{ 0, 0, 0, NULL }
|
{ 0, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct regdmp f36a[] = {
|
||||||
|
{ 0, 3,31, "FRAME_MODCOD" },
|
||||||
|
{ 0, 0, 3, "FRAME_TYPE" },
|
||||||
|
{ 0, 0, 0, NULL }
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct regdmp f370[] = {
|
||||||
|
{ 0, 7, 1, "TSDIL_ON" },
|
||||||
|
{ 0, 6, 1, "TSRS_ON" },
|
||||||
|
{ 0, 4, 1, "TSDESCRAMB_ON" },
|
||||||
|
{ 0, 3, 1, "TSFRAME_MODE" },
|
||||||
|
{ 0, 2, 1, "TS_DISABLE" },
|
||||||
|
{ 0, 0, 1, "TSOUT_NOSYNC" },
|
||||||
|
{ 0, 0, 0, NULL }
|
||||||
|
};
|
||||||
|
|
||||||
static struct regdmp f372[] = {
|
static struct regdmp f372[] = {
|
||||||
{ 0, 7, 1, "TSFIFO_DVBCI" },
|
{ 0, 7, 1, "TSFIFO_DVBCI" },
|
||||||
{ 0, 6, 7, "TSFIFO_SERIAL" },
|
{ 0, 6, 7, "TSFIFO_SERIAL" },
|
||||||
@ -492,6 +517,12 @@ static struct regdmp f398[] = {
|
|||||||
{ 0, 0, 0, NULL }
|
{ 0, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct regdmp f39d[] = {
|
||||||
|
{ 0, 7, 1, "OLDVALUE" },
|
||||||
|
{ 0, 0,127,"VAL" },
|
||||||
|
{ 0, 0, 0, NULL }
|
||||||
|
};
|
||||||
|
|
||||||
static struct regdmp f3a0[] = {
|
static struct regdmp f3a0[] = {
|
||||||
{ 0, 7, 1, "SPY_ENABLE" },
|
{ 0, 7, 1, "SPY_ENABLE" },
|
||||||
{ 0, 6, 1, "NO_SYNCBYTE" },
|
{ 0, 6, 1, "NO_SYNCBYTE" },
|
||||||
@ -503,6 +534,15 @@ static struct regdmp f3a0[] = {
|
|||||||
{ 0, 0, 0, NULL }
|
{ 0, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct regdmp f3a4[] = {
|
||||||
|
{ 0, 7, 1, "SPY_ENDSIM" },
|
||||||
|
{ 0, 6, 1, "VALID_SIM" },
|
||||||
|
{ 0, 5, 1, "FOUND_SIGNAL" },
|
||||||
|
{ 0, 4, 1, "DSS_SYNCBYTE" },
|
||||||
|
{ 0, 0,15, "RESULT_STATE" },
|
||||||
|
{ 0, 0, 0, NULL }
|
||||||
|
};
|
||||||
|
|
||||||
static struct regdmp f332[] = {
|
static struct regdmp f332[] = {
|
||||||
{ 0, 7, 1, "NVTH_NOSRANGE" },
|
{ 0, 7, 1, "NVTH_NOSRANGE" },
|
||||||
{ 0, 6, 1, "VERROR_MAXMODE" },
|
{ 0, 6, 1, "VERROR_MAXMODE" },
|
||||||
@ -583,6 +623,7 @@ static struct reg reg_tbl[] = {
|
|||||||
{ 0xf20f, 0, byte, "AGCIQIN0" },
|
{ 0xf20f, 0, byte, "AGCIQIN0" },
|
||||||
{ 0xf211, 0, f211, "DMDMODCOD" },
|
{ 0xf211, 0, f211, "DMDMODCOD" },
|
||||||
{ 0xf212, 0, f212, "DSTATUS" },
|
{ 0xf212, 0, f212, "DSTATUS" },
|
||||||
|
{ 0xf213, 0, f213, "DSTATUS2" },
|
||||||
{ 0xf214, 0, f214, "DMDCFGMD" },
|
{ 0xf214, 0, f214, "DMDCFGMD" },
|
||||||
{ 0xf215, 0, f215, "DMDCFG2" },
|
{ 0xf215, 0, f215, "DMDCFG2" },
|
||||||
{ 0xf216, 0, f216, "DMDISTATE" },
|
{ 0xf216, 0, f216, "DMDISTATE" },
|
||||||
@ -667,14 +708,24 @@ static struct reg reg_tbl[] = {
|
|||||||
{ 0xf33c, 0, f33c, "PRVIT" },
|
{ 0xf33c, 0, f33c, "PRVIT" },
|
||||||
{ 0xf33d, 0, f33d, "VAVSRVIT" },
|
{ 0xf33d, 0, f33d, "VAVSRVIT" },
|
||||||
{ 0xf33e, 0, f33e, "VSTATUSVIT" },
|
{ 0xf33e, 0, f33e, "VSTATUSVIT" },
|
||||||
|
{ 0xf370, 0, f370, "TSSTATEM" },
|
||||||
{ 0xf372, 0, f372, "TSCFGH" },
|
{ 0xf372, 0, f372, "TSCFGH" },
|
||||||
{ 0xf369, 0, f369, "PDELSTATUS1" },
|
{ 0xf369, 0, f369, "PDELSTATUS1" },
|
||||||
|
{ 0xf36a, 0, f36a, "PDELSTATUS2" },
|
||||||
|
{ 0xf380, 0, byte, "TSFIFO_OUTSPEED" },
|
||||||
{ 0xf381, 0, f381, "TSSTATUS" },
|
{ 0xf381, 0, f381, "TSSTATUS" },
|
||||||
{ 0xf398, 0, f398, "ERRCTRL1" },
|
{ 0xf398, 0, f398, "ERRCTRL1" },
|
||||||
{ 0xf399, 0, byte, "ERRCNT12" },
|
{ 0xf399, 0, byte, "ERRCNT12" },
|
||||||
{ 0xf39a, 0, byte, "ERRCNT11" },
|
{ 0xf39a, 0, byte, "ERRCNT11" },
|
||||||
{ 0xf39b, 0, byte, "ERRCNT10" },
|
{ 0xf39b, 0, byte, "ERRCNT10" },
|
||||||
|
{ 0xf39d, 0, f39d, "ERRCNT22" },
|
||||||
|
{ 0xf39e, 0, byte, "ERRCNT21" },
|
||||||
|
{ 0xf39f, 0, byte, "ERRCNT20" },
|
||||||
{ 0xf3a0, 0, f3a0, "FECSPY" },
|
{ 0xf3a0, 0, f3a0, "FECSPY" },
|
||||||
|
{ 0xf3a4, 0, f3a4, "FSTATUS" },
|
||||||
|
{ 0xf3ad, 0, byte, "FBERERR2" },
|
||||||
|
{ 0xf3ae, 0, byte, "FBERERR1" },
|
||||||
|
{ 0xf3af, 0, byte, "FBERERR0" },
|
||||||
{ 0xf332, 0, f332, "VITSCALE" },
|
{ 0xf332, 0, f332, "VITSCALE" },
|
||||||
{ 0xf600, 0, byte, "RCCFG2" },
|
{ 0xf600, 0, byte, "RCCFG2" },
|
||||||
{ 0xfa43, 0, byte, "GAINLLR_NF4/QP_1_2" },
|
{ 0xfa43, 0, byte, "GAINLLR_NF4/QP_1_2" },
|
||||||
@ -710,7 +761,7 @@ i2c_prefix(int addr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
i2c_line(int rd, int t1, const char *s)
|
i2c_line(int rd, int t1, int start, const char *s)
|
||||||
{
|
{
|
||||||
static struct reg *old_rt[2] = { NULL, NULL };
|
static struct reg *old_rt[2] = { NULL, NULL };
|
||||||
static int old_cmd[2] = { 0, 0 };
|
static int old_cmd[2] = { 0, 0 };
|
||||||
@ -719,7 +770,7 @@ i2c_line(int rd, int t1, const char *s)
|
|||||||
struct regdmp *rtd;
|
struct regdmp *rtd;
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
|
|
||||||
r = sscanf(s + 11, "%x, %d) %x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x",
|
r = sscanf(s + start, "%x, %d) %x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x",
|
||||||
&addr, &cnt,
|
&addr, &cnt,
|
||||||
&d[0], &d[1], &d[2], &d[3], &d[4], &d[5], &d[6], &d[7],
|
&d[0], &d[1], &d[2], &d[3], &d[4], &d[5], &d[6], &d[7],
|
||||||
&d[8], &d[9], &d[10], &d[11], &d[12], &d[13], &d[14], &d[15]);
|
&d[8], &d[9], &d[10], &d[11], &d[12], &d[13], &d[14], &d[15]);
|
||||||
@ -837,13 +888,13 @@ i2c_decoder(void)
|
|||||||
buf[strlen(buf)-1] = '\0';
|
buf[strlen(buf)-1] = '\0';
|
||||||
r = -1;
|
r = -1;
|
||||||
if (!strncmp(buf, "[i2c] wrte(", 11))
|
if (!strncmp(buf, "[i2c] wrte(", 11))
|
||||||
r = i2c_line(0, 0, buf);
|
r = i2c_line(0, 0, 11, buf);
|
||||||
else if (!strncmp(buf, "[i2c] read(", 11))
|
else if (!strncmp(buf, "[i2c] read(", 11))
|
||||||
r = i2c_line(1, 0, buf);
|
r = i2c_line(1, 0, 11, buf);
|
||||||
else if (!strncmp(buf, "[i2c] t1_w(", 11))
|
else if (!strncmp(buf, "[i2c] t1_w(", 11))
|
||||||
r = i2c_line(0, 1, buf);
|
r = i2c_line(0, 1, 11, buf);
|
||||||
else if (!strncmp(buf, "[i2c] t1_r(", 11))
|
else if (!strncmp(buf, "[i2c] t1_r(", 11))
|
||||||
r = i2c_line(1, 1, buf);
|
r = i2c_line(1, 1, 11, buf);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
printf("%s\n", buf);
|
printf("%s\n", buf);
|
||||||
}
|
}
|
||||||
@ -967,8 +1018,51 @@ i2c_scan(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
#define MAXARGV 32
|
||||||
|
#define MAXOPTS 32
|
||||||
|
|
||||||
|
static char *argv[MAXARGV];
|
||||||
|
static int argc;
|
||||||
|
static char *opts[MAXOPTS];
|
||||||
|
static int optc;
|
||||||
|
|
||||||
|
static int
|
||||||
|
find_opt(const char *name)
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < optc; i++)
|
||||||
|
if (strcmp(opts[i], name) == 0)
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
parse_args(int _argc, char *_argv[])
|
||||||
|
{
|
||||||
|
char *s;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
argv[0] = _argv[0];
|
||||||
|
argc = 1;
|
||||||
|
for (i = 1; i < _argc; i++) {
|
||||||
|
s = _argv[i];
|
||||||
|
if (s[0] == '-') {
|
||||||
|
s++;
|
||||||
|
if (s[0] == '-')
|
||||||
|
s++;
|
||||||
|
if (optc < MAXOPTS)
|
||||||
|
opts[optc++] = s;
|
||||||
|
} else {
|
||||||
|
if (argc < MAXARGV)
|
||||||
|
argv[argc++] = s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int _argc, char *_argv[])
|
||||||
|
{
|
||||||
|
parse_args(_argc, _argv);
|
||||||
if (argc > 1 && !strcmp(argv[1], "wait")) {
|
if (argc > 1 && !strcmp(argv[1], "wait")) {
|
||||||
long int ms = 1000;
|
long int ms = 1000;
|
||||||
const char *f = NULL;
|
const char *f = NULL;
|
||||||
@ -991,19 +1085,32 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
if (argc > 1 && !strcmp(argv[1], "i2c_demod_reg_read")) {
|
if (argc > 1 && !strcmp(argv[1], "i2c_demod_reg_read")) {
|
||||||
if (argc > 3) {
|
if (argc > 3) {
|
||||||
int i;
|
int i, j;
|
||||||
int a = strtol(argv[2], NULL, 0);
|
int a = strtol(argv[2], NULL, 0);
|
||||||
int r = strtol(argv[3], NULL, 0);
|
int r = strtol(argv[3], NULL, 0);
|
||||||
int c = argc > 4 ? strtol(argv[4], NULL, 0) : 1;
|
int c = argc > 4 ? strtol(argv[4], NULL, 0) : 1;
|
||||||
u8 buf[16];
|
u8 buf[16];
|
||||||
|
char buf2[256];
|
||||||
if (a > 0 && r > 0) {
|
if (a > 0 && r > 0) {
|
||||||
i = i2c_demod_reg_read(a, r, buf, c > sizeof(buf) ? sizeof(buf) : c);
|
i = i2c_demod_reg_read(a, r, buf, c > sizeof(buf) ? sizeof(buf) : c);
|
||||||
if (i < 0)
|
if (i < 0)
|
||||||
printf("Unable to read register 0x%x from addr 0x%x\n", r, a);
|
printf("Unable to read register 0x%x from addr 0x%x\n", r, a);
|
||||||
else {
|
else {
|
||||||
for (r = 0; r < i; r++)
|
if (find_opt("decode")) {
|
||||||
printf("%s0x%02x", r > 0 ? ":" : "", buf[r]);
|
sprintf(buf2, " > (%x, %d) %02x.%02x", a & ~1, 2, (r >> 8) & 0xff, r & 0xff);
|
||||||
|
if (i2c_line(0, 0, 5, buf2) >= 0) {
|
||||||
|
sprintf(buf2, " < (%x, %d) ", a | 1, i);
|
||||||
|
for (j = 0; j < i; j++)
|
||||||
|
sprintf(buf2 + strlen(buf2), "%s%02x", j > 0 ? "." : "", buf[j]);
|
||||||
|
if (i2c_line(1, 0, 5, buf2) >= 0)
|
||||||
|
exit(EXIT_SUCCESS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!find_opt("decode") || find_opt("raw")) {
|
||||||
|
for (j = 0; j < i; j++)
|
||||||
|
printf("%s0x%02x", j > 0 ? ":" : "", buf[j]);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
}
|
||||||
exit(EXIT_SUCCESS);
|
exit(EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user