Stanislaw Gruszka napsal(a):
On Thu, Nov 25, 2010 at 09:53:19PM +0100, Radovan Vapeník wrote:
We do not detect any IDE device, registers do not contain status/data
that IDE layer expect. As far only two possible reasons of that
problem come in mind:
- board specific code does not reset CF device (with proper
reset duration?). This is expected, there is rst_pin in
struct at91_cf_data but driver does not use it
- CF 9 pin (ATA SEL) is not grounded or set to 0 if connected
to controller (also in board specific initialization code)
To debug problem further, you can add your own code at the end of
at91_ide_probe(), which read/write IDE register to see if device
react properly and give some sensible status values.
Stanislaw
Seems problem is really on reset pin, i have analysed using
oscilloscope and on reset pin is still in logical "1", without
change during module loading. I will try to find out why is this
happening.
I was unclear. Driver does not change reset pin. Reset need to be
done in board initialization code. You have to add something like that
#define RST_PIN AT91_PIN_PC5
at91_set_gpio_output(RST_PIN, 1);
at91_set_gpio_value(RST_PIN,0);
mdelay(2);
at91_set_gpio_value(RST_PIN,1);
in your arch/arm/mach-at91/board-NAME.c (I'm not sure if 2ms is
correct IDE reset duration).
Stanislaw
I found out the reason of transients - it is caused by enabled pull-up
resistor on lower 16 bits on EBI0 - bit EBI0_DBPUC shoul be set to "1",
normally is set to "0". But the CF still no working, problem is is
elsewhere.
Radovan
I had mistake in schematic - after repair I get some new debug messages
- is possible to tell, what can be wrong? Thanks for advice
at91_ide_probe chipselect 4 irq 132 res 50000000
apply_timings t0=600 t1=70 t2=290 t6z=30
apply_timings mck_hz=99328000
apply_timings cycle=60 setup=7 pulse=29 data_float=3
Probing IDE interface ide0...
probing for hda: present=0, media=32, probetype=ATA
probing for hda: present=0, media=32, probetype=ATAPI
hda: probing with STATUS(0xa0) instead of ALTSTATUS(0x00)
hda: probing with STATUS(0xa0) instead of ALTSTATUS(0x1e)
probing for hdb: present=0, media=32, probetype=ATA
probing for hdb: present=0, media=32, probetype=ATAPI
hdb: probing with STATUS(0xa0) instead of ALTSTATUS(0x1e)
hdb: probing with STATUS(0xa0) instead of ALTSTATUS(0x1e)
ide0 at 0xc4866000-0xc4866007,0xc486e006 on irq 132
Radovan
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html