Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Feb 2000 12:16:09 -0500 (EST)
From:      tbuswell@acadia.net
To:        current@freebsd.org
Subject:   pccardd and mapping memory descriptors
Message-ID:  <14509.31140.445498.751403@localhost.bogus.net>

next in thread | raw e-mail | index | archive | help


Hi,

I'm writing a driver that talks to a card that has some SRAM.

In the driver I'm trying to get a handle to the memory by doing the
following:

    rid = 0;
    sc->mem = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid,
				 0ul, ~0ul, 0, RF_ACTIVE);


which fails.  Treking through the kernel and userland, I've decided
that what's missing is that pccardd never configures the memory region 
using ioctl(PIOCSMEM).  It never does that because the
code block in assign_io() that determines that the card does have a
memory descriptor, doesn't set the MEM_ASSIGNED bit in sp->flags.

I believe setting MEM_ASSIGNED is the proper fix and attached is the
one line patch.

-Ted
PS: anybody know why cardaddr is set to 16k?


Index: cardd.c
===================================================================
RCS file: /home/ncvs/src/usr.sbin/pccard/pccardd/cardd.c,v
retrieving revision 1.46
diff -c -r1.46 cardd.c
*** cardd.c	2000/01/26 17:53:59	1.46
--- cardd.c	2000/02/18 01:30:25
***************
*** 487,492 ****
--- 487,493 ----
  			sp->config->driver->mem = sp->mem.addr;
  		}
  		sp->mem.cardaddr = 0x4000;
+ 		sp->flags |= MEM_ASSIGNED;
  		if (debug_level > 0) {
  			logmsg("Using mem addr 0x%x, size %d, card addr 0x%x\n",
  			    sp->mem.addr, sp->mem.size, sp->mem.cardaddr);


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?14509.31140.445498.751403>