world leader in high performance signal processing
Trace:

Differences

This shows you the differences between two versions of the page.

hw:cards:cf-ide-nand [2009/01/16 21:13]
vapier shrink down board pic
hw:cards:cf-ide-nand [2010/09/09 22:02] (current)
Line 36: Line 36:
  
 The card uses Bi-directional BUS switches (IDT QS316245) to perform Bus isolation and 5V to 3.3V logic level translation. In most of the applications a CPLD (Xilinx XC9572XL-7VQ64) as present in the reference design is not necessary. Please refer to the CPLD schematics. The CPLD is mainly used to perform address decoding, and to insert three additional bus setup cycles, to met the lower IDE ATA PIO Mode and CF I/O Mode specifications, to achieve SCLK running up to 80 MHz. The card uses Bi-directional BUS switches (IDT QS316245) to perform Bus isolation and 5V to 3.3V logic level translation. In most of the applications a CPLD (Xilinx XC9572XL-7VQ64) as present in the reference design is not necessary. Please refer to the CPLD schematics. The CPLD is mainly used to perform address decoding, and to insert three additional bus setup cycles, to met the lower IDE ATA PIO Mode and CF I/O Mode specifications, to achieve SCLK running up to 80 MHz.
 +
 +
 +===== Known Issues =====
 + 
 +Recent Linux libata assumes the IDE Interrupt INTRQ staying inactive low the time between the IRQ is requested and the device is configured. 
 +The problem here is that the INTRQ signal output line has high impedance when no devices are selected or interruption is disabled.
 +
 +The CF-IDE-NAND Card however has 10kOhm Pull-Up on INTRQ - which will then cause a 
 +"**irq XX: nobody cared**" error during libata driver initialization.
 +
 +Workaround is to add a stronger (1kOhm) Pull-Down to INTRQ.\\
 +See picture below:\\ 
 +
 + {{:hw:cards:ide_intrq_pull_down.jpg?640|}}
 +
 +On the CF Card socket there is also a pull-up – but there we had no choice since in PC-Card IO mode the Interrupt is asserted Low. So this was a tradeoff, and at the time doing the card – it worked without errors, in all modes.
 +
 +Assuming you are going to use the CF Card Interface in TRUE IDE MODE with interrupt, you need to add this workaround there too. As an alternative use either TRUE IDE MODE without interrupt, the PCMCIA driver with IDE Card Service Drivers or better the CF Common Memory Mode Interface without IDE Interrupt.
 +
  
 ===== Hardware Setup ===== ===== Hardware Setup =====
Line 82: Line 101:
 ====== Kernel Configuration ====== ====== Kernel Configuration ======
  
 +===== CF Common Memory Example using PATA Platform driver =====
 + 
 +If you like to use the CF Card in common memory mode (fastest), you need to use following [[linux-kernel:drivers:pata_platform | PATA Platfrom]] configuration.
  
 +<source trunk/arch/blackfin/mach-bf537/boards/stamp.c:/CF_IDE_NAND_CARD_USE_CF_IN_COMMON_MEMORY_MODE/2-2/^$/ c linux-kernel>
 +
 +<note tip>
 +Since we’re interfacing to an CF card, we don’t need the interrupt. If the interrupt is left unspecified the new PATA driver defaults to polling. Which is absolutely fine – because there are almost no delays.
 +</note>
 +
 +<note warning>You have the choice in the ''boards'' directory, to use ''CF_IDE_NAND_CARD_USE_CF_IN_COMMON_MEMORY_MODE'' or ''CF_IDE_NAND_CARD_USE_HDD_INTERFACE''. The default may not be the one you think it is:
 +<source trunk/arch/blackfin/mach-bf537/boards/stamp.c:/CF_IDE_NAND_CARD_USE_HDD_INTERFACE/1-/^$/ c linux-kernel>
 +</note>
 +
 +The CF-IDE-NAND card connects CF A0 to Blackfin A13. This sounds odd but was done to enable the PCMCIA IO mode, which assumes an Address aligned interface.
 +The pata platform driver now supports an IO shift (pata_platform_info->ioport_shift). So for CF cards in COMMON MEMORY or TRUE IDE MODE a sifted interface would have been preferable (CF_A0 to BF_A1, CF_A1 to BF_A2, …).
 +But since the CF-IDE-NAND card also implements Card Enable (-CE) odd, even byte steering the interface is still functional.
 +
 +<xterm>
 +scsi0 : pata_platform
 +ata1: PATA max PIO0 no IRQ, using PIO polling mmio cmd 0x20211800 ctl 0x2021180E
 +ata1.00: CFA: SanDisk SDCFX-1024, HDX 4.03, max PIO6
 +ata1.00: 2001888 sectors, multi 0: LBA
 +ata1.00: Drive reports diagnostics failure. This may indicate a drive
 +ata1.00: fault or invalid emulation. Contact drive vendor for information.
 +ata1.00: configured for PIO
 +ata1.00: configured for PIO
 +ata1: EH complete
 +scsi 0:0:0:0: Direct-Access     ATA      SanDisk SDCFX-10 HDX  PQ: 0 ANSI: 5
 +sd 0:0:0:0: [sda] 2001888 512-byte hardware sectors: (1.02 GB/977 MiB)
 +sd 0:0:0:0: [sda] Write Protect is off
 +sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
 +sd 0:0:0:0: [sda] 2001888 512-byte hardware sectors: (1.02 GB/977 MiB)
 +sd 0:0:0:0: [sda] Write Protect is off
 +sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
 + sda: sda1
 +sd 0:0:0:0: [sda] Attached SCSI removable disk
 +</xterm>
  
 ===== CompactFlash CF TRUE IDE ===== ===== CompactFlash CF TRUE IDE =====
Line 301: Line 357:
 ====== NAND Flash Introduction ====== ====== NAND Flash Introduction ======
  
-<note> +For information about the NAND Flash mtd Blackfin Driver and Interface, please follow this link:
-The NAND chip itself is not currently supported, please see [[http://blackfin.uclinux.org/pm/task.php?func=detailtask&project_task_id=520&group_id=17&group_project_id=74|this task]]) +
-</note> +
- +
- +
-For information about the NAND Flash mtd Blackfin Driver and Interface, +
-please follow this link:+
  
 [[linux-kernel:drivers:bfin_async_nand]] [[linux-kernel:drivers:bfin_async_nand]]