From patchwork Tue Jul 31 12:40:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislaw Gruszka X-Patchwork-Id: 10550733 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 87E4E13B8 for ; Tue, 31 Jul 2018 12:41:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 77A712AC3B for ; Tue, 31 Jul 2018 12:41:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 759B52AB0D; Tue, 31 Jul 2018 12:41:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 7AC352AB0D for ; Tue, 31 Jul 2018 12:41:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=xUnDB/x4Kz+m3vTZY8Rdx+QSDZixFjELwTnoJcN3nZ0=; b=Lov Z+O7Fhoxl7E3L/Jsu/qDxOoYfUhiRsBkU2Tk3ntnyOxFqtum4Qxt3OCJMryVEP3npHmoQwcDfyCj0 HHp/djsIlQ5AwaAPDBXbNKtCo7CnQyj/9SAUBHMJJ1JZjYVJiRoO6TPapHq8EN2VUlP72m9LEtqtN TLzL/DsFrXa+c3qEABubA8mGGcCeAeE+xVGsqxnP9izGIh8Br7DyNPnDQNfxSlPwjMmQ+pIep0MqA E66kLAJbocKP+MklokUnop5V723kM5DyB9vYmkIxFYeriy1lSVXZXg1wv+GhZ3ndDao0WTSeGCtsc Te0/QWa8lZELT2Yg9OKRqd0oOnRHstQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1fkTxu-0004D4-KD for patchwork-linux-mediatek@patchwork.kernel.org; Tue, 31 Jul 2018 12:41:26 +0000 Received: from mx3-rdu2.redhat.com ([66.187.233.73] helo=mx1.redhat.com) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fkTxq-0004AL-S5 for linux-mediatek@lists.infradead.org; Tue, 31 Jul 2018 12:41:24 +0000 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 187A04021701; Tue, 31 Jul 2018 12:41:11 +0000 (UTC) Received: from localhost (unknown [10.43.2.11]) by smtp.corp.redhat.com (Postfix) with ESMTP id D825610EE826; Tue, 31 Jul 2018 12:41:07 +0000 (UTC) From: Stanislaw Gruszka To: linux-wireless@vger.kernel.org Subject: [PATCH v3 00/14] Add mt76x0 driver Date: Tue, 31 Jul 2018 14:40:50 +0200 Message-Id: <1533040864-9026-1-git-send-email-sgruszka@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Tue, 31 Jul 2018 12:41:11 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Tue, 31 Jul 2018 12:41:11 +0000 (UTC) for IP:'10.11.54.3' DOMAIN:'int-mx03.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'sgruszka@redhat.com' RCPT:'' X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180731_054123_086934_3F635BF4 X-CRM114-Status: GOOD ( 12.23 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Stanislaw Gruszka , Jakub Kicinski , Hans Ulli Kroll , Michal Schmidt , linux-mediatek@lists.infradead.org, Lorenzo Bianconi , Felix Fietkau MIME-Version: 1.0 Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+patchwork-linux-mediatek=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Add mt76x0 driver for MT7610U based USB dongles. Currently driver support only STA mode. mt76x0 is based on Jakub's mt7601u driver already included in the kernel. I would like the driver be integrated as part of mt76 (instead of separate driver in mediatek dir like mt7601u) to utilize mt76 code for adding support for MT76x0 PCIe devices in further development. To do not collide with current mt76x2u work from Lorenzo, I did not remove some code duplication. This will be done in the future as well as add support for MT76x0 PCIe devices (i.e. MT7630E). My and Lorenzo integration efforts can be traced here: https://github.com/sgruszka/wireless-drivers-next/commits/mt76x0-draft-v2 mt7610u.bin file will be posted to linux-firmware tree as Sean Wang at Mediatek gave us permission to do so. Patches has to be applied on top of mt76x2u: https://marc.info/?l=linux-wireless&m=153302456826820&w=2 v2 -> v3 - fixup monitor mode config - declare some functions static (reported by kbuild test) - change firmware location and add "u" suffix - fix MCU intialization after system reboot v1 -> v2: - add missed mac.c file! - fix uninitialized variables reported by kbuild test - fix rate estimation - check for skb allocation Stanislaw Gruszka (14): mt76x0: core files mt76x0: mac files mt76x0: usb files mt76x0: mcu files mt76x0: phy files mt76x0: init files mt76x0: eeprom files mt76x0: trace and debugfs files mt76x0: dma and tx files mt76x0: main file mt76: add more states mt76: Kconfig and Makefile for mt76x0 driver mt76x0: disable HW before probe mt76x0: load firmware from mediatek subdir drivers/net/wireless/mediatek/mt76/Kconfig | 7 + drivers/net/wireless/mediatek/mt76/Makefile | 1 + drivers/net/wireless/mediatek/mt76/mt76.h | 2 + drivers/net/wireless/mediatek/mt76/mt76x0/Makefile | 7 + drivers/net/wireless/mediatek/mt76/mt76x0/core.c | 34 + .../net/wireless/mediatek/mt76/mt76x0/debugfs.c | 166 ++++ drivers/net/wireless/mediatek/mt76/mt76x0/dma.c | 522 ++++++++++ drivers/net/wireless/mediatek/mt76/mt76x0/dma.h | 126 +++ drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.c | 445 +++++++++ drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.h | 149 +++ drivers/net/wireless/mediatek/mt76/mt76x0/init.c | 720 ++++++++++++++ .../net/wireless/mediatek/mt76/mt76x0/initvals.h | 282 ++++++ .../wireless/mediatek/mt76/mt76x0/initvals_phy.h | 772 +++++++++++++++ drivers/net/wireless/mediatek/mt76/mt76x0/mac.c | 660 +++++++++++++ drivers/net/wireless/mediatek/mt76/mt76x0/mac.h | 154 +++ drivers/net/wireless/mediatek/mt76/mt76x0/main.c | 403 ++++++++ drivers/net/wireless/mediatek/mt76/mt76x0/mcu.c | 656 +++++++++++++ drivers/net/wireless/mediatek/mt76/mt76x0/mcu.h | 101 ++ drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0.h | 336 +++++++ drivers/net/wireless/mediatek/mt76/mt76x0/phy.c | 1008 ++++++++++++++++++++ drivers/net/wireless/mediatek/mt76/mt76x0/phy.h | 81 ++ drivers/net/wireless/mediatek/mt76/mt76x0/regs.h | 651 +++++++++++++ drivers/net/wireless/mediatek/mt76/mt76x0/trace.c | 21 + drivers/net/wireless/mediatek/mt76/mt76x0/trace.h | 366 +++++++ drivers/net/wireless/mediatek/mt76/mt76x0/tx.c | 270 ++++++ drivers/net/wireless/mediatek/mt76/mt76x0/usb.c | 381 ++++++++ drivers/net/wireless/mediatek/mt76/mt76x0/usb.h | 61 ++ drivers/net/wireless/mediatek/mt76/mt76x0/util.c | 42 + 28 files changed, 8424 insertions(+) create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/Makefile create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/core.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/debugfs.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/dma.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/dma.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/init.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/initvals.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/initvals_phy.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/mac.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/mac.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/main.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/mcu.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/mcu.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/phy.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/phy.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/regs.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/trace.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/trace.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/tx.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/usb.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/usb.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt76x0/util.c