[flashrom] [PATCH] Add IT8705 autodetection

Michael Karcher flashrom at mkarcher.dialup.fu-berlin.de
Wed Jul 7 16:31:53 CEST 2010


Am Mittwoch, den 07.07.2010, 14:16 +0200 schrieb Carl-Daniel Hailfinger:

> +	/* Non-default port requested? */
> +	portpos = extract_param(&programmer_param, "it87spiport", ",:");
> +	if (portpos) {
> +		char *endptr = NULL;
> +		if (strlen(portpos))
> +			forced_flashport = strtoul(portpos, &endptr, 0);
> +		/* Port 0, port >65535 and garbage strings are rejected. */
> +		if (!forced_flashport || (forced_flashport > 65535) ||
> +		    (endptr && (*endptr != '\0'))) {
I don't get the idea of the if in the beginning. The strtoul mangpage
states:
 "If there were no digits at all, strtol() stores the original value of
  nptr in *endptr (and returns 0)."
So you can just omit the "if (strlen(portpos))" test, because strtoul()
returns zero in this case (and doesn't change forced_flashport). If
strtoul is executed unconditionally, you can also throw away the check
for endptr not being NULL, as endptr is *always* set by strtoul.[1]

Alignment verification would be nice here, too. The datasheet should
state the required alignment.

> +	if (forced_flashport) {
> +		flashport = (uint16_t)forced_flashport;
> +		msg_pinfo("Forcing serial flash port 0x%04x\n",
> +			  flashport);
> +		sio_write(port, 0x64, (flashport >> 8));
> +		sio_write(port, 0x65, (flashport & 0xff));
> +	}
Can't you put this in an else branch of the if() shown above, or, in my
oppinion even better: Invert the condition to something like

if(parameter makes sense)
    set flashport & setup hardware
else
    print error message & exit(1)

The remaining stuff looks OK, but I didn't cross-check against the
IT8705 datasheet. Do you want a cross-check too?

Regards,
  Michael Karcher

[1]: It is superflous also right now, as !forced_flashport would have
short-circuited the *endptr test if strtoul was not called.





More information about the flashrom mailing list