Ready Changed Event - interrupt not enabled?

  • Richard Miller-Smith


    I'm currently trying to get a microdrive (and indeed any compact flash/ide card) to work in memory mapped mode. The reasons for this are a bit long winded - but according to some of the datasheets it *should* provide a faster way to read/write data from a CF card (especially if you can use a memory to memory DMA block).

    I've progressed quite well - the card is brought up and recognised by the IDE library and I can get data off it etc.

    The problem is that interrupts are not working as I would hope. In memory mapped mode the IRQ line turns into the 'Ready' status line (just to make life harder!). However, I was hoping that if I registered CS_EVENT_READY_CHANGE as a handled event I would get interrupts when the ready signal changed, these I can then pass onto the IDE system.

    However, in my current dev. system (x86 with TI1410) I never get any of these events. Indeed, looking into it a bit further the Ready Interrupt enable bit (bit 2 ExCA CSC Int register) is not set.

    What is more, I cannot even see anywhere in the i82365 code where this bit might get set. (And, setting it manually seems to cause a kernel panic!).

    Should it be possible to attach to this event? Is there anything subtle I should know?

    Many thanks,


    pcmcia-cs version: 3.2.7

    Here's the output of dump_exca:
    Socket 0:
      Identification and revision = 0x84
      Interface status = 0x6f
        [bvd1/stschg] [bvd2/spkr] [detect] [ready] [poweron]
      Power control = 0x98
        [output] [resetdrv] [Vcc=3.3v] [Vpp off]
      Interrupt and general control = 0x50
        [intr ena] [irq=0]
      Card status change interrupt control = 0x08
        [detect] [irq=0]
      Card detect and general control = 0x80
      memory 0: 0x0000-0x0fff @ 0xa0000000 [on] [8bit] [ws1] [reg]
      memory 1: 0x0000-0x0fff @ 0xa0001000 [on] [16bit]
      memory 2: 0x0000-0x0fff @ 0x00000000 [off] [8bit]
      memory 3: 0x0000-0x0fff @ 0x00000000 [off] [8bit]
      memory 4: 0x0000-0x0fff @ 0x00000000 [off] [8bit]
      io 0: 0x0000-0x0001 [off] [8bit]
      io 1: 0x0000-0x0001 [off] [8bit]

    Socket 0 function 0:
      Config register base = 0x0200, mask = 0x000f
      Configuration option register = 00
        [index = 00]
      Card configuration and status register = 0x80
      Pin replacement register = 0x2e
        [ready] [bvd2] [bvd1] [ready_event]
      Socket and copy register = 00
        [socket = 0] [copy = 0]

    • David Hinds

      David Hinds - 2004-04-16

      Hmmm, you are correct that just saying that you want to receive these events does not enable them in the socket controller.

      The iflash2+_mtd driver does use READY events.  It uses MTDHelperEntry(MTDRDYMask, ...) to enable them.  I believe that you can also use this call even though your driver is not an "MTD".

      -- Dave


Log in to post a comment.

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

JavaScript is required for this form.

No, thanks