From owner-svn-src-all@freebsd.org Sat May 14 23:23:51 2016 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5BED3B3BA03; Sat, 14 May 2016 23:23:51 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3718616DB; Sat, 14 May 2016 23:23:51 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u4ENNoBt084005; Sat, 14 May 2016 23:23:50 GMT (envelope-from adrian@FreeBSD.org) Received: (from adrian@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u4ENNoGN084004; Sat, 14 May 2016 23:23:50 GMT (envelope-from adrian@FreeBSD.org) Message-Id: <201605142323.u4ENNoGN084004@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: adrian set sender to adrian@FreeBSD.org using -f From: Adrian Chadd Date: Sat, 14 May 2016 23:23:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r299780 - head/sys/dev/bwn X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 May 2016 23:23:51 -0000 Author: adrian Date: Sat May 14 23:23:50 2016 New Revision: 299780 URL: https://svnweb.freebsd.org/changeset/base/299780 Log: [bwn] add in new microcode and phy initval information. This is required for PHY-N and later hardware. Tested: * BCN4321 (11abgn), PHY-N Modified: head/sys/dev/bwn/if_bwn.c Modified: head/sys/dev/bwn/if_bwn.c ============================================================================== --- head/sys/dev/bwn/if_bwn.c Sat May 14 23:22:52 2016 (r299779) +++ head/sys/dev/bwn/if_bwn.c Sat May 14 23:23:50 2016 (r299780) @@ -3731,21 +3731,84 @@ bwn_fw_gets(struct bwn_mac *mac, enum bw int error; /* microcode */ - if (rev >= 5 && rev <= 10) - filename = "ucode5"; - else if (rev >= 11 && rev <= 12) - filename = "ucode11"; - else if (rev == 13) - filename = "ucode13"; - else if (rev == 14) - filename = "ucode14"; - else if (rev >= 15) + filename = NULL; + switch (rev) { + case 42: + if (mac->mac_phy.type == BWN_PHYTYPE_AC) + filename = "ucode42"; + break; + case 40: + if (mac->mac_phy.type == BWN_PHYTYPE_AC) + filename = "ucode40"; + break; + case 33: + if (mac->mac_phy.type == BWN_PHYTYPE_LCN40) + filename = "ucode33_lcn40"; + break; + case 30: + if (mac->mac_phy.type == BWN_PHYTYPE_N) + filename = "ucode30_mimo"; + break; + case 29: + if (mac->mac_phy.type == BWN_PHYTYPE_HT) + filename = "ucode29_mimo"; + break; + case 26: + if (mac->mac_phy.type == BWN_PHYTYPE_HT) + filename = "ucode26_mimo"; + break; + case 28: + case 25: + if (mac->mac_phy.type == BWN_PHYTYPE_N) + filename = "ucode25_mimo"; + else if (mac->mac_phy.type == BWN_PHYTYPE_LCN) + filename = "ucode25_lcn"; + break; + case 24: + if (mac->mac_phy.type == BWN_PHYTYPE_LCN) + filename = "ucode24_lcn"; + break; + case 23: + if (mac->mac_phy.type == BWN_PHYTYPE_N) + filename = "ucode16_mimo"; + break; + case 16: + case 17: + case 18: + case 19: + if (mac->mac_phy.type == BWN_PHYTYPE_N) + filename = "ucode16_mimo"; + else if (mac->mac_phy.type == BWN_PHYTYPE_LP) + filename = "ucode16_lp"; + break; + case 15: filename = "ucode15"; - else { + break; + case 14: + filename = "ucode14"; + break; + case 13: + filename = "ucode13"; + break; + case 12: + case 11: + filename = "ucode11"; + break; + case 10: + case 9: + case 8: + case 7: + case 6: + case 5: + filename = "ucode5"; + break; + default: device_printf(sc->sc_dev, "no ucode for rev %d\n", rev); bwn_release_firmware(mac); return (EOPNOTSUPP); } + + device_printf(sc->sc_dev, "ucode fw: %s\n", filename); error = bwn_fw_get(mac, type, filename, &fw->ucode); if (error) { bwn_release_firmware(mac); @@ -3797,7 +3860,17 @@ bwn_fw_gets(struct bwn_mac *mac, enum bw goto fail1; break; case BWN_PHYTYPE_N: - if (rev >= 11 && rev <= 12) + if (rev == 30) + filename = "n16initvals30"; + else if (rev == 28 || rev == 25) + filename = "n0initvals25"; + else if (rev == 24) + filename = "n0initvals24"; + else if (rev == 23) + filename = "n0initvals16"; + else if (rev >= 16 && rev <= 18) + filename = "n0initvals16"; + else if (rev >= 11 && rev <= 12) filename = "n0initvals11"; else goto fail1; @@ -3843,12 +3916,24 @@ bwn_fw_gets(struct bwn_mac *mac, enum bw goto fail1; break; case BWN_PHYTYPE_N: - if (rev >= 11 && rev <= 12) + if (rev == 30) + filename = "n16bsinitvals30"; + else if (rev == 28 || rev == 25) + filename = "n0bsinitvals25"; + else if (rev == 24) + filename = "n0bsinitvals24"; + else if (rev == 23) + filename = "n0bsinitvals16"; + else if (rev >= 16 && rev <= 18) + filename = "n0bsinitvals16"; + else if (rev >= 11 && rev <= 12) filename = "n0bsinitvals11"; else goto fail1; break; default: + device_printf(sc->sc_dev, "unknown phy (%d)\n", + mac->mac_phy.type); goto fail1; } error = bwn_fw_get(mac, type, filename, &fw->initvals_band); @@ -3858,7 +3943,8 @@ bwn_fw_gets(struct bwn_mac *mac, enum bw } return (0); fail1: - device_printf(sc->sc_dev, "no INITVALS for rev %d\n", rev); + device_printf(sc->sc_dev, "no INITVALS for rev %d, phy.type %d\n", + rev, mac->mac_phy.type); bwn_release_firmware(mac); return (EOPNOTSUPP); }