[flashrom] [PATCH] Refine granularity handling in preparation of AT45DB series support.
Carl-Daniel Hailfinger
c-d.hailfinger.devel.2006 at gmx.net
Mon Apr 1 20:28:16 CEST 2013
Am 14.03.2013 12:13 schrieb Stefan Tauner:
> This adds a number of new granularities in a rather inelegant way.
> Until we figure out how to better handle various granularities this has
> to be accepted.
I think it's pretty good and I definitely don't consider it to be inelegant.
> It also refactors the handling of n-byte granularities by extracting the
> checking code into a helper function which reduces the pain of the above
> significantly.
>
> Signed-off-by: Stefan Tauner <stefan.tauner at student.tuwien.ac.at>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
with one small change (see below).
> ---
> This is one possibility to solve the granularity issue and i think the
> most likely to get the patch series in fastest...
>
> --- a/flashrom.c
> +++ b/flashrom.c
> @@ -676,6 +676,23 @@ out_free:
> return ret;
> }
>
> +/* Helper function for need_erase() that focuses on granularities of n bytes. */
> +static int need_erase_n_bytes(uint8_t *have, uint8_t *want, unsigned int len, unsigned int n)
Can you please rename n to gran or something similar (don't forget the
comment as well)? That would improve readability. No need to repost.
> +{
> + unsigned int i, j, limit;
> + for (j = 0; j < len / n; j++) {
> + limit = min (n, len - j * n);
> + /* Are 'have' and 'want' identical? */
> + if (!memcmp(have + j * n, want + j * n, limit))
> + continue;
> + /* have needs to be in erased state. */
> + for (i = 0; i < limit; i++)
> + if (have[j * n + i] != 0xff)
> + return 1;
> + }
> + return 0;
> +}
> +
> /*
> * Check if the buffer @have can be programmed to the content of @want without
> * erasing. This is only possible if all chunks of size @gran are either kept
>
Regards,
Carl-Daniel
--
http://www.hailfinger.org/
More information about the flashrom
mailing list