From patchwork Sat Dec 24 16:52:57 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Pali_Roh=C3=A1r?= X-Patchwork-Id: 9488079 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 3A5C462AAF for ; Sat, 24 Dec 2016 16:57:33 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2B15220952 for ; Sat, 24 Dec 2016 16:57:33 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1EC28212D9; Sat, 24 Dec 2016 16:57:33 +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=-6.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B575E20952 for ; Sat, 24 Dec 2016 16:57:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755001AbcLXQ5V (ORCPT ); Sat, 24 Dec 2016 11:57:21 -0500 Received: from mail-wm0-f68.google.com ([74.125.82.68]:33957 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753547AbcLXQ5T (ORCPT ); Sat, 24 Dec 2016 11:57:19 -0500 Received: by mail-wm0-f68.google.com with SMTP id c85so8813327wmi.1; Sat, 24 Dec 2016 08:54:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=f2YOv0ZMmoCHL4lkEg5s9xjNR0yCOh2NSfP7DApilpA=; b=WUfrjUb/3eMkNd+cXGGk3uhwRpBGzPVuyJr/E6AmF0yndGwHjUYqgO54PS0qvJc6t6 RrUum4HgYvEx57FIwmguHeVS1nXc/ttDLKylfbKTBbCBDbakDi/KoVbt/qnqNlYyhwzB edhkLx/Jg6m4QQADRL9+xB0PxnvvNJEqvoLQYnW4nzvgzcDjkZf5MM4j/pUJX3diV14m 1gkgT/DuOREljt0tJmGtp0JGQjOEZ2MEKOWhxUq8NtbejvGlfEXW1MjmvWmPm21bbFsa yENCana8bDgubR3j1N51a3xcKJxphq1JzncD6lSZAe67zJ0JnYK+giAwpMGgsmaL7LCe N+Cg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=f2YOv0ZMmoCHL4lkEg5s9xjNR0yCOh2NSfP7DApilpA=; b=A5Y2OmqSyzCqRLBShkFLBPBln5y4IYeOocKl351R/ouojLDDNRZRrcy3i3J1vBMf8o Iz1AfQScGqKhsUR4Wz9AM+ZmIbDlZwJVCOgbTu7tx2T5idWQjyeRBuxFFVZMicXh8v6o hJBMVem5k7vlwY27QTxnJPH1sQuqJhdjT1lY38SHg8KNY2B3BrdqFd5csI5zFvp+GbaG hcNlN/6D8OX8R4wKp9BACOcObxgG1Li9LVCrbLCb3g/2a7eHigVeB3R+//6mJrkfXz+3 3w6d/b/Nh36f+9krCwSV+C6kIHMcqc9X9bHGRZd9AG29JrjrGhrLcP4gejpDbuRBXlF+ 0FHg== X-Gm-Message-State: AIkVDXJTSEB03sdLXm2I239ztbjupYmDLOGuVt6JBeOAOw5vO4owfoPC8RrsywJSt0BQsg== X-Received: by 10.28.185.203 with SMTP id j194mr17204514wmf.73.1482598447301; Sat, 24 Dec 2016 08:54:07 -0800 (PST) Received: from localhost.localdomain (ip-88-212-34-237.antik.sk. [88.212.34.237]) by smtp.gmail.com with ESMTPSA id b15sm42736940wma.5.2016.12.24.08.54.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 24 Dec 2016 08:54:06 -0800 (PST) From: =?UTF-8?q?Pali=20Roh=C3=A1r?= To: Ming Lei , "Luis R. Rodriguez" , Greg Kroah-Hartman , Kalle Valo , David Gnedt , Michal Kazior , Daniel Wagner , Tony Lindgren , Sebastian Reichel , Pavel Machek , Ivaylo Dimitrov , Aaro Koskinen , Grazvydas Ignotas Cc: linux-kernel@vger.kernel.org, linux-wireless@vger.kernel.org, netdev@vger.kernel.org, =?UTF-8?q?Pali=20Roh=C3=A1r?= Subject: [PATCH 2/6] wl1251: Use request_firmware_prefer_user() for loading NVS calibration data Date: Sat, 24 Dec 2016 17:52:57 +0100 Message-Id: <1482598381-16513-3-git-send-email-pali.rohar@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1482598381-16513-1-git-send-email-pali.rohar@gmail.com> References: <1482598381-16513-1-git-send-email-pali.rohar@gmail.com> MIME-Version: 1.0 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP NVS calibration data for wl1251 are model specific. Every one device with wl1251 chip has different and calibrated in factory. Not all wl1251 chips have own EEPROM where are calibration data stored. And in that case there is no "standard" place. Every device has stored them on different place (some in rootfs file, some in dedicated nand partition, some in another proprietary structure). Kernel wl1251 driver cannot support every one different storage decided by device manufacture so it will use request_firmware_prefer_user() call for loading NVS calibration data and userspace helper will be responsible to prepare correct data. In case userspace helper fails request_firmware_prefer_user() still try to load data file directly from VFS as fallback mechanism. On Nokia N900 device which has wl1251 chip, NVS calibration data are stored in CAL nand partition. CAL is proprietary Nokia key/value format for nand devices. With this patch it is finally possible to load correct model specific NVS calibration data for Nokia N900. Signed-off-by: Pali Rohár --- drivers/net/wireless/ti/wl1251/Kconfig | 1 + drivers/net/wireless/ti/wl1251/main.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/ti/wl1251/Kconfig b/drivers/net/wireless/ti/wl1251/Kconfig index 7142ccf..affe154 100644 --- a/drivers/net/wireless/ti/wl1251/Kconfig +++ b/drivers/net/wireless/ti/wl1251/Kconfig @@ -2,6 +2,7 @@ config WL1251 tristate "TI wl1251 driver support" depends on MAC80211 select FW_LOADER + select FW_LOADER_USER_HELPER select CRC7 ---help--- This will enable TI wl1251 driver support. The drivers make diff --git a/drivers/net/wireless/ti/wl1251/main.c b/drivers/net/wireless/ti/wl1251/main.c index 208f062..24f8866 100644 --- a/drivers/net/wireless/ti/wl1251/main.c +++ b/drivers/net/wireless/ti/wl1251/main.c @@ -110,7 +110,7 @@ static int wl1251_fetch_nvs(struct wl1251 *wl) struct device *dev = wiphy_dev(wl->hw->wiphy); int ret; - ret = request_firmware(&fw, WL1251_NVS_NAME, dev); + ret = request_firmware_prefer_user(&fw, WL1251_NVS_NAME, dev); if (ret < 0) { wl1251_error("could not get nvs file: %d", ret);