1/*- 2 * Copyright (c) 1999, 2000 Matthew R. Green 3 * Copyright (c) 2001 - 2003 by Thomas Moestl <tmm@FreeBSD.org> 4 * Copyright (c) 2005, 2007, 2008 by Marius Strobl <marius@FreeBSD.org> 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 18 unchanged lines hidden (view full) --- 27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * SUCH DAMAGE. 29 * 30 * from: NetBSD: psycho.c,v 1.39 2001/10/07 20:30:41 eeh Exp 31 * from: FreeBSD: psycho.c 183152 2008-09-18 19:45:22Z marius 32 */ 33 34#include <sys/cdefs.h> |
35__FBSDID("$FreeBSD: head/sys/sparc64/pci/schizo.c 206018 2010-03-31 22:19:00Z marius $"); |
36 37/* 38 * Driver for `Schizo' Fireplane/Safari to PCI 2.1 and `Tomatillo' JBus to 39 * PCI 2.2 bridges 40 */ 41 42#include "opt_ofw_pci.h" 43#include "opt_schizo.h" --- 140 unchanged lines hidden (view full) --- 184 device_t sds_ppb; /* farest PCI-PCI bridge */ 185 uint8_t sds_bus; /* bus of farest PCI dev. */ 186 uint8_t sds_slot; /* slot of farest PCI dev. */ 187 uint8_t sds_func; /* func. of farest PCI dev. */ 188}; 189 190#define SCHIZO_PERF_CNT_QLTY 100 191 |
192#define SCHIZO_SPC_READ_8(spc, sc, offs) \ |
193 bus_read_8((sc)->sc_mem_res[(spc)], (offs)) |
194#define SCHIZO_SPC_WRITE_8(spc, sc, offs, v) \ |
195 bus_write_8((sc)->sc_mem_res[(spc)], (offs), (v)) 196 |
197#define SCHIZO_PCI_READ_8(sc, offs) \ |
198 SCHIZO_SPC_READ_8(STX_PCI, (sc), (offs)) |
199#define SCHIZO_PCI_WRITE_8(sc, offs, v) \ |
200 SCHIZO_SPC_WRITE_8(STX_PCI, (sc), (offs), (v)) |
201#define SCHIZO_CTRL_READ_8(sc, offs) \ |
202 SCHIZO_SPC_READ_8(STX_CTRL, (sc), (offs)) |
203#define SCHIZO_CTRL_WRITE_8(sc, offs, v) \ |
204 SCHIZO_SPC_WRITE_8(STX_CTRL, (sc), (offs), (v)) |
205#define SCHIZO_PCICFG_READ_8(sc, offs) \ |
206 SCHIZO_SPC_READ_8(STX_PCICFG, (sc), (offs)) |
207#define SCHIZO_PCICFG_WRITE_8(sc, offs, v) \ |
208 SCHIZO_SPC_WRITE_8(STX_PCICFG, (sc), (offs), (v)) |
209#define SCHIZO_ICON_READ_8(sc, offs) \ |
210 SCHIZO_SPC_READ_8(STX_ICON, (sc), (offs)) |
211#define SCHIZO_ICON_WRITE_8(sc, offs, v) \ |
212 SCHIZO_SPC_WRITE_8(STX_ICON, (sc), (offs), (v)) 213 214struct schizo_desc { 215 const char *sd_string; 216 int sd_mode; 217 const char *sd_name; 218}; 219 --- 852 unchanged lines hidden (view full) --- 1072 struct schizo_softc *sc = sds->sds_sc; 1073 uint32_t state; 1074 1075 (void)PCIB_READ_CONFIG(sds->sds_ppb, sds->sds_bus, sds->sds_slot, 1076 sds->sds_func, PCIR_VENDOR, 2); 1077 for (; atomic_cmpset_acq_32(&sc->sc_cdma_state, 1078 SCHIZO_CDMA_STATE_DONE, SCHIZO_CDMA_STATE_PENDING) == 0;) 1079 ; |
1080 SCHIZO_PCI_WRITE_8(sc, sc->sc_cdma_clr, INTCLR_RECEIVED); |
1081 microuptime(&cur); 1082 end.tv_sec = 1; 1083 end.tv_usec = 0; 1084 timevaladd(&end, &cur); 1085 for (; (state = atomic_load_32(&sc->sc_cdma_state)) != 1086 SCHIZO_CDMA_STATE_DONE && timevalcmp(&cur, &end, <=);) 1087 microuptime(&cur); 1088 if (state != SCHIZO_CDMA_STATE_DONE) --- 68 unchanged lines hidden (view full) --- 1157} 1158 1159static void 1160schizo_intr_clear(void *arg) 1161{ 1162 struct intr_vector *iv = arg; 1163 struct schizo_icarg *sica = iv->iv_icarg; 1164 |
1165 SCHIZO_PCI_WRITE_8(sica->sica_sc, sica->sica_clr, INTCLR_IDLE); |
1166} 1167 1168static int 1169schizo_setup_intr(device_t dev, device_t child, struct resource *ires, 1170 int flags, driver_filter_t *filt, driver_intr_t *intr, void *arg, 1171 void **cookiep) 1172{ 1173 devclass_t pci_devclass; --- 309 unchanged lines hidden --- |