Michael,
Thanks a lot!
Barry

-----Original Message-----
From: Hennerich, Michael 
Sent: Tuesday, July 21, 2009 6:54 PM
To: Song, Barry; 'Mike Frysinger'
Cc: '[email protected]'; '[email protected]'
Subject: RE: [Linux-kernel-commits] [6960] trunk/drivers/ata/libata-core.c: 1.

>Is it possible for you to point out the direction for all related 
>CF/IDE/Bluetooth pins in CPLD and "and/or/not" logic between them. We can't 
>figure out them only by checking the schematics.

Barry,

When I said CPLD schematics I didn't meant the CF-IDE-NAND card schematics!
I would say the CPLD schematics are easier to read as those equations below.

-Michael 

BF_ARDY <= (CF_WAIT_IORDY AND IDE_IORDY);


BF_GPIO0 <= nNAND_RB;


BF_GPIO1 <= CF_INT_WAIT;


BF_GPIO2 <= IDE_INTRQ;


BF_GPIO3 <= (NOT nCF_CD2 AND NOT nCF_CD1);


CF_A0 <= BF_A13;


CF_RESET <= NOT (XLXI_14/XLXN_794
         XOR
CF_RESET <= NOT (nBF_RESET);


NAND_AL <= BF_A1;


NAND_CL <= BF_A2;

FDCPE_XLXI_14/XLXN_794: FDCPE port map 
(XLXI_14/XLXN_794,BF_A1,XLXI_14/XLXN_794_C,NOT nBF_RESET,'0');
XLXI_14/XLXN_794_C <= (NOT BF_A15 AND NOT nBF_AMS3 AND BF_A16 AND BF_A12 AND 
BF_A11 AND 
        NOT nBF_AWE);

FDCPE_XLXI_302/XLXN_100: FDCPE port map 
(XLXI_302/XLXN_100,XLXI_302/XLXN_100_D,G_CLK,'0','0');
XLXI_302/XLXN_100_D <= ((NOT nBF_AMS3 AND NOT nBF_AWE)
        OR (NOT nBF_AMS2 AND NOT nBF_AWE));

FDCPE_XLXI_302/XLXN_57: FDCPE port map 
(XLXI_302/XLXN_57,XLXI_302/XLXN_57_D,G_CLK,'0','0');
XLXI_302/XLXN_57_D <= ((NOT nBF_AMS3 AND NOT nBF_ARE)
        OR (NOT nBF_AMS2 AND NOT nBF_ARE));

FDCPE_XLXI_302/XLXN_58: FDCPE port map 
(XLXI_302/XLXN_58,XLXI_302/XLXN_58_D,G_CLK,'0','0');
XLXI_302/XLXN_58_D <= ((NOT XLXI_302/XLXN_57)
        OR (nBF_AMS3 AND nBF_AMS2)
        OR (nBF_AWE AND nBF_ARE));

FDCPE_XLXI_302/XLXN_99: FDCPE port map 
(XLXI_302/XLXN_99,XLXI_302/XLXN_99_D,G_CLK,'0','0');
XLXI_302/XLXN_99_D <= ((NOT XLXI_302/XLXN_100)
        OR (nBF_AMS3 AND nBF_AMS2)
        OR (nBF_AWE AND nBF_ARE));


nCF_CE1_CS0 <= NOT (((NOT BF_A14 AND NOT nBF_AMS3 AND BF_A16 AND NOT BF_A12 AND 
NOT BF_ABE0)
        OR (NOT nBF_AMS3 AND BF_A16 AND BF_A12 AND NOT BF_A11 AND NOT BF_ABE0)
        OR (BF_A16 AND BF_A12 AND BF_A11 AND NOT nBF_AMS2 AND NOT BF_ABE0)
        OR (BF_A14 AND BF_A5 AND NOT BF_A4 AND BF_A15 AND NOT nBF_AMS3 AND 
        BF_A16)));


nCF_CE2_CS1 <= NOT (((NOT BF_A14 AND NOT nBF_AMS3 AND BF_A16 AND NOT BF_A12 AND 
NOT BF_ABE1)
        OR (NOT nBF_AMS3 AND BF_A16 AND BF_A12 AND NOT BF_A11 AND NOT BF_ABE1)
        OR (BF_A16 AND BF_A12 AND BF_A11 AND NOT nBF_AMS2 AND NOT BF_ABE1)
        OR (BF_A14 AND NOT BF_A5 AND BF_A4 AND BF_A15 AND NOT nBF_AMS3 AND 
        BF_A16)));


nCF_IORD <= NOT (((NOT nBF_AMS3 AND BF_A16 AND NOT BF_A12 AND NOT nIDE_DIOR)
        OR (BF_A16 AND NOT BF_A12 AND NOT nBF_AMS2 AND NOT nIDE_DIOR)));


nCF_IOWR <= NOT (((NOT nBF_AMS3 AND BF_A16 AND NOT BF_A12 AND NOT nIDE_DIOW)
        OR (BF_A16 AND NOT BF_A12 AND NOT nBF_AMS2 AND NOT nIDE_DIOW)));


nCF_OE <= NOT (((XLXI_14/XLXN_794)
        OR (BF_A16 AND BF_A12 AND NOT nBF_AMS2 AND NOT nBF_ARE)
        OR (NOT nBF_AMS3 AND BF_A16 AND BF_A12 AND nBF_AMS2 AND 
        NOT nIDE_DIOR)));


nCF_REG <= NOT ((NOT BF_A11 AND NOT XLXI_14/XLXN_794));


nCF_WE <= NOT (((BF_A16 AND BF_A12 AND NOT nBF_AMS2 AND NOT nBF_AWE)
        OR (NOT nBF_AMS3 AND BF_A16 AND BF_A12 AND nBF_AMS2 AND 
        NOT nIDE_DIOW)));


nIDE_CS0 <= NOT ((BF_A14 AND BF_A5 AND NOT nBF_AMS3 AND BF_A16));


nIDE_CS1 <= NOT ((BF_A14 AND BF_A4 AND NOT nBF_AMS3 AND BF_A16));

FDCPE_nIDE_DIOR: FDCPE port map (nIDE_DIOR,nIDE_DIOR_D,G_CLK,'0','0');
nIDE_DIOR_D <= ((NOT XLXI_302/XLXN_58)
        OR (nBF_AMS3 AND nBF_AMS2)
        OR (nBF_AWE AND nBF_ARE));

FDCPE_nIDE_DIOW: FDCPE port map (nIDE_DIOW,nIDE_DIOW_D,G_CLK,'0','0');
nIDE_DIOW_D <= ((NOT XLXI_302/XLXN_99)
        OR (nBF_AMS3 AND nBF_AMS2)
        OR (nBF_AWE AND nBF_ARE));


nIDE_RESET <= nBF_RESET;


nNAND_Enable <= NOT ((BF_A13 AND BF_A16 AND NOT BF_A12 AND NOT BF_A11 AND NOT 
nBF_AMS2));


nNAND_RD <= nBF_ARE;


nNAND_WP <= nBF_RESET;


nNAND_WR <= nBF_AWE;


nQS_BE <= (nBF_AMS3 AND nBF_AMS2);

>-----Original Message-----
>From: Song, Barry
>Sent: Tuesday, July 21, 2009 11:46 AM
>To: Hennerich, Michael; 'Mike Frysinger'
>Cc: '[email protected]'; '[email protected]'
>Subject: RE: [Linux-kernel-commits] [6960] trunk/drivers/ata/libata-core.c: 1.
>
>Ok. I see. Thanks.
>Is it possible for you to point out the direction for all related 
>CF/IDE/Bluetooth pins in CPLD and
>"and/or/not" logic between them. We can't figure out them only by checking the 
>schematics.
>Thanks
>Barry
>
>-----Original Message-----
>From: Hennerich, Michael
>Sent: Tuesday, July 21, 2009 5:43 PM
>To: Song, Barry; 'Mike Frysinger'
>Cc: '[email protected]'; '[email protected]'
>Subject: RE: [Linux-kernel-commits] [6960] trunk/drivers/ata/libata-core.c: 1.
>
>>I am pulling-down the interrupt output from CPLD to blackfin. It seems
>>you are connecting interrupt input from IDE to CPLD?
>
>The CPLD drives either LOW or HIGH - a Pull Down behind the CPLD is pointless!
>You need to add the Pull Down to the INTRQ input!
>
>-Michael
>
>>-----Original Message-----
>>From: Song, Barry
>>Sent: Tuesday, July 21, 2009 11:32 AM
>>To: Hennerich, Michael; 'Mike Frysinger'
>>Cc: '[email protected]'; '[email protected]'
>>Subject: RE: [Linux-kernel-commits] [6960] trunk/drivers/ata/libata-core.c: 1.
>>
>>Hi  Michael,
>>I am pulling-down the interrupt output from CPLD to blackfin. It seems
>>you are connecting interrupt input from IDE to CPLD? Is it? Then I will make 
>>a try.
>>Thanks
>>Barry
>>
>>-----Original Message-----
>>From: Hennerich, Michael
>>Sent: Tuesday, July 21, 2009 4:53 PM
>>To: Song, Barry; 'Mike Frysinger'
>>Cc: '[email protected]'; '[email protected]'
>>Subject: RE: [Linux-kernel-commits] [6960] trunk/drivers/ata/libata-core.c: 1.
>>
>>Hi Barry,
>>
>>I don't understand.
>>Why do you think CPLD Interrupt Output Tristate (Blackfin GPIO INT) would 
>>help here?
>>The GPIO interrupt would be floating, when not driven active!
>>And I'm not aware of dedicated Pull/Ups/Downs on the STAMP board itself.
>>
>>Did you add the resistor to the IDE_INTRQ on the IDE connector?
>>For me this workaround works perfectly.
>>See attached picture.
>>
>>For the CF-Card slot this won't work - since when used in TRUE IDE MODE
>>we need a Pull Down - and otherwise a Pull Up.
>>
>>Answering your question -
>>The CPLD logic schematic sheets are also available on GFORGE.
>>
>>The Logic Relationship between
>>IDE_INTRQ and BFIN_GPIO2 (PF5) is simple
>>
>>IDE_INTRQ = BFIN_GPIO2
>>
>>
>>-Michael
>>
>>
>>
>>________________________________________
>>From: Song, Barry
>>Sent: Tuesday, July 21, 2009 9:22 AM
>>To: Hennerich, Michael; Mike Frysinger
>>Cc: [email protected];
>>[email protected]
>>Subject: RE: [Linux-kernel-commits] [6960] trunk/drivers/ata/libata-core.c: 1.
>>
>>Hi Michael,
>>What's the logic relationship between the CF/ATA signals and signals to 
>>blackfin you set in the
>CPLD?
>>Even after we connect a 1000Ohm res to ground, the interrupt output to
>>blackfin is still high. It seems the CPLD is outputing high but not
>>keep tristate in default status. So we have to keep the probe-polling patch 
>>until the CPLD logic is
>fixed.
>>Thanks
>>Barry
>>
>>-----Original Message-----
>>From: Hennerich, Michael [mailto:[email protected]]
>>Sent: Friday, July 10, 2009 11:18 PM
>>To: Mike Frysinger
>>Cc: [email protected];
>>[email protected]
>>Subject: RE: [Linux-kernel-commits] [6960] trunk/drivers/ata/libata-core.c: 1.
>>
>>
>>>it sounds like we just have to pop off a resistor ?
>>
>>Well not that easy - I used a 0603 type 10k Resistor Pack including 4 
>>resistors.
>>
>>One trick could be to leave the PULL-Ups as is and add a stronger
>>Pull-Down to the INTRQ - lets say something between 500 Ohm and 1kOhm .
>>
>>-Michael
>>
>>>-----Original Message-----
>>>From: Mike Frysinger [mailto:[email protected]]
>>>Sent: Friday, July 10, 2009 5:07 PM
>>>To: Hennerich, Michael
>>>Cc: [email protected];
>>[email protected]
>>>Subject: Re: [Linux-kernel-commits] [6960]
>>trunk/drivers/ata/libata-core.c: 1.
>>>
>>>On Fri, Jul 10, 2009 at 11:00, Hennerich, Michael wrote:
>>>> I think this issue is caused by a Pull-Up resistor on the INTRQ line
>>on
>>>> the CF-IDE-NAND Card.
>>>>
>>>> Read this:
>>>> http://www.mail-archive.com/[email protected]/msg00418.html
>>>>
>>>> On the CF Card socket we also have that 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.
>>>>
>>>> The problem here is that the INTRQ signal output line has a high
>>>> impedance when no devices are selected or interruption is disabled.
>>>>
>>>> Like you noticed, recent Linux libata assumes the INTRQ staying
>>inactive
>>>> the time between the IRQ is requested and the device is configured.
>>>>
>>>> If this fix isn't acceptable to mainline we should revert - and fix
>>the
>>>> HW.
>>>
>>>can the simple instructions of how to patch the card be added to the
>>>wiki ?  it sounds like we just have to pop off a resistor ?
>>>-mike

_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to