From owner-p4-projects@FreeBSD.ORG Sun Jun 14 11:01:20 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B09DB1065670; Sun, 14 Jun 2009 11:01:19 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4DBBB106566B for ; Sun, 14 Jun 2009 11:01:19 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 1EF138FC08 for ; Sun, 14 Jun 2009 11:01:19 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n5EB1JrK095563 for ; Sun, 14 Jun 2009 11:01:19 GMT (envelope-from mav@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n5EB1IAx095561 for perforce@freebsd.org; Sun, 14 Jun 2009 11:01:19 GMT (envelope-from mav@freebsd.org) Date: Sun, 14 Jun 2009 11:01:19 GMT Message-Id: <200906141101.n5EB1IAx095561@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mav@freebsd.org using -f From: Alexander Motin To: Perforce Change Reviews Cc: Subject: PERFORCE change 164327 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Jun 2009 11:01:20 -0000 http://perforce.freebsd.org/chv.cgi?CH=164327 Change 164327 by mav@mav_mavbook on 2009/06/14 11:00:31 Allow maximum speed to be controlled via loader tunable. Limit default for for my onboard JMicron HBA's external port, which is not really eSATA capable. Affected files ... .. //depot/projects/scottl-camlock/src/sys/dev/ahci/ahci.c#28 edit .. //depot/projects/scottl-camlock/src/sys/dev/ahci/ahci.h#13 edit Differences ... ==== //depot/projects/scottl-camlock/src/sys/dev/ahci/ahci.c#28 (text+ko) ==== @@ -510,6 +510,15 @@ ch->numslots = ((ch->caps & AHCI_CAP_NCS) >> AHCI_CAP_NCS_SHIFT) + 1, resource_int_value(device_get_name(dev), device_get_unit(dev), "pm_level", &ch->pm_level); + /* Limit speed for my onboard JMicron external port. + * It is not eSATA really. */ + if (pci_get_devid(ctlr->dev) == 0x2363197b && + pci_get_subvendor(ctlr->dev) == 0x1043 && + pci_get_subdevice(ctlr->dev) == 0x81e4 && + ch->unit == 0) + ch->sata_rev = 1; + resource_int_value(device_get_name(dev), + device_get_unit(dev), "sata_rev", &ch->sata_rev); mtx_init(&ch->mtx, "AHCI channel lock", NULL, MTX_DEF); rid = ch->unit; if (!(ch->r_mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, @@ -1517,8 +1526,16 @@ ATA_OUTL(ch->r_mem, AHCI_P_SCTL, ATA_SC_IPM_DIS_PARTIAL | ATA_SC_IPM_DIS_SLUMBER | ATA_SC_DET_RESET); DELAY(50000); + if (ch->sata_rev == 1) + val = ATA_SC_SPD_SPEED_GEN1; + else if (ch->sata_rev == 2) + val = ATA_SC_SPD_SPEED_GEN2; + else if (ch->sata_rev == 3) + val = ATA_SC_SPD_SPEED_GEN3; + else + val = 0; ATA_OUTL(ch->r_mem, AHCI_P_SCTL, - ATA_SC_DET_IDLE | ATA_SC_SPD_SPEED_GEN1 | ((ch->pm_level > 0) ? 0 : + ATA_SC_DET_IDLE | val | ((ch->pm_level > 0) ? 0 : (ATA_SC_IPM_DIS_PARTIAL | ATA_SC_IPM_DIS_SLUMBER))); DELAY(50000); return (ahci_sata_connect(ch)); ==== //depot/projects/scottl-camlock/src/sys/dev/ahci/ahci.h#13 (text+ko) ==== @@ -338,6 +338,7 @@ uint32_t caps; /* Controller capabilities */ int numslots; /* Number of present slots */ int pm_level; /* power management level */ + int sata_rev; /* Maximum allowed SATA generation */ struct ahci_slot slot[AHCI_MAX_SLOTS]; struct mtx mtx; /* state lock */