Last (?) tidying according review from MCUdude and stefanrueger

Signed-off-by: Martin <Ho-Ro@users.noreply.github.com>
This commit is contained in:
Martin
2023-11-29 22:17:22 +01:00
parent b438ba5233
commit aaa26d9169
3 changed files with 70 additions and 59 deletions

View File

@@ -1085,16 +1085,22 @@ static int jtagmkI_get_sck_period(const PROGRAMMER *pgm, double *v) {
*v = 500e3;
else if (dur == JTAG_BITRATE_250_kHz)
*v = 250e3;
else
else if (dur == JTAG_BITRATE_125_kHz)
*v = 125e3;
else { // something went wrong
pmsg_error("wrong JTAG_BITRATE ID %02X\n", dur);
return -1;
}
return 0;
}
static int jtagmkI_get_vtarget(const PROGRAMMER *pgm, double *v) {
unsigned char vtarget = 0;
if (jtagmkI_getparm(pgm, PARM_OCD_VTARGET, &vtarget) < 0)
return - 1;
if (jtagmkI_getparm(pgm, PARM_OCD_VTARGET, &vtarget) < 0) {
pmsg_error("jtagmkI_getparm PARM_OCD_VTARGET failed\n");
return -1;
}
*v = 6.25 * (unsigned)vtarget / 255.0;
return 0;
}

View File

@@ -1190,8 +1190,10 @@ static int stk500_set_vtarget(const PROGRAMMER *pgm, double v) {
if (uaref > utarg) {
pmsg_warning("reducing V[aref] from %.1f to %.1f\n", uaref / 10.0, v);
if ((rc = stk500_setparm(pgm, Parm_STK_VADJUST, utarg)) != 0)
if ((rc = stk500_setparm(pgm, Parm_STK_VADJUST, utarg)) != 0) {
pmsg_error("cannot set V[aref]\n");
return rc;
}
}
return stk500_setparm(pgm, Parm_STK_VTARGET, utarg);
}
@@ -1228,7 +1230,10 @@ static int stk500_set_varef(const PROGRAMMER *pgm, unsigned int chan /* unused *
"V[target] = %.1f\n", utarg/10.0);
return -1;
}
return stk500_setparm(pgm, Parm_STK_VADJUST, uaref);
if ((rc = stk500_setparm(pgm, Parm_STK_VADJUST, uaref)) < 0)
pmsg_error("cannot set V[aref]\n");
return rc;
}
@@ -1253,7 +1258,7 @@ static int stk500_set_fosc(const PROGRAMMER *pgm, double v) {
1, 8, 32, 64, 128, 256, 1024
};
size_t idx;
int rc;
int rc = 0;
prescale = cmatch = 0;
if (v > 0.0) {
@@ -1287,31 +1292,39 @@ static int stk500_set_fosc(const PROGRAMMER *pgm, double v) {
}
}
if ((rc = stk500_setparm(pgm, Parm_STK_OSC_PSCALE, prescale)) != 0
|| (rc = stk500_setparm(pgm, Parm_STK_OSC_CMATCH, cmatch)) != 0)
if ((rc = stk500_setparm(pgm, Parm_STK_OSC_PSCALE, prescale)) != 0 ) {
pmsg_error("cannot set Parm_STK_OSC_PSCALE\n");
return rc;
}
if ((rc = stk500_setparm(pgm, Parm_STK_OSC_CMATCH, cmatch)) != 0) {
pmsg_error("cannot set Parm_STK_OSC_CMATCH\n");
return rc;
}
return 0;
}
static int stk500_get_fosc(const PROGRAMMER *pgm, double *v) {
unsigned prescale=0, cmatch=0;
double fosc = 0;
static unsigned ps[] = {
1, 8, 32, 64, 128, 256, 1024
};
int rc;
if ((rc = stk500_getparm(pgm, Parm_STK_OSC_PSCALE, &prescale)) != 0
|| (rc = stk500_getparm(pgm, Parm_STK_OSC_CMATCH, &cmatch)) != 0)
if ((rc = stk500_getparm(pgm, Parm_STK_OSC_PSCALE, &prescale)) != 0) {
pmsg_error("cannot get Parm_STK_OSC_PSCALE\n");
return rc;
}
if ((rc = stk500_getparm(pgm, Parm_STK_OSC_CMATCH, &cmatch)) != 0) {
pmsg_error("cannot get Parm_STK_OSC_CMATCH\n");
return rc;
}
*v = !prescale ? 0 : PDATA(pgm)->xtal / ((cmatch + 1) * 2 * ps[prescale - 1]);
if (prescale) {
fosc = PDATA(pgm)->xtal / ((cmatch + 1) * 2 * ps[prescale - 1]);
} else
fosc = 0;
*v = fosc;
return 0;
}
@@ -1326,11 +1339,12 @@ static int stk500_get_fosc(const PROGRAMMER *pgm, double *v) {
static int stk500_set_sck_period(const PROGRAMMER *pgm, double v) {
int dur;
double min, max;
int rv = 0;
min = 8.0 / PDATA(pgm)->xtal;
max = 255 * min;
dur = v / min + 0.5;
if (v < min) {
dur = 1;
pmsg_warning("p = %.1f us too small, using %.1f us\n",
@@ -1340,8 +1354,12 @@ static int stk500_set_sck_period(const PROGRAMMER *pgm, double v) {
pmsg_warning("p = %.1f us too large, using %.1f us\n",
v/1e-6, dur*min/1e-6);
}
return stk500_setparm(pgm, Parm_STK_SCK_DURATION, dur);
if ((rv = stk500_setparm(pgm, Parm_STK_SCK_DURATION, dur)) < 0) {
pmsg_error("cannot set Parm_STK_SCK_DURATION\n");
return rv;
}
return 0;
}
@@ -1349,8 +1367,8 @@ static int stk500_get_sck_period(const PROGRAMMER *pgm, double *v) {
unsigned dur;
int rv = 0;
if ((rv = stk500_getparm(pgm, Parm_STK_SCK_DURATION, &dur))< 0) {
pmsg_error("cannot obtain sck duration\n");
if ((rv = stk500_getparm(pgm, Parm_STK_SCK_DURATION, &dur)) < 0) {
pmsg_error("cannot obtain Parm_STK_SCK_DURATION\n");
return rv;
}
*v = dur * 8.0 / PDATA(pgm)->xtal;

View File

@@ -301,10 +301,7 @@ void stk500v2_setup(PROGRAMMER * pgm)
memset(pgm->cookie, 0, sizeof(struct pdata));
PDATA(pgm)->command_sequence = 1;
PDATA(pgm)->boot_start = ULONG_MAX;
if (str_starts(pgmid, "scratchmonkey"))
PDATA(pgm)->xtal = SCRATCHMONKEY_XTAL;
else
PDATA(pgm)->xtal = STK500V2_XTAL;
PDATA(pgm)->xtal = str_starts(pgmid, "scratchmonkey") ? SCRATCHMONKEY_XTAL : STK500V2_XTAL;
}
static void stk500v2_jtagmkII_setup(PROGRAMMER * pgm)
@@ -3719,11 +3716,14 @@ static double stk500v2_vtarget_value(const PROGRAMMER *pgm) {
jtagmkII_getparm(pgmcp, PAR_OCD_VTARGET, vtarget_jtag);
pgm_free(pgmcp);
return b2_to_u16(vtarget_jtag) / 1000.0;
} else if (PDATA(pgm)->pgmtype != PGMTYPE_JTAGICE3) {
}
if (PDATA(pgm)->pgmtype != PGMTYPE_JTAGICE3) {
unsigned char vtarget = 0;
stk500v2_getparm(pgm, PARAM_VTARGET, &vtarget);
return vtarget / 10.0;
}
return 0;
}
@@ -3736,13 +3736,11 @@ static double stk500v2_sck_duration_value(const PROGRAMMER *pgm) {
case PGMTYPE_STK500:
stk500v2_getparm(pgm, PARAM_SCK_DURATION, &sck_duration);
return stk500v2_sck_to_us(pgm, sck_duration);
break;
case PGMTYPE_AVRISP_MKII:
case PGMTYPE_JTAGICE_MKII:
stk500v2_getparm(pgm, PARAM_SCK_DURATION, &sck_duration);
return 1.0e6 / avrispmkIIfreqs[sck_duration];
break;
case PGMTYPE_JTAGICE3:
{
@@ -3754,16 +3752,13 @@ static double stk500v2_sck_duration_value(const PROGRAMMER *pgm) {
}
return 0;
}
break;
case PGMTYPE_STK600:
stk500v2_getparm2(pgm, PARAM2_SCK_DURATION, &sck_stk600);
return (sck_stk600 + 1) / 8.0;
break;
default:
return sck_duration * 8.0e6 / PDATA(pgm)->xtal + 0.05;
break;
}
return 0;
}
@@ -3771,7 +3766,6 @@ static double stk500v2_sck_duration_value(const PROGRAMMER *pgm) {
static double stk500v2_varef_value(const PROGRAMMER *pgm) {
unsigned char vadjust = 0;
if (stk500v2_getparm(pgm, PARAM_VADJUST, &vadjust) < 0)
return 0;
return vadjust / 10.0;
@@ -3808,30 +3802,27 @@ static double stk500v2_fosc_value(const PROGRAMMER *pgm) {
return 0.0;
if (osc_pscale == 0)
return 0.0;
else {
prescale = 1;
fosc = PDATA(pgm)->xtal / 2;
switch (osc_pscale) {
case 2: prescale = 8; break;
case 3: prescale = 32; break;
case 4: prescale = 64; break;
case 5: prescale = 128; break;
case 6: prescale = 256; break;
case 7: prescale = 1024; break;
}
fosc /= prescale;
fosc /= (osc_cmatch + 1);
return fosc;
prescale = 1;
fosc = PDATA(pgm)->xtal / 2;
switch (osc_pscale) {
case 2: prescale = 8; break;
case 3: prescale = 32; break;
case 4: prescale = 64; break;
case 5: prescale = 128; break;
case 6: prescale = 256; break;
case 7: prescale = 1024; break;
}
break;
fosc /= prescale;
fosc /= (osc_cmatch + 1);
return fosc;
case PGMTYPE_AVRISP_MKII:
case PGMTYPE_JTAGICE_MKII:
if (stk500v2_getparm(pgm, PARAM_SCK_DURATION, &sck_duration) < 0)
return 0.0;
return 1e6 / avrispmkIIfreqs[sck_duration];
break;
case PGMTYPE_STK600:
if (stk500v2_getparm2(pgm, PARAM2_CLOCK_CONF, &clock_conf) < 0)
@@ -3840,14 +3831,10 @@ static double stk500v2_fosc_value(const PROGRAMMER *pgm) {
dac = (clock_conf & 0x0ffc) >> 2u;
fosc = pow(2, (double)oct) * 2078.0 / (2 - (double)dac / 1024.0);
return fosc;
break;
default:
return 0.0;
break;
}
return 0.0;
}
@@ -3887,7 +3874,7 @@ static void stk500v2_print_parms1(const PROGRAMMER *pgm, const char *p, FILE *fp
case PGMTYPE_AVRISP_MKII:
case PGMTYPE_JTAGICE_MKII:
fmsg_out(fp, "%sSCK period : %.2f us\n", p, stk500v2_sck_duration_value(pgm));
fmsg_out(fp, "%sSCK period : %.1f us\n", p, stk500v2_sck_duration_value(pgm));
break;
case PGMTYPE_JTAGICE3:
@@ -3896,7 +3883,7 @@ static void stk500v2_print_parms1(const PROGRAMMER *pgm, const char *p, FILE *fp
cmd[0] = CMD_GET_SCK;
if (stk500v2_jtag3_send(pgm, cmd, 1) >= 0 && stk500v2_jtag3_recv(pgm, cmd, 4) >= 2) {
unsigned int sck = cmd[1] | (cmd[2] << 8);
fmsg_out(fp, "%sSCK period : %.2f us\n", p, (1E6 / (1000.0 * sck)));
fmsg_out(fp, "%sSCK period : %.1f us\n", p, (1E6 / (1000.0 * sck)));
}
PROGRAMMER *pgmcp = pgm_dup(pgm);
pgmcp->cookie = PDATA(pgm)->chained_pdata;
@@ -3911,10 +3898,10 @@ static void stk500v2_print_parms1(const PROGRAMMER *pgm, const char *p, FILE *fp
case PGMTYPE_STK600:
if (pgm->extra_features & HAS_VAREF_ADJ) {
fmsg_out(fp, "%sVaref 0 : %.2f V\n", p, stk600_varef_0_value(pgm));
fmsg_out(fp, "%sVaref 1 : %.2f V\n", p, stk600_varef_1_value(pgm));
fmsg_out(fp, "%sVaref 0 : %.2f V\n", p, stk600_varef_0_value(pgm));
fmsg_out(fp, "%sVaref 1 : %.2f V\n", p, stk600_varef_1_value(pgm));
}
fmsg_out(fp, "%sSCK period : %.2f us\n", p, stk500v2_sck_duration_value(pgm));
fmsg_out(fp, "%sSCK period : %.1f us\n", p, stk500v2_sck_duration_value(pgm));
if (pgm->extra_features & HAS_FOSC_ADJ) {
f = stk500v2_sck_duration_value(pgm);
f = f_to_kHz_MHz(f, &unit);
@@ -3923,7 +3910,7 @@ static void stk500v2_print_parms1(const PROGRAMMER *pgm, const char *p, FILE *fp
break;
default:
fmsg_out(fp, "%sSCK period : %.1f us\n", p, stk500v2_sck_duration_value(pgm));
fmsg_out(fp, "%sSCK period : %.1f us\n", p, stk500v2_sck_duration_value(pgm));
break;
}