changeset 5046:66c87e13529d

6603899 Turgo platform support needs to lose its platform-specific prtdiag overlay
author willard
date Thu, 13 Sep 2007 22:03:23 -0700
parents 75a798a98460
children 37a2134c993c
files deleted_files/usr/src/lib/libprtdiag_psr/sparc/ontario/common/turgo.c deleted_files/usr/src/lib/libprtdiag_psr/sparc/ontario/common/turgo.h usr/src/cmd/picl/plugins/sun4v/ontario/piclsbl/Makefile usr/src/lib/fm/topo/maps/Makefile usr/src/lib/fm/topo/maps/SUNW,Netra-T5220/Makefile usr/src/lib/fm/topo/maps/SUNW,Netra-T5220/Netra-T5220-hc-topology.xml usr/src/lib/fm/topo/maps/SUNW,Sun-Fire-T200/Makefile usr/src/lib/fm/topo/maps/SUNW,Sun-Fire-T200/Netra-T5220-hc-topology.xml usr/src/lib/libpcp/sparc/Makefile usr/src/lib/libprtdiag_psr/sparc/ontario/Makefile usr/src/lib/libprtdiag_psr/sparc/ontario/common/ontario.c usr/src/lib/libprtdiag_psr/sparc/ontario/common/turgo.c usr/src/lib/libprtdiag_psr/sparc/ontario/common/turgo.h usr/src/lib/libtsalarm/sparc/Makefile usr/src/pkgdefs/SUNWfmd/prototype_sparc usr/src/pkgdefs/SUNWkvmt200.v/prototype_com usr/src/pkgdefs/SUNWpiclu/prototype_sparc usr/src/pkgdefs/etc/exception_list_sparc usr/src/psm/stand/boot/sparcv9/sun4v/Makefile usr/src/uts/sun4v/Makefile usr/src/uts/sun4v/Makefile.turgo usr/src/uts/sun4v/ontario/Makefile
diffstat 22 files changed, 792 insertions(+), 713 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/deleted_files/usr/src/lib/libprtdiag_psr/sparc/ontario/common/turgo.c	Thu Sep 13 22:03:23 2007 -0700
@@ -0,0 +1,511 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+/*
+ * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/*
+ * Sun4v Platform specific functions.
+ *
+ * 	called when :
+ *      machine_type ==  turgo
+ *
+ */
+
+#pragma ident	"%Z%%M%	%I%	%E% SMI"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <kstat.h>
+#include <fcntl.h>
+#include <string.h>
+#include <assert.h>
+#include <libintl.h>
+#include <note.h>
+#include <sys/systeminfo.h>
+#include <sys/openpromio.h>
+#include <sys/sysmacros.h>
+#include <picl.h>
+#include "picldefs.h"
+#include <pdevinfo.h>
+#include <display.h>
+#include <display_sun4v.h>
+#include <libprtdiag.h>
+#include "turgo.h"
+
+#if !defined(TEXT_DOMAIN)
+#define	TEXT_DOMAIN	"SYS_TEST"
+#endif
+
+/* local functions */
+static void turgo_get_bus_type(char *path, struct io_card *card);
+static void turgo_get_slot_number(char *path, struct io_card *card);
+static int turgo_get_network_instance(char *path);
+static int turgo_get_first_compatible_value(picl_nodehdl_t nodeh,
+    char **outbuf);
+static int64_t turgo_get_int_propval(picl_nodehdl_t modh, char *prop_name,
+    int *ret);
+
+static void
+turgo_get_bus_type(char *path, struct io_card *card)
+{
+	if (strcmp(path, TURGO_NIU) == 0) {
+		(void) strcpy(card->bus_type, "NIU");
+	} else if (strncmp(path, TURGO_PCIX_SLOT1, TURGO_PCIX_COMP) == 0) {
+		(void) strcpy(card->bus_type, "PCIX");
+	} else if (strncmp(path, TURGO_PCIX_SLOT2, TURGO_PCIX_COMP) == 0) {
+		(void) strcpy(card->bus_type, "PCIX");
+	} else {
+		(void) strcpy(card->bus_type, "PCIE");
+	}
+}
+
+static void
+turgo_get_slot_number(char *path, struct io_card *card)
+{
+	if (strncmp(path, TURGO_N2_XAUI0,
+	    strlen(TURGO_N2_XAUI0)) == 0) {
+		(void) strcpy(card->slot_str, "0");
+		card->slot = 0;
+	} else if (strncmp(path, TURGO_N2_XAUI1,
+	    strlen(TURGO_N2_XAUI1)) == 0) {
+		(void) strcpy(card->slot_str, "1");
+		card->slot = 1;
+	} else if (strncmp(path, TURGO_PCIE_SLOT0,
+	    strlen(TURGO_PCIE_SLOT0)) == 0) {
+		(void) strcpy(card->slot_str, "0");
+		card->slot = 0;
+	} else if (strncmp(path, TURGO_PCIE_SLOT1,
+	    strlen(TURGO_PCIE_SLOT1)) == 0) {
+		(void) strcpy(card->slot_str, "1");
+		card->slot = 1;
+	} else if (strncmp(path, TURGO_PCIE_SLOT2,
+	    strlen(TURGO_PCIE_SLOT2)) == 0) {
+		(void) strcpy(card->slot_str, "2");
+		card->slot = 2;
+	} else if (strncmp(path, TURGO_PCIE_SLOT3,
+	    strlen(TURGO_PCIE_SLOT3)) == 0) {
+		(void) strcpy(card->slot_str, "3");
+		card->slot = 3;
+	} else if (strncmp(path, TURGO_PCIX_SLOT1,
+	    strlen(TURGO_PCIX_SLOT1)) == 0) {
+		(void) strcpy(card->slot_str, "1");
+		card->slot = 1;
+	} else if (strncmp(path, TURGO_PCIX_SLOT2,
+	    strlen(TURGO_PCIX_SLOT2)) == 0) {
+		(void) strcpy(card->slot_str, "2");
+		card->slot = 2;
+	} else {
+		(void) strcpy(card->slot_str, MOTHERBOARD);
+		card->slot = NO_SLOT;
+	}
+
+#ifdef	DEBUG
+	printf("DEBUG: path = %s, slot = %d\n", path, card->slot);
+#endif
+}
+
+static int
+turgo_get_network_instance(char *path)
+{
+	if (strcmp(path, TURGO_NETWORK_0) == 0) {
+		return (0);
+	} else if (strcmp(path, TURGO_NETWORK_1) == 0) {
+		return (1);
+	} else if (strcmp(path, TURGO_NETWORK_2) == 0) {
+		return (2);
+	} else if (strcmp(path, TURGO_NETWORK_3) == 0) {
+		return (3);
+	} else if (strcmp(path, TURGO_N2_XAUI0) == 0) {
+		return (0);
+	} else if (strcmp(path, TURGO_N2_XAUI1) == 0) {
+		return (1);
+	} else {
+		return (-1);
+	}
+}
+/*
+ * add all io devices under pci in io list
+ */
+/* ARGSUSED */
+int
+turgo_pci_callback(picl_nodehdl_t pcih, void *args)
+{
+	int		err = PICL_SUCCESS;
+	picl_nodehdl_t	nodeh;
+	char		path[MAXSTRLEN];
+	char		parent_path[MAXSTRLEN];
+	char		piclclass[PICL_CLASSNAMELEN_MAX];
+	char		name[MAXSTRLEN];
+	char		model[MAXSTRLEN];
+	char		*compatible;
+	char		binding_name[MAXSTRLEN];
+	struct io_card	pci_card;
+	int32_t		instance;
+
+	err = picl_get_propval_by_name(pcih, PICL_PROP_DEVFS_PATH, parent_path,
+	    sizeof (parent_path));
+	if (err != PICL_SUCCESS) {
+		return (err);
+	}
+
+	/* Walk through the children */
+	err = picl_get_propval_by_name(pcih, PICL_PROP_CHILD, &nodeh,
+	    sizeof (picl_nodehdl_t));
+
+	while (err == PICL_SUCCESS) {
+		err = picl_get_propval_by_name(nodeh, PICL_PROP_CLASSNAME,
+		    piclclass, sizeof (piclclass));
+		if (err !=  PICL_SUCCESS)
+			return (err);
+
+		if (strcmp(piclclass, "pciex") == 0) {
+			err = picl_get_propval_by_name(nodeh, PICL_PROP_PEER,
+			    &nodeh, sizeof (picl_nodehdl_t));
+			continue;
+		} else if (strcmp(piclclass, "sun4v") == 0) {
+			err = picl_get_propval_by_name(nodeh, PICL_PROP_CHILD,
+			    &nodeh, sizeof (picl_nodehdl_t));
+			continue;
+		} else if (strcmp(piclclass, "pci") == 0) {
+			err = picl_get_propval_by_name(nodeh, PICL_PROP_PEER,
+			    &nodeh, sizeof (picl_nodehdl_t));
+			continue;
+		}
+
+		err = picl_get_propval_by_name(nodeh, PICL_PROP_DEVFS_PATH,
+		    path, sizeof (path));
+		if (err != PICL_SUCCESS) {
+			return (err);
+		}
+
+		(void) strlcpy(pci_card.notes, path, sizeof (pci_card.notes));
+
+		turgo_get_bus_type(parent_path, &pci_card);
+
+		err = picl_get_propval_by_name(nodeh, PICL_PROP_NAME, &name,
+		    sizeof (name));
+		if (err == PICL_PROPNOTFOUND)
+			(void) strcpy(name, "");
+		else if (err != PICL_SUCCESS)
+			return (err);
+
+		if (strcmp(parent_path, TURGO_NIU) == 0)
+			turgo_get_slot_number(path, &pci_card);
+		else
+			turgo_get_slot_number(parent_path, &pci_card);
+
+		/* Figure out NAC name */
+		if ((strcmp(name, NETWORK) == 0) &&
+		    (strcmp(pci_card.slot_str, MOTHERBOARD) == 0)) {
+			instance = turgo_get_network_instance(path);
+			(void) snprintf(pci_card.status,
+			    sizeof (pci_card.status), "%s/%s%d", MOTHERBOARD,
+			    "NET", instance);
+		} else {
+			if (pci_card.slot != NO_SLOT) {
+				(void) snprintf(pci_card.status,
+				    sizeof (pci_card.status), "%s/%s%d",
+				    MOTHERBOARD, pci_card.bus_type,
+				    pci_card.slot);
+			} else {
+				(void) snprintf(pci_card.status,
+				    sizeof (pci_card.status), "%s/%s",
+				    MOTHERBOARD, pci_card.bus_type);
+			}
+		}
+
+		/*
+		 * Get the name of this card. If binding_name is found,
+		 * name will be <nodename>-<binding_name>
+		 */
+
+		err = picl_get_propval_by_name(nodeh, PICL_PROP_BINDING_NAME,
+		    &binding_name, sizeof (binding_name));
+		if (err == PICL_PROPNOTFOUND) {
+			/*
+			 * if compatible prop is found, name will be
+			 * <nodename>-<compatible>
+			 */
+			err = turgo_get_first_compatible_value(nodeh,
+			    &compatible);
+			if (err == PICL_SUCCESS) {
+				(void) strlcat(name, "-", MAXSTRLEN);
+				(void) strlcat(name, compatible, MAXSTRLEN);
+				free(compatible);
+			} else if (err != PICL_PROPNOTFOUND) {
+				return (err);
+			}
+		} else if (err != PICL_SUCCESS) {
+			return (err);
+		} else if (strcmp(name, binding_name) != 0) {
+			(void) strlcat(name, "-", MAXSTRLEN);
+			(void) strlcat(name, binding_name, MAXSTRLEN);
+		}
+
+		(void) strlcpy(pci_card.name, name, sizeof (pci_card.name));
+
+		/* Get the model of this card */
+
+		err = picl_get_propval_by_name(nodeh, OBP_PROP_MODEL,
+		    &model, sizeof (model));
+		if (err == PICL_PROPNOTFOUND)
+			(void) strcpy(model, "");
+		else if (err != PICL_SUCCESS)
+			return (err);
+		(void) strlcpy(pci_card.model, model, sizeof (pci_card.model));
+
+		/* Print NAC name */
+		log_printf("%-11s", pci_card.status);
+		/* Print IO Type */
+		log_printf("%6s", pci_card.bus_type);
+		/* Print Slot # */
+		log_printf("%5s", pci_card.slot_str);
+		/* Print Parent Path */
+		if (strlen(pci_card.notes) > 45)
+			log_printf("%45.44s+", pci_card.notes);
+		else
+			log_printf("%46.45s", pci_card.notes);
+		/* Printf Card Name */
+		if (strlen(pci_card.name) > 24)
+			log_printf("%25.24s+", pci_card.name);
+		else
+			log_printf("%26s", pci_card.name);
+		/* Print Card Model */
+		if (strlen(pci_card.model) > 10)
+			log_printf("%10.9s+", pci_card.model);
+		else
+			log_printf("%10s", pci_card.model);
+		log_printf("\n");
+
+		err = picl_get_propval_by_name(nodeh, PICL_PROP_PEER, &nodeh,
+		    sizeof (picl_nodehdl_t));
+
+	}
+
+	return (PICL_WALK_CONTINUE);
+}
+
+/*
+ *  Add all IO ASIC revisions to list
+ */
+/* ARGSUSED */
+int
+turgo_hw_rev_callback(picl_nodehdl_t pcih, void *args)
+{
+	int		err = PICL_SUCCESS;
+	char		path[MAXSTRLEN] = "";
+	char		device_path[MAXSTRLEN];
+	char		NAC[MAXSTRLEN];
+	char		*compatible;
+	int32_t		revision;
+	int		device_found = 0;
+
+	err = picl_get_propval_by_name(pcih, PICL_PROP_DEVFS_PATH, path,
+	    sizeof (path));
+	if (err != PICL_SUCCESS) {
+		return (err);
+	}
+
+	if ((strcmp(path, TURGO_NETWORK_0) == 0) ||
+	    (strcmp(path, TURGO_NETWORK_1) == 0)) {
+		device_found = 1;
+		(void) snprintf(NAC, sizeof (NAC), "%s/%s%d",
+		    MOTHERBOARD, OPHIR, 0);
+		revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID,
+		    &err);
+	} else if ((strcmp(path, TURGO_NETWORK_2) == 0) ||
+	    (strcmp(path, TURGO_NETWORK_3) == 0)) {
+		device_found = 1;
+		(void) snprintf(NAC, sizeof (NAC), "%s/%s%d", MOTHERBOARD,
+		    OPHIR, 1);
+		revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID,
+		    &err);
+	} else if (strcmp(path, TURGO_SWITCH_A_PATH) == 0) {
+		device_found = 1;
+		(void) snprintf(NAC, sizeof (NAC), "%s/%s",
+		    MOTHERBOARD, TURGO_SWITCH_A);
+		revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID,
+		    &err);
+	} else if (strcmp(path, TURGO_SWITCH_B_PATH) == 0) {
+		device_found = 1;
+		(void) snprintf(NAC, sizeof (NAC), "%s/%s", MOTHERBOARD,
+		    TURGO_SWITCH_B);
+		revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID,
+		    &err);
+	} else if (strcmp(path, TURGO_SWITCH_C_PATH) == 0) {
+		device_found = 1;
+		(void) snprintf(NAC, sizeof (NAC), "%s/%s", MOTHERBOARD,
+		    TURGO_SWITCH_C);
+		revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID,
+		    &err);
+	} else if (strcmp(path, TURGO_LSI_PATH) == 0) {
+		device_found = 1;
+		(void) snprintf(NAC, sizeof (NAC), "%s/%s", MOTHERBOARD,
+		    SAS_SATA_HBA);
+		revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID,
+		    &err);
+	} else if (strcmp(path, TURGO_PCIE_PCIX) == 0) {
+		device_found = 1;
+		(void) snprintf(NAC, sizeof (NAC), "%s/%s", MOTHERBOARD,
+		    PCIE_PCIX_BRIDGE);
+		revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID,
+		    &err);
+	}
+
+	if (device_found == 1) {
+		(void) strcpy(device_path, path);
+		err = turgo_get_first_compatible_value(pcih, &compatible);
+		if (err != PICL_SUCCESS) {
+			return (err);
+		}
+
+		/* Print NAC name */
+		log_printf("%-20s", NAC);
+		/* Print Device Path */
+		if (strlen(device_path) > 45)
+			log_printf("%45.44s+", device_path);
+		else
+			log_printf("%46s", device_path);
+		/* Print Compatible # */
+		log_printf("%31s", compatible);
+		free(compatible);
+		/* Print Revision */
+		log_printf("%6d", revision);
+		log_printf("\n");
+	}
+
+	return (PICL_WALK_CONTINUE);
+}
+
+/*
+ * return the first compatible value
+ */
+static int
+turgo_get_first_compatible_value(picl_nodehdl_t nodeh, char **outbuf)
+{
+	int		err;
+	picl_prophdl_t	proph;
+	picl_propinfo_t	pinfo;
+	picl_prophdl_t	tblh;
+	picl_prophdl_t	rowproph;
+	char		*pval;
+
+	err = picl_get_propinfo_by_name(nodeh, OBP_PROP_COMPATIBLE,
+	    &pinfo, &proph);
+	if (err != PICL_SUCCESS)
+		return (err);
+
+	if (pinfo.type == PICL_PTYPE_CHARSTRING) {
+		pval = malloc(pinfo.size);
+		if (pval == NULL)
+			return (PICL_FAILURE);
+		err = picl_get_propval(proph, pval, pinfo.size);
+		if (err != PICL_SUCCESS) {
+			free(pval);
+			return (err);
+		}
+		*outbuf = pval;
+		return (PICL_SUCCESS);
+	} else if (pinfo.type != PICL_PTYPE_TABLE)
+		return (PICL_FAILURE);
+
+	/* get first string from table */
+	err = picl_get_propval(proph, &tblh, pinfo.size);
+	if (err != PICL_SUCCESS)
+		return (err);
+
+	err = picl_get_next_by_row(tblh, &rowproph);
+	if (err != PICL_SUCCESS)
+		return (err);
+
+	err = picl_get_propinfo(rowproph, &pinfo);
+	if (err != PICL_SUCCESS)
+		return (err);
+
+	pval = malloc(pinfo.size);
+	if (pval == NULL)
+		return (PICL_FAILURE);
+
+	err = picl_get_propval(rowproph, pval, pinfo.size);
+	if (err != PICL_SUCCESS) {
+		free(pval);
+		return (err);
+	}
+
+	*outbuf = pval;
+	return (PICL_SUCCESS);
+}
+
+/*
+ * return the revision of a device.
+ */
+static int64_t
+turgo_get_int_propval(picl_nodehdl_t modh, char *prop_name, int *ret)
+{
+	int		err;
+	picl_prophdl_t	proph;
+	picl_propinfo_t	pinfo;
+	int8_t		int8v;
+	int16_t		int16v;
+	int32_t		int32v;
+	int64_t		int64v;
+
+	err = picl_get_propinfo_by_name(modh, prop_name, &pinfo, &proph);
+	if (err != PICL_SUCCESS) {
+		*ret = err;
+		return (0);
+	}
+
+	/*
+	 * If it is not an int, uint or byte array prop, return failure
+	 */
+	if ((pinfo.type != PICL_PTYPE_INT) &&
+	    (pinfo.type != PICL_PTYPE_UNSIGNED_INT) &&
+	    (pinfo.type != PICL_PTYPE_BYTEARRAY)) {
+		*ret = PICL_FAILURE;
+		return (0);
+	}
+
+	switch (pinfo.size) {
+	case sizeof (int8_t):
+		err = picl_get_propval(proph, &int8v, sizeof (int8v));
+		*ret = err;
+		return (int8v);
+	case sizeof (int16_t):
+		err = picl_get_propval(proph, &int16v, sizeof (int16v));
+		*ret = err;
+		return (int16v);
+	case sizeof (int32_t):
+		err = picl_get_propval(proph, &int32v, sizeof (int32v));
+		*ret = err;
+		return (int32v);
+	case sizeof (int64_t):
+		err = picl_get_propval(proph, &int64v, sizeof (int64v));
+		*ret = err;
+		return (int64v);
+	default:	/* not supported size */
+		*ret = PICL_FAILURE;
+		return (0);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/deleted_files/usr/src/lib/libprtdiag_psr/sparc/ontario/common/turgo.h	Thu Sep 13 22:03:23 2007 -0700
@@ -0,0 +1,113 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+/*
+ * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/*
+ * Sun4v Platform header file.
+ *
+ * 	called when :
+ *      machine_type ==  turgo
+ *
+ */
+
+#ifndef _TURGO_H
+#define	_TURGO_H
+
+#pragma ident	"%Z%%M%	%I%	%E% SMI"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define	TURGO_PLATFORM		"SUNW,Netra-T5220"
+#define	TURGO_PCIE_COMP		30
+#define	TURGO_XAUI_COMP		17
+#define	TURGO_PCIX_COMP		30
+#define	NO_SLOT 		-1
+#define	MOTHERBOARD		"MB"
+#define	TURGO_SWITCH_A		"PCI-SWITCH0"
+#define	TURGO_SWITCH_B		"PCI-SWITCH1"
+#define	TURGO_SWITCH_C		"PCI-SWITCH2"
+#define	OPHIR			"GBE"
+#define	NETWORK			"network"
+#define	PCIE			"/PCIE"
+#define	PCIX			"/PCIX"
+#define	TURGO_NIU		"/niu@80"
+#define	TURGO_SWITCH_A_PATH	"/pci@0/pci@0"
+#define	TURGO_SWITCH_B_PATH	"/pci@0/pci@0/pci@8/pci@0"
+#define	TURGO_SWITCH_C_PATH	"/pci@0/pci@0/pci@1/pci@0"
+#define	TURGO_NETWORK_0		"/pci@0/pci@0/pci@1/pci@0/pci@2/network@0"
+#define	TURGO_NETWORK_1		"/pci@0/pci@0/pci@1/pci@0/pci@2/network@0,1"
+#define	TURGO_NETWORK_2		"/pci@0/pci@0/pci@1/pci@0/pci@3/network@0"
+#define	TURGO_NETWORK_3		"/pci@0/pci@0/pci@1/pci@0/pci@3/network@0,1"
+#define	TURGO_USB_0		"/pci@0/pci@0/pci@1/pci@0/pci@1/pci@0/usb@0"
+#define	TURGO_USB_1		"/pci@0/pci@0/pci@1/pci@0/pci@1/pci@0/usb@0,1"
+#define	TURGO_USB_2		"/pci@0/pci@0/pci@1/pci@0/pci@1/pci@0/usb@0,2"
+#define	TURGO_IDE		"/pci@0/pci@0/pci@1/pci@0/pci@1/pci@0/ide@1f"
+#define	TURGO_PCIE_SLOT0	"/pci@0/pci@0/pci@8/pci@0/pci@9"
+#define	TURGO_PCIE_SLOT1	"/pci@0/pci@0/pci@8/pci@0/pci@1"
+#define	TURGO_PCIE_SLOT2	"/pci@0/pci@0/pci@9"
+#define	TURGO_PCIE_SLOT3	"/pci@0/pci@0/pci@8/pci@0/pci@8"
+#define	TURGO_PCIE_PCIX	"/pci@0/pci@0/pci@8/pci@0/pci@2"
+#define	TURGO_PCIX_SLOT1	"/pci@0/pci@0/pci@8/pci@0/pci@2/pci@0,2/pci@1"
+#define	TURGO_PCIX_SLOT2	"/pci@0/pci@0/pci@8/pci@0/pci@2/pci@0"
+#define	TURGO_LSI_PATH		"/pci@0/pci@0/pci@2/scsi@0"
+#define	TURGO_N2_XAUI0		"/niu@80/network@1"
+#define	TURGO_N2_XAUI1		"/niu@80/network@0"
+#define	SAS_SATA_HBA		"SAS-SATA-HBA"
+#define	PCIE_PCIX_BRIDGE	"PCIE-PCIX-BRIDGE"
+
+
+
+/*
+ * Property names
+ */
+#define	OBP_PROP_REG		"reg"
+#define	OBP_PROP_CLOCK_FREQ	"clock-frequency"
+#define	OBP_PROP_BOARD_NUM	"board#"
+#define	OBP_PROP_REVISION_ID	"revision-id"
+#define	OBP_PROP_VERSION_NUM	"version#"
+#define	OBP_PROP_BOARD_TYPE	"board_type"
+#define	OBP_PROP_ECACHE_SIZE	"ecache-size"
+#define	OBP_PROP_IMPLEMENTATION	"implementation#"
+#define	OBP_PROP_MASK		"mask#"
+#define	OBP_PROP_COMPATIBLE	"compatible"
+#define	OBP_PROP_BANNER_NAME	"banner-name"
+#define	OBP_PROP_MODEL		"model"
+#define	OBP_PROP_66MHZ_CAPABLE	"66mhz-capable"
+#define	OBP_PROP_FBC_REG_ID	"fbc_reg_id"
+#define	OBP_PROP_VERSION	"version"
+#define	OBP_PROP_INSTANCE	"instance"
+
+/*
+ * Function Headers
+ */
+int turgo_pci_callback(picl_nodehdl_t pcih, void *args);
+int turgo_hw_rev_callback(picl_nodehdl_t pcih, void *args);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TURGO_H */
--- a/usr/src/cmd/picl/plugins/sun4v/ontario/piclsbl/Makefile	Thu Sep 13 19:59:30 2007 -0700
+++ b/usr/src/cmd/picl/plugins/sun4v/ontario/piclsbl/Makefile	Thu Sep 13 22:03:23 2007 -0700
@@ -78,6 +78,7 @@
 LINKED_PLATFORMS	= SUNW,Sun-Blade-T6300 SUNW,T5140
 LINKED_PLATFORMS	+= SUNW,Sun-Blade-T6320
 LINKED_PLATFORMS	+= SUNW,SPARC-Enterprise-T5120
+LINKED_PLATFORMS	+= SUNW,Netra-T5220
 
 LINKED_DIRS		= $(LINKED_PLATFORMS:%=$(USR_PLAT_DIR)/%)
 LINKED_LIB_DIRS		= $(LINKED_PLATFORMS:%=$(USR_PLAT_DIR)/%/lib)
--- a/usr/src/lib/fm/topo/maps/Makefile	Thu Sep 13 19:59:30 2007 -0700
+++ b/usr/src/lib/fm/topo/maps/Makefile	Thu Sep 13 22:03:23 2007 -0700
@@ -34,7 +34,8 @@
 		SUNW,Sun-Blade-T6320 \
 		SUNW,SPARC-Enterprise-T5120 \
 		SUNW,T5140 \
-		SUNW,Netra-CP3260
+		SUNW,Netra-CP3260 \
+		SUNW,Netra-T5220
 
 i386_SUBDIRS = i86pc \
 		SUNW,Sun-Fire-X4500
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usr/src/lib/fm/topo/maps/SUNW,Netra-T5220/Makefile	Thu Sep 13 22:03:23 2007 -0700
@@ -0,0 +1,33 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+# Use is subject to license terms.
+#
+#ident	"%Z%%M%	%I%	%E% SMI"
+
+PLATFORMS = SUNW,Netra-T5220
+CLASS = platform
+DTDFILE =
+TOPOFILE = Netra-T5220-hc-topology.xml
+SRCDIR = ../SUNW,Netra-T5220
+
+include ../Makefile.map
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usr/src/lib/fm/topo/maps/SUNW,Netra-T5220/Netra-T5220-hc-topology.xml	Thu Sep 13 22:03:23 2007 -0700
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<!DOCTYPE topology SYSTEM "/usr/share/lib/xml/dtd/topology.dtd.1">
+<!--
+ Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+ Use is subject to license terms.
+
+ CDDL HEADER START
+
+ The contents of this file are subject to the terms of the
+ Common Development and Distribution License (the "License").
+ You may not use this file except in compliance with the License.
+
+ You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ or http://www.opensolaris.org/os/licensing.
+ See the License for the specific language governing permissions
+ and limitations under the License.
+
+ When distributing Covered Code, include this CDDL HEADER in each
+ file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ If applicable, add the following below this CDDL HEADER, with the
+ fields enclosed by brackets "[]" replaced with your own identifying
+ information: Portions Copyright [yyyy] [name of copyright owner]
+
+ CDDL HEADER END
+
+ ident	"%Z%%M%	%I%	%E% SMI"
+-->
+
+<topology name='SUNW,Netra-T5220' scheme='hc'>
+  <range name='motherboard' min='0' max='0'>
+    <enum-method name='motherboard' version='1'/>
+ 
+    <dependents grouping='children'>
+      <range name='chip' min='0' max='0'>
+        <enum-method name='chip' version='1'/>
+ 
+        <dependents grouping='children'>
+          <range name='hostbridge' min='0' max='254'>
+            <enum-method name='hostbridge' version='1' />
+ 
+            <dependents grouping='children'>
+              <range name='niu' min='0' max='0'>
+                <enum-method name='niu' version='1'/>
+              </range>
+            </dependents>
+          </range>
+        </dependents>
+      </range>
+    </dependents>
+ 
+  </range>
+</topology>
--- a/usr/src/lib/fm/topo/maps/SUNW,Sun-Fire-T200/Makefile	Thu Sep 13 19:59:30 2007 -0700
+++ b/usr/src/lib/fm/topo/maps/SUNW,Sun-Fire-T200/Makefile	Thu Sep 13 22:03:23 2007 -0700
@@ -31,8 +31,7 @@
 TOPOFILE = Sun-Fire-T200-hc-topology.xml	\
 	Sun-Fire-T1000-hc-topology.xml	\
 	SPARC-Enterprise-T1000-hc-topology.xml \
-	Sun-Blade-T6300-hc-topology.xml \
-	Netra-T5220-hc-topology.xml
+	Sun-Blade-T6300-hc-topology.xml
 
 SRCDIR = ../SUNW,Sun-Fire-T200
 
--- a/usr/src/lib/fm/topo/maps/SUNW,Sun-Fire-T200/Netra-T5220-hc-topology.xml	Thu Sep 13 19:59:30 2007 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE topology SYSTEM "/usr/share/lib/xml/dtd/topology.dtd.1">
-<!--
- Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms.
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
- ident	"%Z%%M%	%I%	%E% SMI"
--->
-
-<topology name='SUNW,Netra-T5220' scheme='hc'>
-  <range name='motherboard' min='0' max='0'>
-    <enum-method name='motherboard' version='1'/>
- 
-    <dependents grouping='children'>
-      <range name='chip' min='0' max='0'>
-        <enum-method name='chip' version='1'/>
- 
-        <dependents grouping='children'>
-          <range name='hostbridge' min='0' max='254'>
-            <enum-method name='hostbridge' version='1' />
- 
-            <dependents grouping='children'>
-              <range name='niu' min='0' max='0'>
-                <enum-method name='niu' version='1'/>
-              </range>
-            </dependents>
-          </range>
-        </dependents>
-      </range>
-    </dependents>
- 
-  </range>
-</topology>
--- a/usr/src/lib/libpcp/sparc/Makefile	Thu Sep 13 19:59:30 2007 -0700
+++ b/usr/src/lib/libpcp/sparc/Makefile	Thu Sep 13 22:03:23 2007 -0700
@@ -42,7 +42,8 @@
 		SUNW,Sun-Blade-T6320 \
 		SUNW,SPARC-Enterprise-T5120 \
 		SUNW,T5140 \
-		SUNW,Netra-CP3260
+		SUNW,Netra-CP3260 \
+		SUNW,Netra-T5220
 
 
 include ../Makefile.com
--- a/usr/src/lib/libprtdiag_psr/sparc/ontario/Makefile	Thu Sep 13 19:59:30 2007 -0700
+++ b/usr/src/lib/libprtdiag_psr/sparc/ontario/Makefile	Thu Sep 13 22:03:23 2007 -0700
@@ -28,7 +28,7 @@
 
 UTSBASE   = ../../../../uts
 
-PLATFORM_OBJECTS= ontario.o erie.o pelton.o stpaul.o huron.o glendale.o turgo.o
+PLATFORM_OBJECTS= ontario.o erie.o pelton.o stpaul.o huron.o glendale.o
 
 include ../Makefile.com
 
--- a/usr/src/lib/libprtdiag_psr/sparc/ontario/common/ontario.c	Thu Sep 13 19:59:30 2007 -0700
+++ b/usr/src/lib/libprtdiag_psr/sparc/ontario/common/ontario.c	Thu Sep 13 22:03:23 2007 -0700
@@ -57,7 +57,6 @@
 #include "stpaul.h"
 #include "huron.h"
 #include "glendale_common.h"
-#include "turgo.h"
 
 #if !defined(TEXT_DOMAIN)
 #define	TEXT_DOMAIN	"SYS_TEST"
@@ -367,14 +366,6 @@
 		    "niu", glendale_pci_callback);
 		(void) picl_walk_tree_by_class(plafh, "pciex",
 		    "pciex", glendale_pci_callback);
-	} else if (strncmp(platbuf, TURGO_PLATFORM,
-	    strlen(TURGO_PLATFORM)) == 0) {
-		(void) picl_walk_tree_by_class(plafh, "sun4v",
-		    "niu", turgo_pci_callback);
-		(void) picl_walk_tree_by_class(plafh, "pciex",
-		    "pciex", turgo_pci_callback);
-		(void) picl_walk_tree_by_class(plafh, "pci",
-		    "pci", turgo_pci_callback);
 	} else {
 		(void) picl_walk_tree_by_class(plafh, "pciex", "pciex",
 		    erie_pci_callback);
@@ -611,16 +602,6 @@
 		    "network", glendale_hw_rev_callback);
 		(void) picl_walk_tree_by_class(plafh, "scsi-2",
 		    "scsi-2", glendale_hw_rev_callback);
-	} else if (strncmp(platbuf, TURGO_PLATFORM,
-	    strlen(TURGO_PLATFORM)) == 0) {
-		(void) picl_walk_tree_by_class(plafh, "pciex",
-		    "pciex", turgo_hw_rev_callback);
-		(void) picl_walk_tree_by_class(plafh, "sun4v",
-		    "niu", turgo_hw_rev_callback);
-		(void) picl_walk_tree_by_class(plafh, "network",
-		    "network", turgo_hw_rev_callback);
-		(void) picl_walk_tree_by_class(plafh, "scsi-2", "scsi-2",
-		    turgo_hw_rev_callback);
 	} else {
 		(void) picl_walk_tree_by_class(plafh, "pciex", "pciex",
 		    erie_hw_rev_callback);
--- a/usr/src/lib/libprtdiag_psr/sparc/ontario/common/turgo.c	Thu Sep 13 19:59:30 2007 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,511 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-/*
- * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-/*
- * Sun4v Platform specific functions.
- *
- * 	called when :
- *      machine_type ==  turgo
- *
- */
-
-#pragma ident	"%Z%%M%	%I%	%E% SMI"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <kstat.h>
-#include <fcntl.h>
-#include <string.h>
-#include <assert.h>
-#include <libintl.h>
-#include <note.h>
-#include <sys/systeminfo.h>
-#include <sys/openpromio.h>
-#include <sys/sysmacros.h>
-#include <picl.h>
-#include "picldefs.h"
-#include <pdevinfo.h>
-#include <display.h>
-#include <display_sun4v.h>
-#include <libprtdiag.h>
-#include "turgo.h"
-
-#if !defined(TEXT_DOMAIN)
-#define	TEXT_DOMAIN	"SYS_TEST"
-#endif
-
-/* local functions */
-static void turgo_get_bus_type(char *path, struct io_card *card);
-static void turgo_get_slot_number(char *path, struct io_card *card);
-static int turgo_get_network_instance(char *path);
-static int turgo_get_first_compatible_value(picl_nodehdl_t nodeh,
-    char **outbuf);
-static int64_t turgo_get_int_propval(picl_nodehdl_t modh, char *prop_name,
-    int *ret);
-
-static void
-turgo_get_bus_type(char *path, struct io_card *card)
-{
-	if (strcmp(path, TURGO_NIU) == 0) {
-		(void) strcpy(card->bus_type, "NIU");
-	} else if (strncmp(path, TURGO_PCIX_SLOT1, TURGO_PCIX_COMP) == 0) {
-		(void) strcpy(card->bus_type, "PCIX");
-	} else if (strncmp(path, TURGO_PCIX_SLOT2, TURGO_PCIX_COMP) == 0) {
-		(void) strcpy(card->bus_type, "PCIX");
-	} else {
-		(void) strcpy(card->bus_type, "PCIE");
-	}
-}
-
-static void
-turgo_get_slot_number(char *path, struct io_card *card)
-{
-	if (strncmp(path, TURGO_N2_XAUI0,
-	    strlen(TURGO_N2_XAUI0)) == 0) {
-		(void) strcpy(card->slot_str, "0");
-		card->slot = 0;
-	} else if (strncmp(path, TURGO_N2_XAUI1,
-	    strlen(TURGO_N2_XAUI1)) == 0) {
-		(void) strcpy(card->slot_str, "1");
-		card->slot = 1;
-	} else if (strncmp(path, TURGO_PCIE_SLOT0,
-	    strlen(TURGO_PCIE_SLOT0)) == 0) {
-		(void) strcpy(card->slot_str, "0");
-		card->slot = 0;
-	} else if (strncmp(path, TURGO_PCIE_SLOT1,
-	    strlen(TURGO_PCIE_SLOT1)) == 0) {
-		(void) strcpy(card->slot_str, "1");
-		card->slot = 1;
-	} else if (strncmp(path, TURGO_PCIE_SLOT2,
-	    strlen(TURGO_PCIE_SLOT2)) == 0) {
-		(void) strcpy(card->slot_str, "2");
-		card->slot = 2;
-	} else if (strncmp(path, TURGO_PCIE_SLOT3,
-	    strlen(TURGO_PCIE_SLOT3)) == 0) {
-		(void) strcpy(card->slot_str, "3");
-		card->slot = 3;
-	} else if (strncmp(path, TURGO_PCIX_SLOT1,
-	    strlen(TURGO_PCIX_SLOT1)) == 0) {
-		(void) strcpy(card->slot_str, "1");
-		card->slot = 1;
-	} else if (strncmp(path, TURGO_PCIX_SLOT2,
-	    strlen(TURGO_PCIX_SLOT2)) == 0) {
-		(void) strcpy(card->slot_str, "2");
-		card->slot = 2;
-	} else {
-		(void) strcpy(card->slot_str, MOTHERBOARD);
-		card->slot = NO_SLOT;
-	}
-
-#ifdef	DEBUG
-	printf("DEBUG: path = %s, slot = %d\n", path, card->slot);
-#endif
-}
-
-static int
-turgo_get_network_instance(char *path)
-{
-	if (strcmp(path, TURGO_NETWORK_0) == 0) {
-		return (0);
-	} else if (strcmp(path, TURGO_NETWORK_1) == 0) {
-		return (1);
-	} else if (strcmp(path, TURGO_NETWORK_2) == 0) {
-		return (2);
-	} else if (strcmp(path, TURGO_NETWORK_3) == 0) {
-		return (3);
-	} else if (strcmp(path, TURGO_N2_XAUI0) == 0) {
-		return (0);
-	} else if (strcmp(path, TURGO_N2_XAUI1) == 0) {
-		return (1);
-	} else {
-		return (-1);
-	}
-}
-/*
- * add all io devices under pci in io list
- */
-/* ARGSUSED */
-int
-turgo_pci_callback(picl_nodehdl_t pcih, void *args)
-{
-	int		err = PICL_SUCCESS;
-	picl_nodehdl_t	nodeh;
-	char		path[MAXSTRLEN];
-	char		parent_path[MAXSTRLEN];
-	char		piclclass[PICL_CLASSNAMELEN_MAX];
-	char		name[MAXSTRLEN];
-	char		model[MAXSTRLEN];
-	char		*compatible;
-	char		binding_name[MAXSTRLEN];
-	struct io_card	pci_card;
-	int32_t		instance;
-
-	err = picl_get_propval_by_name(pcih, PICL_PROP_DEVFS_PATH, parent_path,
-	    sizeof (parent_path));
-	if (err != PICL_SUCCESS) {
-		return (err);
-	}
-
-	/* Walk through the children */
-	err = picl_get_propval_by_name(pcih, PICL_PROP_CHILD, &nodeh,
-	    sizeof (picl_nodehdl_t));
-
-	while (err == PICL_SUCCESS) {
-		err = picl_get_propval_by_name(nodeh, PICL_PROP_CLASSNAME,
-		    piclclass, sizeof (piclclass));
-		if (err !=  PICL_SUCCESS)
-			return (err);
-
-		if (strcmp(piclclass, "pciex") == 0) {
-			err = picl_get_propval_by_name(nodeh, PICL_PROP_PEER,
-			    &nodeh, sizeof (picl_nodehdl_t));
-			continue;
-		} else if (strcmp(piclclass, "sun4v") == 0) {
-			err = picl_get_propval_by_name(nodeh, PICL_PROP_CHILD,
-			    &nodeh, sizeof (picl_nodehdl_t));
-			continue;
-		} else if (strcmp(piclclass, "pci") == 0) {
-			err = picl_get_propval_by_name(nodeh, PICL_PROP_PEER,
-			    &nodeh, sizeof (picl_nodehdl_t));
-			continue;
-		}
-
-		err = picl_get_propval_by_name(nodeh, PICL_PROP_DEVFS_PATH,
-		    path, sizeof (path));
-		if (err != PICL_SUCCESS) {
-			return (err);
-		}
-
-		(void) strlcpy(pci_card.notes, path, sizeof (pci_card.notes));
-
-		turgo_get_bus_type(parent_path, &pci_card);
-
-		err = picl_get_propval_by_name(nodeh, PICL_PROP_NAME, &name,
-		    sizeof (name));
-		if (err == PICL_PROPNOTFOUND)
-			(void) strcpy(name, "");
-		else if (err != PICL_SUCCESS)
-			return (err);
-
-		if (strcmp(parent_path, TURGO_NIU) == 0)
-			turgo_get_slot_number(path, &pci_card);
-		else
-			turgo_get_slot_number(parent_path, &pci_card);
-
-		/* Figure out NAC name */
-		if ((strcmp(name, NETWORK) == 0) &&
-		    (strcmp(pci_card.slot_str, MOTHERBOARD) == 0)) {
-			instance = turgo_get_network_instance(path);
-			(void) snprintf(pci_card.status,
-			    sizeof (pci_card.status), "%s/%s%d", MOTHERBOARD,
-			    "NET", instance);
-		} else {
-			if (pci_card.slot != NO_SLOT) {
-				(void) snprintf(pci_card.status,
-				    sizeof (pci_card.status), "%s/%s%d",
-				    MOTHERBOARD, pci_card.bus_type,
-				    pci_card.slot);
-			} else {
-				(void) snprintf(pci_card.status,
-				    sizeof (pci_card.status), "%s/%s",
-				    MOTHERBOARD, pci_card.bus_type);
-			}
-		}
-
-		/*
-		 * Get the name of this card. If binding_name is found,
-		 * name will be <nodename>-<binding_name>
-		 */
-
-		err = picl_get_propval_by_name(nodeh, PICL_PROP_BINDING_NAME,
-		    &binding_name, sizeof (binding_name));
-		if (err == PICL_PROPNOTFOUND) {
-			/*
-			 * if compatible prop is found, name will be
-			 * <nodename>-<compatible>
-			 */
-			err = turgo_get_first_compatible_value(nodeh,
-			    &compatible);
-			if (err == PICL_SUCCESS) {
-				(void) strlcat(name, "-", MAXSTRLEN);
-				(void) strlcat(name, compatible, MAXSTRLEN);
-				free(compatible);
-			} else if (err != PICL_PROPNOTFOUND) {
-				return (err);
-			}
-		} else if (err != PICL_SUCCESS) {
-			return (err);
-		} else if (strcmp(name, binding_name) != 0) {
-			(void) strlcat(name, "-", MAXSTRLEN);
-			(void) strlcat(name, binding_name, MAXSTRLEN);
-		}
-
-		(void) strlcpy(pci_card.name, name, sizeof (pci_card.name));
-
-		/* Get the model of this card */
-
-		err = picl_get_propval_by_name(nodeh, OBP_PROP_MODEL,
-		    &model, sizeof (model));
-		if (err == PICL_PROPNOTFOUND)
-			(void) strcpy(model, "");
-		else if (err != PICL_SUCCESS)
-			return (err);
-		(void) strlcpy(pci_card.model, model, sizeof (pci_card.model));
-
-		/* Print NAC name */
-		log_printf("%-11s", pci_card.status);
-		/* Print IO Type */
-		log_printf("%6s", pci_card.bus_type);
-		/* Print Slot # */
-		log_printf("%5s", pci_card.slot_str);
-		/* Print Parent Path */
-		if (strlen(pci_card.notes) > 45)
-			log_printf("%45.44s+", pci_card.notes);
-		else
-			log_printf("%46.45s", pci_card.notes);
-		/* Printf Card Name */
-		if (strlen(pci_card.name) > 24)
-			log_printf("%25.24s+", pci_card.name);
-		else
-			log_printf("%26s", pci_card.name);
-		/* Print Card Model */
-		if (strlen(pci_card.model) > 10)
-			log_printf("%10.9s+", pci_card.model);
-		else
-			log_printf("%10s", pci_card.model);
-		log_printf("\n");
-
-		err = picl_get_propval_by_name(nodeh, PICL_PROP_PEER, &nodeh,
-		    sizeof (picl_nodehdl_t));
-
-	}
-
-	return (PICL_WALK_CONTINUE);
-}
-
-/*
- *  Add all IO ASIC revisions to list
- */
-/* ARGSUSED */
-int
-turgo_hw_rev_callback(picl_nodehdl_t pcih, void *args)
-{
-	int		err = PICL_SUCCESS;
-	char		path[MAXSTRLEN] = "";
-	char		device_path[MAXSTRLEN];
-	char		NAC[MAXSTRLEN];
-	char		*compatible;
-	int32_t		revision;
-	int		device_found = 0;
-
-	err = picl_get_propval_by_name(pcih, PICL_PROP_DEVFS_PATH, path,
-	    sizeof (path));
-	if (err != PICL_SUCCESS) {
-		return (err);
-	}
-
-	if ((strcmp(path, TURGO_NETWORK_0) == 0) ||
-	    (strcmp(path, TURGO_NETWORK_1) == 0)) {
-		device_found = 1;
-		(void) snprintf(NAC, sizeof (NAC), "%s/%s%d",
-		    MOTHERBOARD, OPHIR, 0);
-		revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID,
-		    &err);
-	} else if ((strcmp(path, TURGO_NETWORK_2) == 0) ||
-	    (strcmp(path, TURGO_NETWORK_3) == 0)) {
-		device_found = 1;
-		(void) snprintf(NAC, sizeof (NAC), "%s/%s%d", MOTHERBOARD,
-		    OPHIR, 1);
-		revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID,
-		    &err);
-	} else if (strcmp(path, TURGO_SWITCH_A_PATH) == 0) {
-		device_found = 1;
-		(void) snprintf(NAC, sizeof (NAC), "%s/%s",
-		    MOTHERBOARD, TURGO_SWITCH_A);
-		revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID,
-		    &err);
-	} else if (strcmp(path, TURGO_SWITCH_B_PATH) == 0) {
-		device_found = 1;
-		(void) snprintf(NAC, sizeof (NAC), "%s/%s", MOTHERBOARD,
-		    TURGO_SWITCH_B);
-		revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID,
-		    &err);
-	} else if (strcmp(path, TURGO_SWITCH_C_PATH) == 0) {
-		device_found = 1;
-		(void) snprintf(NAC, sizeof (NAC), "%s/%s", MOTHERBOARD,
-		    TURGO_SWITCH_C);
-		revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID,
-		    &err);
-	} else if (strcmp(path, TURGO_LSI_PATH) == 0) {
-		device_found = 1;
-		(void) snprintf(NAC, sizeof (NAC), "%s/%s", MOTHERBOARD,
-		    SAS_SATA_HBA);
-		revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID,
-		    &err);
-	} else if (strcmp(path, TURGO_PCIE_PCIX) == 0) {
-		device_found = 1;
-		(void) snprintf(NAC, sizeof (NAC), "%s/%s", MOTHERBOARD,
-		    PCIE_PCIX_BRIDGE);
-		revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID,
-		    &err);
-	}
-
-	if (device_found == 1) {
-		(void) strcpy(device_path, path);
-		err = turgo_get_first_compatible_value(pcih, &compatible);
-		if (err != PICL_SUCCESS) {
-			return (err);
-		}
-
-		/* Print NAC name */
-		log_printf("%-20s", NAC);
-		/* Print Device Path */
-		if (strlen(device_path) > 45)
-			log_printf("%45.44s+", device_path);
-		else
-			log_printf("%46s", device_path);
-		/* Print Compatible # */
-		log_printf("%31s", compatible);
-		free(compatible);
-		/* Print Revision */
-		log_printf("%6d", revision);
-		log_printf("\n");
-	}
-
-	return (PICL_WALK_CONTINUE);
-}
-
-/*
- * return the first compatible value
- */
-static int
-turgo_get_first_compatible_value(picl_nodehdl_t nodeh, char **outbuf)
-{
-	int		err;
-	picl_prophdl_t	proph;
-	picl_propinfo_t	pinfo;
-	picl_prophdl_t	tblh;
-	picl_prophdl_t	rowproph;
-	char		*pval;
-
-	err = picl_get_propinfo_by_name(nodeh, OBP_PROP_COMPATIBLE,
-	    &pinfo, &proph);
-	if (err != PICL_SUCCESS)
-		return (err);
-
-	if (pinfo.type == PICL_PTYPE_CHARSTRING) {
-		pval = malloc(pinfo.size);
-		if (pval == NULL)
-			return (PICL_FAILURE);
-		err = picl_get_propval(proph, pval, pinfo.size);
-		if (err != PICL_SUCCESS) {
-			free(pval);
-			return (err);
-		}
-		*outbuf = pval;
-		return (PICL_SUCCESS);
-	} else if (pinfo.type != PICL_PTYPE_TABLE)
-		return (PICL_FAILURE);
-
-	/* get first string from table */
-	err = picl_get_propval(proph, &tblh, pinfo.size);
-	if (err != PICL_SUCCESS)
-		return (err);
-
-	err = picl_get_next_by_row(tblh, &rowproph);
-	if (err != PICL_SUCCESS)
-		return (err);
-
-	err = picl_get_propinfo(rowproph, &pinfo);
-	if (err != PICL_SUCCESS)
-		return (err);
-
-	pval = malloc(pinfo.size);
-	if (pval == NULL)
-		return (PICL_FAILURE);
-
-	err = picl_get_propval(rowproph, pval, pinfo.size);
-	if (err != PICL_SUCCESS) {
-		free(pval);
-		return (err);
-	}
-
-	*outbuf = pval;
-	return (PICL_SUCCESS);
-}
-
-/*
- * return the revision of a device.
- */
-static int64_t
-turgo_get_int_propval(picl_nodehdl_t modh, char *prop_name, int *ret)
-{
-	int		err;
-	picl_prophdl_t	proph;
-	picl_propinfo_t	pinfo;
-	int8_t		int8v;
-	int16_t		int16v;
-	int32_t		int32v;
-	int64_t		int64v;
-
-	err = picl_get_propinfo_by_name(modh, prop_name, &pinfo, &proph);
-	if (err != PICL_SUCCESS) {
-		*ret = err;
-		return (0);
-	}
-
-	/*
-	 * If it is not an int, uint or byte array prop, return failure
-	 */
-	if ((pinfo.type != PICL_PTYPE_INT) &&
-	    (pinfo.type != PICL_PTYPE_UNSIGNED_INT) &&
-	    (pinfo.type != PICL_PTYPE_BYTEARRAY)) {
-		*ret = PICL_FAILURE;
-		return (0);
-	}
-
-	switch (pinfo.size) {
-	case sizeof (int8_t):
-		err = picl_get_propval(proph, &int8v, sizeof (int8v));
-		*ret = err;
-		return (int8v);
-	case sizeof (int16_t):
-		err = picl_get_propval(proph, &int16v, sizeof (int16v));
-		*ret = err;
-		return (int16v);
-	case sizeof (int32_t):
-		err = picl_get_propval(proph, &int32v, sizeof (int32v));
-		*ret = err;
-		return (int32v);
-	case sizeof (int64_t):
-		err = picl_get_propval(proph, &int64v, sizeof (int64v));
-		*ret = err;
-		return (int64v);
-	default:	/* not supported size */
-		*ret = PICL_FAILURE;
-		return (0);
-	}
-}
--- a/usr/src/lib/libprtdiag_psr/sparc/ontario/common/turgo.h	Thu Sep 13 19:59:30 2007 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-/*
- * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-/*
- * Sun4v Platform header file.
- *
- * 	called when :
- *      machine_type ==  turgo
- *
- */
-
-#ifndef _TURGO_H
-#define	_TURGO_H
-
-#pragma ident	"%Z%%M%	%I%	%E% SMI"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define	TURGO_PLATFORM		"SUNW,Netra-T5220"
-#define	TURGO_PCIE_COMP		30
-#define	TURGO_XAUI_COMP		17
-#define	TURGO_PCIX_COMP		30
-#define	NO_SLOT 		-1
-#define	MOTHERBOARD		"MB"
-#define	TURGO_SWITCH_A		"PCI-SWITCH0"
-#define	TURGO_SWITCH_B		"PCI-SWITCH1"
-#define	TURGO_SWITCH_C		"PCI-SWITCH2"
-#define	OPHIR			"GBE"
-#define	NETWORK			"network"
-#define	PCIE			"/PCIE"
-#define	PCIX			"/PCIX"
-#define	TURGO_NIU		"/niu@80"
-#define	TURGO_SWITCH_A_PATH	"/pci@0/pci@0"
-#define	TURGO_SWITCH_B_PATH	"/pci@0/pci@0/pci@8/pci@0"
-#define	TURGO_SWITCH_C_PATH	"/pci@0/pci@0/pci@1/pci@0"
-#define	TURGO_NETWORK_0		"/pci@0/pci@0/pci@1/pci@0/pci@2/network@0"
-#define	TURGO_NETWORK_1		"/pci@0/pci@0/pci@1/pci@0/pci@2/network@0,1"
-#define	TURGO_NETWORK_2		"/pci@0/pci@0/pci@1/pci@0/pci@3/network@0"
-#define	TURGO_NETWORK_3		"/pci@0/pci@0/pci@1/pci@0/pci@3/network@0,1"
-#define	TURGO_USB_0		"/pci@0/pci@0/pci@1/pci@0/pci@1/pci@0/usb@0"
-#define	TURGO_USB_1		"/pci@0/pci@0/pci@1/pci@0/pci@1/pci@0/usb@0,1"
-#define	TURGO_USB_2		"/pci@0/pci@0/pci@1/pci@0/pci@1/pci@0/usb@0,2"
-#define	TURGO_IDE		"/pci@0/pci@0/pci@1/pci@0/pci@1/pci@0/ide@1f"
-#define	TURGO_PCIE_SLOT0	"/pci@0/pci@0/pci@8/pci@0/pci@9"
-#define	TURGO_PCIE_SLOT1	"/pci@0/pci@0/pci@8/pci@0/pci@1"
-#define	TURGO_PCIE_SLOT2	"/pci@0/pci@0/pci@9"
-#define	TURGO_PCIE_SLOT3	"/pci@0/pci@0/pci@8/pci@0/pci@8"
-#define	TURGO_PCIE_PCIX	"/pci@0/pci@0/pci@8/pci@0/pci@2"
-#define	TURGO_PCIX_SLOT1	"/pci@0/pci@0/pci@8/pci@0/pci@2/pci@0,2/pci@1"
-#define	TURGO_PCIX_SLOT2	"/pci@0/pci@0/pci@8/pci@0/pci@2/pci@0"
-#define	TURGO_LSI_PATH		"/pci@0/pci@0/pci@2/scsi@0"
-#define	TURGO_N2_XAUI0		"/niu@80/network@1"
-#define	TURGO_N2_XAUI1		"/niu@80/network@0"
-#define	SAS_SATA_HBA		"SAS-SATA-HBA"
-#define	PCIE_PCIX_BRIDGE	"PCIE-PCIX-BRIDGE"
-
-
-
-/*
- * Property names
- */
-#define	OBP_PROP_REG		"reg"
-#define	OBP_PROP_CLOCK_FREQ	"clock-frequency"
-#define	OBP_PROP_BOARD_NUM	"board#"
-#define	OBP_PROP_REVISION_ID	"revision-id"
-#define	OBP_PROP_VERSION_NUM	"version#"
-#define	OBP_PROP_BOARD_TYPE	"board_type"
-#define	OBP_PROP_ECACHE_SIZE	"ecache-size"
-#define	OBP_PROP_IMPLEMENTATION	"implementation#"
-#define	OBP_PROP_MASK		"mask#"
-#define	OBP_PROP_COMPATIBLE	"compatible"
-#define	OBP_PROP_BANNER_NAME	"banner-name"
-#define	OBP_PROP_MODEL		"model"
-#define	OBP_PROP_66MHZ_CAPABLE	"66mhz-capable"
-#define	OBP_PROP_FBC_REG_ID	"fbc_reg_id"
-#define	OBP_PROP_VERSION	"version"
-#define	OBP_PROP_INSTANCE	"instance"
-
-/*
- * Function Headers
- */
-int turgo_pci_callback(picl_nodehdl_t pcih, void *args);
-int turgo_hw_rev_callback(picl_nodehdl_t pcih, void *args);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _TURGO_H */
--- a/usr/src/lib/libtsalarm/sparc/Makefile	Thu Sep 13 19:59:30 2007 -0700
+++ b/usr/src/lib/libtsalarm/sparc/Makefile	Thu Sep 13 22:03:23 2007 -0700
@@ -33,9 +33,9 @@
 PLATFORM_OBJECTS= tsalarm.o
 
 #
-# platform library directory (/usr/platform/SUNW,Sun-Fire-T200/lib)
+# platform library directory (/usr/platform/SUNW,Netra-T5220/lib)
 #
-PLATFORM=SUNW,Sun-Fire-T200
+PLATFORM=SUNW,Netra-T5220
 
 include ../Makefile.com
 
--- a/usr/src/pkgdefs/SUNWfmd/prototype_sparc	Thu Sep 13 19:59:30 2007 -0700
+++ b/usr/src/pkgdefs/SUNWfmd/prototype_sparc	Thu Sep 13 22:03:23 2007 -0700
@@ -206,4 +206,9 @@
 d none usr/platform/SUNW,Netra-CP3260/lib/fm/topo 755 root bin
 d none usr/platform/SUNW,Netra-CP3260/lib/fm/topo/maps 755 root bin
 f none usr/platform/SUNW,Netra-CP3260/lib/fm/topo/maps/Netra-CP3260-hc-topology.xml 444 root bin
-f none usr/platform/SUNW,Sun-Fire-T200/lib/fm/topo/maps/Netra-T5220-hc-topology.xml 444 root bin
+d none usr/platform/SUNW,Netra-T5220 755 root sys
+d none usr/platform/SUNW,Netra-T5220/lib 755 root bin
+d none usr/platform/SUNW,Netra-T5220/lib/fm 755 root bin
+d none usr/platform/SUNW,Netra-T5220/lib/fm/topo 755 root bin
+d none usr/platform/SUNW,Netra-T5220/lib/fm/topo/maps 755 root bin
+f none usr/platform/SUNW,Netra-T5220/lib/fm/topo/maps/Netra-T5220-hc-topology.xml 444 root bin
--- a/usr/src/pkgdefs/SUNWkvmt200.v/prototype_com	Thu Sep 13 19:59:30 2007 -0700
+++ b/usr/src/pkgdefs/SUNWkvmt200.v/prototype_com	Thu Sep 13 22:03:23 2007 -0700
@@ -53,6 +53,7 @@
 d none usr/platform/SUNW,Sun-Blade-T6320 755 root sys
 d none usr/platform/SUNW,SPARC-Enterprise-T5120 755 root sys
 d none usr/platform/SUNW,T5140 755 root sys
+d none usr/platform/SUNW,Netra-T5220 755 root sys
 #
 # create links to sun4v platform
 #
@@ -61,10 +62,11 @@
 s none usr/platform/SUNW,Sun-Blade-T6320/sbin=../sun4v/sbin
 s none usr/platform/SUNW,SPARC-Enterprise-T5120/sbin=../sun4v/sbin
 s none usr/platform/SUNW,T5140/sbin=../sun4v/sbin
+s none usr/platform/SUNW,Netra-T5220/sbin=../sun4v/sbin
 #
 # create include directory
 #
-d none usr/platform/SUNW,Sun-Fire-T200/include 755 root bin
+d none usr/platform/SUNW,Netra-T5220/include 755 root bin
 #
 # create lib directory 
 #
@@ -75,6 +77,7 @@
 d none usr/platform/SUNW,Sun-Blade-T6320/lib 755 root bin
 d none usr/platform/SUNW,SPARC-Enterprise-T5120/lib 755 root bin
 d none usr/platform/SUNW,T5140/lib 755 root bin
+d none usr/platform/SUNW,Netra-T5220/lib 755 root bin
 #
 # add binary and libraries for prtdiag
 #
@@ -92,6 +95,7 @@
 s none usr/platform/SUNW,Sun-Blade-T6320/lib/libpcp.so=../../sun4v/lib/libpcp.so
 s none usr/platform/SUNW,SPARC-Enterprise-T5120/lib/libpcp.so=../../sun4v/lib/libpcp.so
 s none usr/platform/SUNW,T5140/lib/libpcp.so=../../sun4v/lib/libpcp.so
+s none usr/platform/SUNW,Netra-T5220/lib/libpcp.so=../../sun4v/lib/libpcp.so
 
 s none usr/platform/SUNW,Sun-Fire-T200/lib/libpcp.so.1=../../sun4v/lib/libpcp.so.1
 s none usr/platform/SUNW,Netra-CP3060/lib/libpcp.so.1=../../sun4v/lib/libpcp.so.1
@@ -100,6 +104,7 @@
 s none usr/platform/SUNW,Sun-Blade-T6320/lib/libpcp.so.1=../../sun4v/lib/libpcp.so.1
 s none usr/platform/SUNW,SPARC-Enterprise-T5120/lib/libpcp.so.1=../../sun4v/lib/libpcp.so.1
 s none usr/platform/SUNW,T5140/lib/libpcp.so.1=../../sun4v/lib/libpcp.so.1
+s none usr/platform/SUNW,Netra-T5220/lib/libpcp.so.1=../../sun4v/lib/libpcp.so.1
 
 #
 # platform-dependent boot object
@@ -111,6 +116,7 @@
 s none usr/platform/SUNW,Sun-Blade-T6320/lib/fs=../../sun4v/lib/fs
 s none usr/platform/SUNW,SPARC-Enterprise-T5120/lib/fs=../../sun4v/lib/fs
 s none usr/platform/SUNW,T5140/lib/fs=../../sun4v/lib/fs
+s none usr/platform/SUNW,Netra-T5220/lib/fs=../../sun4v/lib/fs
 #
 # add erie link
 #
@@ -120,10 +126,6 @@
 #
 s none usr/platform/SUNW,Netra-T2000=SUNW,Sun-Fire-T200
 #
-# add turgo link
-#
-s none usr/platform/SUNW,Netra-T5220=SUNW,Sun-Fire-T200
-#
 # add huron 2U link
 #
 s none usr/platform/SUNW,SPARC-Enterprise-T5220=SUNW,SPARC-Enterprise-T5120
@@ -156,6 +158,6 @@
 #
 # add library for tsalarm
 #
-f none usr/platform/SUNW,Sun-Fire-T200/lib/libtsalarm.so.1 644 root bin
-s none usr/platform/SUNW,Sun-Fire-T200/lib/libtsalarm.so=./libtsalarm.so.1
-f none usr/platform/SUNW,Sun-Fire-T200/include/tsalarm.h 644 root bin
+f none usr/platform/SUNW,Netra-T5220/lib/libtsalarm.so.1 644 root bin
+s none usr/platform/SUNW,Netra-T5220/lib/libtsalarm.so=./libtsalarm.so.1
+f none usr/platform/SUNW,Netra-T5220/include/tsalarm.h 644 root bin
--- a/usr/src/pkgdefs/SUNWpiclu/prototype_sparc	Thu Sep 13 19:59:30 2007 -0700
+++ b/usr/src/pkgdefs/SUNWpiclu/prototype_sparc	Thu Sep 13 22:03:23 2007 -0700
@@ -162,6 +162,12 @@
 d none usr/platform/SUNW,T5140/lib/picl/plugins 755 root sys
 s none usr/platform/SUNW,T5140/lib/picl/plugins/libpiclsbl.so=../../../../SUNW,Sun-Fire-T200/lib/picl/plugins/libpiclsbl.so.1
 s none usr/platform/SUNW,T5140/lib/picl/plugins/libpiclsbl.so.1=../../../../SUNW,Sun-Fire-T200/lib/picl/plugins/libpiclsbl.so.1
+d none usr/platform/SUNW,Netra-T5220 755 root sys
+d none usr/platform/SUNW,Netra-T5220/lib 755 root bin
+d none usr/platform/SUNW,Netra-T5220/lib/picl 755 root sys
+d none usr/platform/SUNW,Netra-T5220/lib/picl/plugins 755 root sys
+s none usr/platform/SUNW,Netra-T5220/lib/picl/plugins/libpiclsbl.so=../../../../SUNW,Sun-Fire-T200/lib/picl/plugins/libpiclsbl.so.1
+s none usr/platform/SUNW,Netra-T5220/lib/picl/plugins/libpiclsbl.so.1=../../../../SUNW,Sun-Fire-T200/lib/picl/plugins/libpiclsbl.so.1
 d none usr/platform/SUNW,Sun-Fire-V240 755 root sys
 d none usr/platform/SUNW,Sun-Fire-V240/lib 755 root bin
 s none usr/platform/SUNW,Sun-Fire-V240/lib/libprtdiag_psr.so.1=../../SUNW,Sun-Blade-100/lib/libprtdiag_psr.so.1
--- a/usr/src/pkgdefs/etc/exception_list_sparc	Thu Sep 13 19:59:30 2007 -0700
+++ b/usr/src/pkgdefs/etc/exception_list_sparc	Thu Sep 13 22:03:23 2007 -0700
@@ -825,6 +825,7 @@
 usr/platform/SUNW,SPARC-Enterprise-T5120/lib/llib-lpcp.ln		sparc
 usr/platform/sun4v/lib/llib-lpcp.ln			sparc
 usr/platform/SUNW,Netra-CP3260/lib/llib-lpcp.ln		sparc
+usr/platform/SUNW,Netra-T5220/lib/llib-lpcp.ln		sparc
 #
 # ZFS internal tools and lint libraries
 #
--- a/usr/src/psm/stand/boot/sparcv9/sun4v/Makefile	Thu Sep 13 19:59:30 2007 -0700
+++ b/usr/src/psm/stand/boot/sparcv9/sun4v/Makefile	Thu Sep 13 22:03:23 2007 -0700
@@ -38,6 +38,7 @@
 PLATLINKS	+= SUNW,Sun-Blade-T6320
 PLATLINKS	+= SUNW,SPARC-Enterprise-T5120
 PLATLINKS	+= SUNW,T5140
+PLATLINKS	+= SUNW,Netra-T5220
 
 LINKED_DIRS	= $(PLATLINKS:%=$(USR_PLAT_DIR)/%)
 LINKED_LIB_DIRS	= $(PLATLINKS:%=$(USR_PLAT_DIR)/%/lib)
--- a/usr/src/uts/sun4v/Makefile	Thu Sep 13 19:59:30 2007 -0700
+++ b/usr/src/uts/sun4v/Makefile	Thu Sep 13 22:03:23 2007 -0700
@@ -34,6 +34,7 @@
 include Makefile.stpaul
 include Makefile.huron
 include Makefile.maramba
+include Makefile.turgo
 
 USR_GLENDALE_DIR	= $(USR_PLAT_DIR)/SUNW,Sun-Blade-T6320
 USR_GLENDALE_SBIN_DIR	= $(USR_GLENDALE_DIR)/sbin
@@ -197,7 +198,9 @@
 			$(USR_HURON_DIR) \
 			$(USR_HURON_SBIN_DIR) $(USR_HURON_LIB_DIR) \
 			$(USR_MARAMBA_DIR) $(USR_MARAMBA_SBIN_DIR) \
-			$(USR_MARAMBA_LIB_DIR)
+			$(USR_MARAMBA_LIB_DIR) \
+			$(USR_TURGO_DIR) $(USR_TURGO_SBIN_DIR) \
+			$(USR_TURGO_LIB_DIR)
 
 
 #
@@ -249,6 +252,15 @@
 $(USR_MARAMBA_LIB_DIR):		$(USR_MARAMBA_DIR)
 	-$(INS.dir.root.bin)
 
+$(USR_TURGO_DIR):		$(USR_SUN4V_PLAT_DIR)
+	-$(INS.dir.root.sys)
+
+$(USR_TURGO_SBIN_DIR):		$(USR_TURGO_DIR)
+	$(INS.slink5)
+
+$(USR_TURGO_LIB_DIR):		$(USR_TURGO_DIR)
+	-$(INS.dir.root.bin)
+
 #
 #	Full kernel lint target.
 #
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usr/src/uts/sun4v/Makefile.turgo	Thu Sep 13 22:03:23 2007 -0700
@@ -0,0 +1,37 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#
+#
+# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+# Use is subject to license terms.
+#
+#ident	"%Z%%M%	%I%	%E% SMI"
+#
+#	Global definitions for sun4v turgo implementation specific modules.
+#
+
+#
+#	Define directories.
+#
+
+USR_TURGO_DIR		= $(USR_PLAT_DIR)/SUNW,Netra-T5220
+USR_TURGO_SBIN_DIR	= $(USR_TURGO_DIR)/sbin
+USR_TURGO_LIB_DIR	= $(USR_TURGO_DIR)/lib
--- a/usr/src/uts/sun4v/ontario/Makefile	Thu Sep 13 19:59:30 2007 -0700
+++ b/usr/src/uts/sun4v/ontario/Makefile	Thu Sep 13 22:03:23 2007 -0700
@@ -70,7 +70,6 @@
 LINKED_PLATFORMS	= SUNW,Sun-Fire-T1000
 LINKED_PLATFORMS	+= SUNW,SPARC-Enterprise-T1000
 LINKED_PLATFORMS	+= SUNW,Netra-T2000
-LINKED_PLATFORMS	+= SUNW,Netra-T5220
 LINKED_PLATFORMS	+= SUNW,SPARC-Enterprise-T2000
 PPLINKED_PLATFORMS	= SUNW,Netra-T2000
 PPLINKED_PLATFORMS	+= SUNW,SPARC-Enterprise-T2000