Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 4 Apr 2006 01:22:18 GMT
From:      Kip Macy <kmacy@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 94573 for review
Message-ID:  <200604040122.k341MI1E085840@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=94573

Change 94573 by kmacy@kmacy_storage:sun4v_work on 2006/04/04 01:22:05

	local HV PCI support changes

Affected files ...

.. //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/hv_pci.c#18 edit

Differences ...

==== //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/hv_pci.c#18 (text+ko) ====

@@ -138,17 +138,24 @@
 	int br[2];
 	int n;
 
+	printf("hvpci_attach: dev_name=%s dev_type=%s\n", 
+	       ofw_bus_get_name(dev), ofw_bus_get_type(dev));
+
 	node = ofw_bus_get_node(dev);
+	printf("hvpci_attach: %p, node: %#x\n", dev, node);
 	if (node == -1)
 		panic("%s: ofw_bus_get_node failed.", __func__);
 
 	sc = device_get_softc(dev);
-	n = OF_getprop(node, "bus-range", (void *)br, sizeof br);
+	n = OF_getprop(node, "bus-range", &br[0], 8);
+	
 	if (n == -1)
 		panic("%s: could not get bus-range", __func__);
-	if (n != sizeof br)
+	if (n != sizeof(br))
 		panic("%s: broken bus-range (%d)", __func__, n);
+
 	sc->hs_busnum = br[0];
+
 #if 0
 	if (OF_getprop(node, "reg", &cell, sizeof cell) == -1)
 		panic("%s: OF_getprop failed.", __func__);
@@ -185,26 +192,37 @@
     int width)
 {
 	struct hvpci_softc *sc;
-	uint32_t data;
-	int r;
-	uint64_t ret;
+	uint32_t data = -1;
+	uint64_t r;
+	uint32_t ret;
 
 	sc = device_get_softc(dev);
 
 	r = hvio_config_get(sc->hs_devhandle, HVPCI_BDF(bus, slot, func),
 			    reg, width, (pci_cfg_data_t *)&data);
-	printf("%d = read_config(%#lx, %#x, %d, %d) = %#x\n", r,
-	       sc->hs_devhandle, HVPCI_BDF(bus, slot, func), reg, width, data);
 	if (r == H_EOK) {
 		switch (width) {
 		case 1:
 			ret = data & 0xff;
+#if 0
+			printf("%ld = read_config(%#lx, %#x, %d, %d) = %#x\n", r,
+		       sc->hs_devhandle, HVPCI_BDF(bus, slot, func), reg, width, ret);
+#endif
 			break;
 		case 2:
 			ret = data & 0xffff;
+#if 0
+			printf("%ld = read_config(%#lx, %#x, %d, %d) = %#x\n", r,
+			       sc->hs_devhandle, HVPCI_BDF(bus, slot, func), reg, width, ret);
+#endif
+
 			break;
 		case 4:
 			ret = data;
+#if 0
+		printf("%ld = read_config(%#lx, %#x, %d, %d) = %#x\n", r,
+		       sc->hs_devhandle, HVPCI_BDF(bus, slot, func), reg, width, ret);
+#endif
 			break;
 		default:
 			ret = -1;
@@ -225,24 +243,29 @@
      uint32_t val, int width)
 {
 	struct hvpci_softc *sc;
-	uint32_t data;
+	pci_cfg_data_t data = { 0 };
+	uint64_t r;
 
 	sc = device_get_softc(dev);
 	switch (width) {
 	case 1:
-		data = val;
+		data.qw = (uint8_t)val;
 		break;
 	case 2:
-		data = val & 0xffff;
+		data.qw = (uint16_t)(val & 0xffff);
 		break;
 	case 4:
-		data = val;
+		data.qw = (uint32_t)val;
 		break;
 	default:
 		panic("unsupported width: %d", width);
 	}
-	hvio_config_put(sc->hs_devhandle, HVPCI_BDF(bus, slot, func), reg,
-			width, (pci_cfg_data_t)data);
+
+	r = hvio_config_put(sc->hs_devhandle, HVPCI_BDF(bus, slot, func), 
+			    reg, width, (pci_cfg_data_t)data);
+
+	if (r)
+		printf("put failed with: %ld\n", r);
 }
 
 #ifdef notyet



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