From owner-freebsd-current Thu Aug 17 1:13:31 2000 Delivered-To: freebsd-current@freebsd.org Received: from rina.r.dl.itc.u-tokyo.ac.jp (rina.r.dl.itc.u-tokyo.ac.jp [133.11.199.247]) by hub.freebsd.org (Postfix) with ESMTP id 83FCA37B7FD for ; Thu, 17 Aug 2000 01:07:38 -0700 (PDT) (envelope-from tanimura@r.dl.itc.u-tokyo.ac.jp) Received: (from uucp@localhost) by rina.r.dl.itc.u-tokyo.ac.jp (8.9.3+3.2W/3.7W-rina.r-0.1-11.01.2000) with UUCP id RAA90919; Thu, 17 Aug 2000 17:07:33 +0900 (JST) Received: (from uucp@localhost) by silver.carrots.uucp.r.dl.itc.u-tokyo.ac.jp (8.9.3+3.2W/3.7W) with UUCP id RAA12221; Thu, 17 Aug 2000 17:02:41 +0900 (JST) Received: from bunko.carrots.uucp.r.dl.itc.u-tokyo.ac.jp.nkth.carrots.uucp.r.dl.itc.u-tokyo.ac.jp (localhost [127.0.0.1]) by bunko.carrots.uucp.r.dl.itc.u-tokyo.ac.jp (8.9.3+3.2W/3.7W) with ESMTP/IPv4 id QAA04569; Thu, 17 Aug 2000 16:55:58 +0900 (JST) Date: Thu, 17 Aug 2000 16:55:57 +0900 Message-ID: <86vgx09v8y.wl@bunko.carrots.uucp.r.dl.itc.u-tokyo.ac.jp.nkth.carrots.uucp.r.dl.itc.u-tokyo.ac.jp> From: Seigo Tanimura To: Peter Jeremy Cc: tanimura@r.dl.itc.u-tokyo.ac.jp, freebsd-current@freebsd.org Subject: Re: Newbusifying ed broke it In-Reply-To: In your message of "Thu, 17 Aug 2000 15:35:59 +1000" <00Aug17.153605est.115251@border.alcanet.com.au> References: <00Aug17.111332est.115207@border.alcanet.com.au> <86wvhga6sg.wl@bunko.carrots.uucp.r.dl.itc.u-tokyo.ac.jp.nkth.carrots.uucp.r.dl.itc.u-tokyo.ac.jp> <00Aug17.153605est.115251@border.alcanet.com.au> User-Agent: Wanderlust/1.1.0 (Overjoyed) SEMI/1.13.7 (Awazu) FLIM/1.13.2 (Kasanui) MULE XEmacs/21.1 (patch 10) (Capitol Reef) (i386--freebsd) Organization: Carrots MIME-Version: 1.0 (generated by SEMI 1.13.7 - "Awazu") Content-Type: multipart/mixed; boundary="Multipart_Thu_Aug_17_16:55:57_2000-1" Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG --Multipart_Thu_Aug_17_16:55:57_2000-1 Content-Type: text/plain; charset=US-ASCII On Thu, 17 Aug 2000 15:35:59 +1000, Peter Jeremy said: peter.jeremy> Still not working. It now reports: peter.jeremy> ed0: failed to clear shared memory at 0 - check configuration The probe routine cleared and tested IO port instead of memory. Does the following patch work? --Multipart_Thu_Aug_17_16:55:57_2000-1 Content-Type: text/plain; type=patch; charset=US-ASCII Content-Disposition: attachment; filename="if_ed-2.diff" Content-Transfer-Encoding: 7bit Index: if_ed.c =================================================================== RCS file: /home/naklab/tanimura/rina2/CVS/FreeBSD/sys/dev/ed/if_ed.c,v retrieving revision 1.1.1.4.6.8 diff -u -r1.1.1.4.6.8 if_ed.c --- if_ed.c 2000/08/16 07:38:31 1.1.1.4.6.8 +++ if_ed.c 2000/08/17 07:21:34 @@ -164,7 +164,7 @@ static void ed_writeb(struct ed_softc *sc, int regno, u_char data) { - bus_space_write_1(sc->bst, sc->bsh, regno, data); + bus_space_write_1(rman_get_bustag(sc->port_res), rman_get_bushandle(sc->port_res), regno, data); } /* @@ -173,7 +173,7 @@ static u_char ed_readb(struct ed_softc *sc, int regno) { - return bus_space_read_1(sc->bst, sc->bsh, regno); + return bus_space_read_1(rman_get_bustag(sc->port_res), rman_get_bushandle(sc->port_res), regno); } /* @@ -182,7 +182,7 @@ static void ed_writew(struct ed_softc *sc, int regno, u_int16_t data) { - bus_space_write_2(sc->bst, sc->bsh, regno, data); + bus_space_write_2(rman_get_bustag(sc->port_res), rman_get_bushandle(sc->port_res), regno, data); } /* @@ -191,7 +191,7 @@ static u_int16_t ed_readw(struct ed_softc *sc, int regno) { - return bus_space_read_2(sc->bst, sc->bsh, regno); + return bus_space_read_2(rman_get_bustag(sc->port_res), rman_get_bushandle(sc->port_res), regno); } /* @@ -200,7 +200,7 @@ static void ed_writesw(struct ed_softc *sc, int regno, const u_int16_t *addr, size_t cnt) { - bus_space_write_multi_2(sc->bst, sc->bsh, regno, + bus_space_write_multi_2(rman_get_bustag(sc->port_res), rman_get_bushandle(sc->port_res), regno, addr, cnt); } @@ -210,7 +210,7 @@ static void ed_bcopy_from(struct ed_softc *sc, caddr_t dst, int regno, size_t cnt) { - bus_space_read_multi_1(sc->bst, sc->bsh, regno, + bus_space_read_multi_1(rman_get_bustag(sc->mem_res), rman_get_bushandle(sc->mem_res), regno, dst, cnt); } @@ -270,8 +270,8 @@ if (error) return (error); - sc->asic_addr = rman_get_start(sc->port_res); - sc->nic_addr = sc->asic_addr + ED_WD_NIC_OFFSET; + sc->asic_addr = 0; + sc->nic_addr = ED_WD_NIC_OFFSET; sc->chip_type = ED_CHIP_TYPE_DP8390; if (ED_FLAGS_GETTYPE(flags) == ED_FLAGS_TOSH_ETHER) { @@ -534,7 +534,7 @@ printf("*** ed_alloc_memory() failed! (%d)\n", error); return (error); } - sc->mem_start = rman_get_start(sc->mem_res); + sc->mem_start = 0; /* * allocate one xmit buffer if < 16k, two buffers otherwise @@ -614,7 +614,7 @@ printf("starting memory performance test at 0x%x, size %d...\n", sc->mem_start, memsize*16384); for (i = 0; i < 16384; i++) - bus_space_set_multi_1(sc->bst, sc->bsh, sc->mem_start, + bus_space_set_multi_1(rman_get_bustag(sc->mem_res), rman_get_bushandle(sc->mem_res), sc->mem_start, 0x0, memsize); printf("***DONE***\n"); #endif @@ -622,11 +622,11 @@ /* * Now zero memory and verify that it is clear */ - bus_space_set_multi_1(sc->bst, sc->bsh, sc->mem_start, + bus_space_set_multi_1(rman_get_bustag(sc->mem_res), rman_get_bushandle(sc->mem_res), sc->mem_start, 0x0, memsize); for (i = 0; i < memsize; ++i) { - if (ed_readb(sc, sc->mem_start + i) != 0) { + if (bus_space_read_1(rman_get_bustag(sc->mem_res), rman_get_bushandle(sc->mem_res), sc->mem_start + i) != 0) { device_printf(dev, "failed to clear shared memory at %lx - check configuration\n", sc->mem_start + i); @@ -681,8 +681,8 @@ if (error) return (error); - sc->asic_addr = rman_get_start(sc->port_res) + ED_3COM_ASIC_OFFSET; - sc->nic_addr = rman_get_start(sc->port_res) + ED_3COM_NIC_OFFSET; + sc->asic_addr = ED_3COM_ASIC_OFFSET; + sc->nic_addr = ED_3COM_NIC_OFFSET; /* * Verify that the kernel configured I/O address matches the board @@ -848,7 +848,7 @@ if (error) return (error); - sc->mem_start = rman_get_start(sc->mem_res); + sc->mem_start = 0; sc->mem_size = memsize; sc->mem_end = sc->mem_start + memsize; @@ -938,10 +938,10 @@ /* * Zero memory and verify that it is clear */ - bus_space_set_multi_1(sc->bst, sc->bsh, sc->mem_start, 0x0, memsize); + bus_space_set_multi_1(rman_get_bustag(sc->mem_res), rman_get_bushandle(sc->mem_res), sc->mem_start, 0x0, memsize); for (i = 0; i < memsize; ++i) - if (ed_readb(sc, sc->mem_start + i) != 0) { + if (bus_space_read_1(rman_get_bustag(sc->mem_res), rman_get_bushandle(sc->mem_res), sc->mem_start + i) != 0) { device_printf(dev, "failed to clear shared memory at %lx - check configuration\n", sc->mem_start + i); return (ENXIO); @@ -1006,8 +1006,8 @@ if (error) return (error); - sc->asic_addr = rman_get_start(sc->port_res) + ED_NOVELL_ASIC_OFFSET; - sc->nic_addr = rman_get_start(sc->port_res) + ED_NOVELL_NIC_OFFSET; + sc->asic_addr = ED_NOVELL_ASIC_OFFSET; + sc->nic_addr = ED_NOVELL_NIC_OFFSET; /* XXX - do Novell-specific probe here */ @@ -1259,8 +1259,8 @@ return (error); /* Fill in basic information */ - sc->asic_addr = rman_get_start(sc->port_res) + ED_HPP_ASIC_OFFSET; - sc->nic_addr = rman_get_start(sc->port_res) + ED_HPP_NIC_OFFSET; + sc->asic_addr = ED_HPP_ASIC_OFFSET; + sc->nic_addr = ED_HPP_NIC_OFFSET; sc->chip_type = ED_CHIP_TYPE_DP8390; sc->isa16bit = 0; /* the 8390 core needs to be in byte mode */ @@ -1409,7 +1409,7 @@ if (error) return (error); - sc->hpp_mem_start = rman_get_start(sc->mem_res); + sc->hpp_mem_start = 0; } /* @@ -2793,11 +2793,11 @@ ed_writeb(sc, sc->nic_addr + ED_P0_CR, ED_CR_RD0 | ED_CR_STA); if (sc->isa16bit) - bus_space_read_multi_2(sc->bst, sc->bsh, + bus_space_read_multi_2(rman_get_bustag(sc->port_res), rman_get_bushandle(sc->port_res), sc->asic_addr + ED_NOVELL_DATA, (u_int16_t *) dst, amount / 2); else - bus_space_read_multi_1(sc->bst, sc->bsh, + bus_space_read_multi_1(rman_get_bustag(sc->port_res), rman_get_bushandle(sc->port_res), sc->asic_addr + ED_NOVELL_DATA, (u_int8_t *) dst, amount); @@ -2840,7 +2840,7 @@ ed_writesw(sc, sc->asic_addr + ED_NOVELL_DATA, (u_int16_t *) src, len / 2); else - bus_space_write_multi_1(sc->bst, sc->bsh, + bus_space_write_multi_1(rman_get_bustag(sc->port_res), rman_get_bushandle(sc->port_res), sc->asic_addr + ED_NOVELL_DATA, src, len); @@ -2957,7 +2957,7 @@ /* NE1000s are easy */ while (m) { if (m->m_len) - bus_space_write_multi_1(sc->bst, sc->bsh, + bus_space_write_multi_1(rman_get_bustag(sc->port_res), rman_get_bushandle(sc->port_res), sc->asic_addr + ED_NOVELL_DATA, m->m_data, m->m_len); m = m->m_next; @@ -3115,14 +3115,14 @@ } else { /* Read in data using the I/O port */ if (use_32bit_access && (amount > 3)) { - bus_space_read_multi_4(sc->bst, sc->bsh, + bus_space_read_multi_4(rman_get_bustag(sc->port_res), rman_get_bushandle(sc->port_res), sc->asic_addr + ED_HPP_PAGE_4, (u_int32_t *) dst, amount >> 2); dst += (amount & ~3); amount &= 3; } if (amount > 1) { - bus_space_read_multi_2(sc->bst, sc->bsh, + bus_space_read_multi_2(rman_get_bustag(sc->port_res), rman_get_bushandle(sc->port_res), sc->asic_addr + ED_HPP_PAGE_4, (u_int16_t *) dst, amount >> 1); dst += (amount & ~1); @@ -3229,8 +3229,8 @@ } /* output contiguous words */ if ((len > 3) && use_32bit_accesses) { - bus_space_write_multi_4(sc->bst, - sc->bsh, + bus_space_write_multi_4(rman_get_bustag(sc->port_res), + rman_get_bushandle(sc->port_res), sc->asic_addr + ED_HPP_PAGE_4, (u_int32_t *) data, len); data += (len & ~3); @@ -3364,8 +3364,8 @@ }; /* Default Set */ - sc->asic_addr = rman_get_start(sc->port_res) + ED_NOVELL_ASIC_OFFSET; - sc->nic_addr = rman_get_start(sc->port_res) + ED_NOVELL_NIC_OFFSET; + sc->asic_addr = ED_NOVELL_ASIC_OFFSET; + sc->nic_addr = ED_NOVELL_NIC_OFFSET; /* Reset Card */ tmp = ed_readb(sc, sc->asic_addr + ED_NOVELL_RESET); ed_writeb(sc, sc->asic_addr + ED_NOVELL_RESET, tmp); Index: if_ed_pccard.c =================================================================== RCS file: /home/naklab/tanimura/rina2/CVS/FreeBSD/sys/dev/ed/if_ed_pccard.c,v retrieving revision 1.1.1.3.6.4 diff -u -r1.1.1.3.6.4 if_ed_pccard.c --- if_ed_pccard.c 2000/08/16 07:38:31 1.1.1.3.6.4 +++ if_ed_pccard.c 2000/08/17 07:21:35 @@ -144,9 +144,7 @@ attr_ioport = rdbuf[2] << 8 | rdbuf[0]; iobase = rman_get_start(sc->port_res); if (attr_ioport != iobase) { -#if notdef - printf("AX88190 IOBASE MISMATCH %04x -> %04x Setting\n",attr_ioport,iobase); -#endif /* notdef */ + /* Write the IO port address to the chip. */ ed_pccard_memwrite(dev,ED_AX88190_IOBASE0,iobase & 0xff); ed_pccard_memwrite(dev,ED_AX88190_IOBASE1,(iobase >> 8) & 0xff); } Index: if_edvar.h =================================================================== RCS file: /home/naklab/tanimura/rina2/CVS/FreeBSD/sys/dev/ed/if_edvar.h,v retrieving revision 1.1.1.1.24.3 diff -u -r1.1.1.1.24.3 if_edvar.h --- if_edvar.h 2000/08/16 07:38:31 1.1.1.1.24.3 +++ if_edvar.h 2000/08/17 07:21:35 @@ -48,9 +48,6 @@ struct resource* irq_res; /* resource for irq */ void* irq_handle; /* handle for irq handler */ - bus_space_tag_t bst; /* Bus Space tag */ - bus_space_handle_t bsh; /* Bus Space handle */ - #ifdef __alpha__ u_int asic_addr; /* ASIC I/O bus address */ u_int nic_addr; /* NIC (DS8390) I/O bus address */ --Multipart_Thu_Aug_17_16:55:57_2000-1 Content-Type: text/plain; charset=US-ASCII -- Seigo Tanimura --Multipart_Thu_Aug_17_16:55:57_2000-1-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message