hi,all
I have tried to use lock_kernel and unlock_kernel rather than spinlocks.
Unfortunately, when copy some data to hard disk while changing PINMUX0 to enabe 
EMIF, this will cause write error. Both in DMA and PIO mode will fail. The 
error information is as follows:

 hdb: status timeout: status=0xff { Busy }
 
 ide: failed opcode was: unknown
 hdb: drive not ready for command
 ide0: reset: master: ECC circuitry error
 hdb: task_out_intr: status=0x31 { DeviceFault SeekComplete Error }
 hdb: task_out_intr: error=0xff { DriveStatusError BadCRC UncorrectableError 
Sect
 orIdNotFound TrackZeroNotFound AddrMarkNotFound }, LBAsect=268435455, 
sector=502
 7507
 ide: failed opcode was: unknown
 ide0: reset: master: ECC circuitry error
 end_request: I/O error, dev hdb, sector 5027507
 Buffer I/O error on device hdb1, logical block 5027444
 lost page write due to I/O error on hdb1
 end_request: I/O error, dev hdb, sector 5027508
 Buffer I/O error on device hdb1, logical block 5027445
 lost page write due to I/O error on hdb1
 end_request: I/O error, dev hdb, sector 5027509
 Buffer I/O error on device hdb1, logical block 5027446
 lost page write due to I/O error on hdb1
 end_request: I/O error, dev hdb, sector 5027510
 Buffer I/O error on device hdb1, logical block

The result is worse than use spinlock, :)

Could you try to practise the whole process?
1)mount /dev/hda1 /mnt
2)cp something.tgz /mnt
3)change to EMIF, mdelay(100), return to ATA, for some loop
hard disk works in DMA or PIO.

thanks.


chendh

  ----- Original Message ----- 
  From: Steve Spano 
  To: chendh 
  Sent: Thursday, November 16, 2006 11:36 AM
  Subject: Re: Using both ATA and EMIF


  I think i used lock_kernel and unlock_kernel rather than spinlocks

  your format is the same as mine

  lock
  enable
  do something
  disable
  unlock

  should work for you

  try lock_kernel and unlock_kernel
   


    -----Original Message-----
    From: "chendh" <[EMAIL PROTECTED]>
    To: "Steve Spano" <[EMAIL PROTECTED]>
    Date: Thu, 16 Nov 2006 10:36:14 +0800
    Subject: Re: Using both ATA and EMIF


    hi,
    I use the variable "spinlock_t ide_lock" the lock kernel, then change 
PINMUX0, do my actions, and return PINMUX0 and unlock the kernel. The changes 
just like:

    change to EMIF:

        spin_lock_irq(&ide_lock);
        enable_emif();

        do_something();

        disable_emif();
        spin_unlock(&ide_lock);        //success 
        spin_unlock_irq(&ide_lock);    //failed, why?? 

    in ide drivers, I change nothing.

    In PIO mode, the above method is OK, but DMA mode is FAILED.
    DMA is out of control of CPU, how to lock kernel? Can you help me? thanks.


    chendh
    iFLYTEK
      ----- Original Message ----- 
      From: Steve Spano 
      To: 'chendh' ; [email protected] 
      Sent: Wednesday, November 15, 2006 10:50 PM
      Subject: RE: Using both ATA and EMIF


      Hi 



      We are using the same scheme in a driver (VPFE) to issue read/writes to 
and FPGA. 



      Just make sure you lock the kernel, set PINMUX0, do your read/write, then 
return PINMUX0 and unlock the kernel



      DMA mode appears to work fine as well



      Steve Spano 

      FLE 



      -----Original Message-----
      From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of chendh
      Sent: Wednesday, November 15, 2006 3:32 AM
      To: [email protected]
      Subject: Using both ATA and EMIF 



      hi,everyone

      I have tried to use both ata and emif, they can be used at the same 
time.I try to send some control commands via EMIF, while copy some data to ATA 
hard disk.

      you can just to use they as follows: 

      1)change PINMUX0 to enable ATA after kernel boot time

      2)when you want to use emif bus to control some device, you can change 
PINMUX0 to disable ATA and enable EMIF,then do something.

      3)after finishing to use emif, change PINMUX0 to enable ATA, now ata is 
accessible



      notice:

      1)the occasion to change PINMUX0 to enable EMIF is very important, you 
must ensure ATA has finished one operation, otherwise, may cause errors.

      I know how to ensure it when access ATA hard disk via PIO mode, but don't 
known how to do it when access ATA hard disk via DMA or UDMA mode, Can anybody 
help me?


      ------------------------------------------
      jit chen

      ANHUI USTC iFLYTEK CO.,LTD
      Tel: 021-52955071
      web: www.iflytek.com
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to