Skip to contentSkip to conversation

bank switching

DISCUSSION M8 (Servaes Joordens) 2 participants 3 messages Oct 29, 2007 – Nov 2, 2007 Memory technology devices (MTD)

lore
Share & tools
lore
#0 lore raw

hello linux mtd-guys,

I use the blackfin embedded uClinux environment. I want to change a flash chip-driver to support all four memory banks which are available. Right now, I have a driver which supports 1 memory bank of 2MB. I want to be able to use the other three memory banks also 2-4Mb, 4-6MB and 6-8MB.

Memory bank selection is done by using general io pf4 and pf5. For instance: when pf4 is enabled and pf5 is disabled I am writing in the region 2-4MB.

What would be the correct way to change the chip driver? Do you have a template or tutorial on bank switching?

The driver I want to change is: cfi_cmdset_0001.c

I hope someone can help me.

regards,
Servaes Joordens

Signature · 13 lines
Servaes Joordens

-------------------------------------------
M8
Tappersweg 29
2031ET	Haarlem
The Netherlands
Tel:	+31 23 5311122
Mob:	+31 6 51183379
Fax:	+31 23 5322388

VAT-ID: nl-813029090B01
kvk:	34131430 Haarlem
#1 lore raw
Quoted 5 lines · On Mon, 2007-10-29 at 17:14 +0100, M8 (Servaes Joordens) wrote:

I use the blackfin embedded uClinux environment. I want to change a flash chip-driver to support all four memory banks which are available. Right now, I have a driver which supports 1 memory bank of 2MB. I want to be able to use the other three memory banks also 2-4Mb, 4-6MB and 6-8MB.

Quoted 8 lines

Memory bank selection is done by using general io pf4 and pf5. For
instance: when pf4 is enabled and pf5 is disabled I am writing in the region 2-4MB.

What would be the correct way to change the chip driver? Do you have a template or tutorial on bank switching?

The driver I want to change is: cfi_cmdset_0001.c

No, that's the "chip driver". What you need to provide is a "map driver" which enables physical access (read/write cycles) to the flash device in question.

See the MTD_COMPLEX_MAPPINGS config option, which turns simple things like 'read word' and 'write word' into out-of-line function calls in your map driver. And see the map drivers which do this already, like maps/sbc_gxx.c

Signature · 1 line
dwmw2
#2 lore raw
Quoted 11 lines · David Woodhouse
Quoted 8 lines · On Mon, 2007-10-29 at 17:14 +0100, M8 (Servaes Joordens) wrote:

I use the blackfin embedded uClinux environment. I want to change a flash chip-driver to support all four memory banks which are available. Right now, I have a driver which supports 1 memory bank of 2MB. I want to be able to use the other three memory banks also 2-4Mb, 4-6MB and 6-8MB.

Memory bank selection is done by using general io pf4 and pf5. For instance: when pf4 is enabled and pf5 is disabled I am writing in the region 2-4MB.

What would be the correct way to change the chip driver? Do you have a template or tutorial on bank switching?

The driver I want to change is: cfi_cmdset_0001.c

Quoted 10 lines

No, that's the "chip driver". What you need to provide is a "map driver" which enables physical access (read/write cycles) to the flash device in question.

See the MTD_COMPLEX_MAPPINGS config option, which turns simple things like 'read word' and 'write word' into out-of-line function calls in your map driver. And see the map drivers which do this already, like maps/sbc_gxx.c

Now I enabled the MTD_COMPLEX_MAPPINGS. I changed the code in map_funcs.c for the bank switching, but I get a problem with my ext2 partition in RAM. The RAM memory has another memory mapping (of course). In what file should I make the changes?
I use the following files:
- mtd/cmdlinepart.c
- mtd/chips/cfi_probe.c
- mtd/chips/cfi_cmdset_0001.c
- mtd/maps/uclinux.c (for the root fs in RAM)
- mtd/maps/physmap.c (for the flash_memory)
- mtd/maps/map_funcs.c

My idea is:
- I change the call to simple_map_init(xxx) in physmap.c to my_simple_map_init(xxx)
- I add the bank-switching routines in physmap.c and link them via my_simple_map_init(xxx)

Is this the correct way to do it?

Signature · 13 lines
Servaes Joordens

-------------------------------------------
M8
Tappersweg 29
2031ET	Haarlem
The Netherlands
Tel:	+31 23 5311122
Mob:	+31 6 51183379
Fax:	+31 23 5322388

VAT-ID: nl-813029090B01
kvk:	34131430 Haarlem