From patchwork Thu Nov 9 23:38:28 2017 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: 10052083 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 DDBBC6032D for ; Thu, 9 Nov 2017 23:39:17 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D11382B1C1 for ; Thu, 9 Nov 2017 23:39:17 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C621B2B1C5; Thu, 9 Nov 2017 23:39:17 +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=unavailable 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 7ADCA2B1C1 for ; Thu, 9 Nov 2017 23:39:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755374AbdKIXjD (ORCPT ); Thu, 9 Nov 2017 18:39:03 -0500 Received: from mail-wr0-f194.google.com ([209.85.128.194]:50864 "EHLO mail-wr0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755348AbdKIXi7 (ORCPT ); Thu, 9 Nov 2017 18:38:59 -0500 Received: by mail-wr0-f194.google.com with SMTP id p96so7085043wrb.7; Thu, 09 Nov 2017 15:38:58 -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=DyvtRvW899oyx4c5fKLlexgASH9KpsJIB0LpO1KPhSc=; b=X+AI48WUuw6TK+GgkbitmWK1vUeEQ8QnHFO/4E+vUy/j1JxzOEypM0NbTcoGttirMB 3s2vTTGJ4MQsEUlDDA4tQcenpUx9EGC2WN7U497WHHP/fOtsUv1Xojwu11igo/U1MNEt /k34MZuz3nJ1+52pwP5ZDMHlM1+K89kuQuhC0WCX8uReoszVuUrR8GXLf3ZCpgTGXP9W BdMcJb0jJ98X7ZBBsMPhdNE1XaX28Efr4ij92bULlsM5JN/Buo+ZpVoxsg7X60tpmylD W09aEPPdhbSFCKwuslhu3eSaiD3+KEMds1aIa1Td25XidmVF/icB8jIjc6cxzYqlBNTX BCFw== 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=DyvtRvW899oyx4c5fKLlexgASH9KpsJIB0LpO1KPhSc=; b=YUB06sj90D9BPuIU4HOmGlTTsUVXKRGyfp2TraXN91A1vjJc5ZTUS9pkOmb+R4XJt3 vCoco6H/Pt07zxRSAbhO1gasngBta8wyH22EHO1HdCghdw7F9TBlxhsnWe5I9idcpoXf gh2hn4wS7zz42ac1PBKGkiM6ZNglB9JnG6RwUl/PexwkIal9iFp0QJzslAexJPrwsR8a tlBiHYMsBeS5zP/YhYft9UWB4ZBO/DfM/EojTDwKbjmNWedBzAdSd0fzXn7nAWUZlIDG OUKfOKDVV8tGfAP2bFXOA1WkLOFhHPkhPdmOe2io7qxyZQE4OiQCBaZalk0MvBUvkSHP ZDkw== X-Gm-Message-State: AJaThX5kixLEIBFLij1njNRB81P7hg/oZ+XKttrFW6FDINZyngRXmMjv 6nk5mnRKaCubDePlqIwno08= X-Google-Smtp-Source: ABhQp+RsjQh3uRq6Cvs2BqVpKNk5sbW37Dydtuhhdo3lFUiX6ep/wy2Qo6xFuQU6r7VjV5osbn8+wQ== X-Received: by 10.223.182.158 with SMTP id j30mr1642085wre.242.1510270737536; Thu, 09 Nov 2017 15:38:57 -0800 (PST) Received: from Pali-Latitude.lan (pali.kolej.mff.cuni.cz. [78.128.193.202]) by smtp.gmail.com with ESMTPSA id 55sm9578181wrw.60.2017.11.09.15.38.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 09 Nov 2017 15:38:56 -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 v2 6/6] wl1251: Use request_firmware_prefer_user() for loading NVS calibration data Date: Fri, 10 Nov 2017 00:38:28 +0100 Message-Id: <1510270708-14377-7-git-send-email-pali.rohar@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1510270708-14377-1-git-send-email-pali.rohar@gmail.com> References: <1482598381-16513-1-git-send-email-pali.rohar@gmail.com> <1510270708-14377-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. Userspace tool for reading NVS calibration data on Nokia N900 is available in git repository at: https://github.com/community-ssu/wl1251-cal 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 1f423be..e9d232c 100644 --- a/drivers/net/wireless/ti/wl1251/main.c +++ b/drivers/net/wireless/ti/wl1251/main.c @@ -108,7 +108,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);