Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 Dec 2001 16:55:19 -0800
From:      "Anuranjan" <anu@nttmcl.com>
To:        <questions@freebsd.org>
Subject:   Memory mapped device
Message-ID:  <015401c189ba$2a52db00$f64545d8@ntt27f48otgmw8>

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

Hi ,
I'm trying to write some driver code for a memory mapped device (PCI bus).

	struct xxx_softc *sc = device_get_softc(dev);
	struct resource *res;

 /*
  * Map control/status registers.
  */
        command = pci_read_config(dev, PCIR_COMMAND, 4);
        command |= (PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN);
        pci_write_config(dev, PCIR_COMMAND, command, 4);
        command = pci_read_config(dev, PCIR_COMMAND, 4);

        if (!(command & PCIM_CMD_MEMEN)) {
                printf("xxx%d: failed to enable memory mapping!\n", unit);
                error = ENXIO;
                goto fail;
        }
	else
		printf("xxx%d: memory mapping enabled\n", unit);

	mem_rid = 0x10;
	res = bus_alloc_resource(dev, SYS_RES_MEMORY, &mem_rid,
				 0ul, ~0ul, size, RF_ACTIVE);

I've been able to probe the device correctly, get the IRQ resource allocated
correctly etc, I don't get any errors in this mapping enable and alloc code
either. But when I try accessing the device I don't get the correct results
(can't get to the eeprom, and can't access correct values from the register
offsets.

	u_int32_t s = bus_space_read_4(sc->btag, sc->bhandle, REGISTER_OFFSET);

The device is basically a Cardbus card attached to the freebsd 4.3 PCI bus
through a Cardbus/PCI extender card.

I don't know exactly why it couldn't be working here. Is it the problem with
the mapping, or is it with the device, or with the freeBSD mechanism? I'm a
newbie so please excuse me if I'm posting this at the wrong forum and let me
know the right place to go to.

Thanks in advance
A


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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?015401c189ba$2a52db00$f64545d8>