[flashrom] [PATCH] add support for AT49F040

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Tue Oct 5 15:14:12 CEST 2010


Hi David,

you somehow manage to find really evil chips.

On 31.08.2010 23:19, David Borg wrote:
> I was adding support for the AT49F040 parallel flash chip, but have
> some questions. This chip has a  boot block which once locked cannot
> be erased / rewritten. 

Yes, permanent lockdown sucks.


> Should I add erase functions for both cases?
>   

I'd say yes, but currently flashrom can't specify erase functions which
work only for a part of the chip.
Maybe add a comment to flashchips.c that there is an
erase-without-bootblock which only applies to chips with locked bootblock.


> Currently the erase function handles unlocked chips only. 

There is the possibility of adding a printlock function which would be
extremely hopeful here. While it won't solve the lockdown problem, it
can at least make users aware of the lockdown.


> In addition,
> the datasheet specifies no command timings, is the timing something I
> can infer from the read / program cycle characteristics tables?
>   

No. I'd say this is a chip with zero delay (that is, zero additional delay).


> Signed-off-by: David Borg <borg.db at gmail.com>
>
> datasheet: http://pdf1.alldatasheet.com/datasheet-pdf/view/56184/ATMEL/AT49F040.html
>
> Index: flashchips.c
> ===================================================================
> --- flashchips.c	(revision 1145)
> +++ flashchips.c	(working copy)
> @@ -1985,6 +1985,29 @@
>  	},
>
>  	{
> +		.vendor		= "Atmel",
> +		.name		= "AT49F040",
> +		.bustype	= CHIP_BUSTYPE_PARALLEL,
> +		.manufacture_id	= ATMEL_ID,
> +		.model_id	= AT_49F040,
> +		.total_size	= 512,
> +		.page_size	= 512,
> +		.feature_bits	= FEATURE_EITHER_RESET | FEATURE_ADDR_FULL,
> +		.tested		= TEST_UNTESTED,
> +		.probe		= probe_jedec,
> +		.probe_timing	= TIMING_ZERO,  /* Datasheet has no timing info specified */
> +		.block_erasers	=
> +		{
> +			{
> +				.eraseblocks = { {512 * 1024, 1} },
> +				.block_erase = erase_chip_block_jedec,
> +			}
>   

Comment about the erase-without-bootblock goes here.


> +		},
> +		.write		= write_jedec_1,
> +		.read		= read_memmapped,
> +	},
> +
> +	{
>  		.vendor		= "EMST",
>  		.name		= "F49B002UA",
>  		.bustype	= CHIP_BUSTYPE_PARALLEL,
> Index: flashchips.h
> ===================================================================
> --- flashchips.h	(revision 1145)
> +++ flashchips.h	(working copy)
> @@ -174,6 +174,7 @@
>  #define AT_49F020		0x0B
>  #define AT_49F002N		0x07	/* for AT49F002(N)  */
>  #define AT_49F002NT		0x08	/* for AT49F002(N)T */
> +#define AT_49F040		0x13
>   

I think this part no longer applies to the tree.

>  #define CATALYST_ID		0x31	/* Catalyst */
>   

Looks good, we should get this merged with the bootblock lock printing
and a comment in flashchips.c. Will ack after that change.

Regards,
Carl-Daniel

-- 
http://www.hailfinger.org/





More information about the flashrom mailing list