struct mptsas_phyinfo *phy_info, int index) 
struct mptsas_phyinfo *phy_info, int index, int local) 
static int mptsas_probe_one_phy(struct device *dev,		struct mptsas_phyinfo *phy_info, int index){	struct sas_phy *port;	int error;	port = sas_phy_alloc(dev, index);	if (!port)		return -ENOMEM;	port->port_identifier = phy_info->port_id;	mptsas_parse_device_info(&port->identify, &phy_info->identify);	/*	 * Set Negotiated link rate.	 */	switch (phy_info->negotiated_link_rate) {	case MPI_SAS_IOUNIT0_RATE_PHY_DISABLED:		port->negotiated_linkrate = SAS_PHY_DISABLED;		break;	case MPI_SAS_IOUNIT0_RATE_FAILED_SPEED_NEGOTIATION:		port->negotiated_linkrate = SAS_LINK_RATE_FAILED;		break;	case MPI_SAS_IOUNIT0_RATE_1_5:		port->negotiated_linkrate = SAS_LINK_RATE_1_5_GBPS;		break;	case MPI_SAS_IOUNIT0_RATE_3_0:		port->negotiated_linkrate = SAS_LINK_RATE_3_0_GBPS;		break;	case MPI_SAS_IOUNIT0_RATE_SATA_OOB_COMPLETE:	case MPI_SAS_IOUNIT0_RATE_UNKNOWN:	default:		port->negotiated_linkrate = SAS_LINK_RATE_UNKNOWN;		break;	}	/*	 * Set Max hardware link rate.	 */	switch (phy_info->hw_link_rate & MPI_SAS_PHY0_PRATE_MAX_RATE_MASK) {	case MPI_SAS_PHY0_HWRATE_MAX_RATE_1_5:		port->maximum_linkrate_hw = SAS_LINK_RATE_1_5_GBPS;		break;	case MPI_SAS_PHY0_PRATE_MAX_RATE_3_0:		port->maximum_linkrate_hw = SAS_LINK_RATE_3_0_GBPS;		break;	default:		break;	}	/*	 * Set Max programmed link rate.	 */	switch (phy_info->programmed_link_rate &			MPI_SAS_PHY0_PRATE_MAX_RATE_MASK) {	case MPI_SAS_PHY0_PRATE_MAX_RATE_1_5:		port->maximum_linkrate = SAS_LINK_RATE_1_5_GBPS;		break;	case MPI_SAS_PHY0_PRATE_MAX_RATE_3_0:		port->maximum_linkrate = SAS_LINK_RATE_3_0_GBPS;		break;	default:		break;	}	/*	 * Set Min hardware link rate.	 */	switch (phy_info->hw_link_rate & MPI_SAS_PHY0_HWRATE_MIN_RATE_MASK) {	case MPI_SAS_PHY0_HWRATE_MIN_RATE_1_5:		port->minimum_linkrate_hw = SAS_LINK_RATE_1_5_GBPS;		break;	case MPI_SAS_PHY0_PRATE_MIN_RATE_3_0:		port->minimum_linkrate_hw = SAS_LINK_RATE_3_0_GBPS;		break;	default:		break;	}	/*	 * Set Min programmed link rate.	 */	switch (phy_info->programmed_link_rate &			MPI_SAS_PHY0_PRATE_MIN_RATE_MASK) {	case MPI_SAS_PHY0_PRATE_MIN_RATE_1_5:		port->minimum_linkrate = SAS_LINK_RATE_1_5_GBPS;		break;	case MPI_SAS_PHY0_PRATE_MIN_RATE_3_0:		port->minimum_linkrate = SAS_LINK_RATE_3_0_GBPS;		break;	default:		break;	}	error = sas_phy_add(port);	if (error) {		sas_phy_free(port);		return error;	}	if (phy_info->attached.handle) {		struct sas_rphy *rphy;		rphy = sas_rphy_alloc(port);		if (!rphy)			return 0; /* non-fatal: an rphy can be added later */		mptsas_parse_device_info(&rphy->identify, &phy_info->attached);		error = sas_rphy_add(rphy);		if (error) {			sas_rphy_free(rphy);			return error;		}		phy_info->rphy = rphy;	}	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/ac01bbbd3b7ebfca64357aed12cf476b16abe3ce/mptsas.c/clean/drivers/message/fusion/mptsas.c