Received: by 10.192.165.156 with SMTP id m28csp1115236imm; Wed, 11 Apr 2018 12:43:10 -0700 (PDT) X-Google-Smtp-Source: AIpwx48pUCA1rIlM93bWS3+oG+XrwdGeFh4ZhUljxdIpkKs3o15mfo8ymmwnhh/q3ITT0TIz1mfd X-Received: by 2002:a17:902:5381:: with SMTP id c1-v6mr6402757pli.234.1523475790064; Wed, 11 Apr 2018 12:43:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523475790; cv=none; d=google.com; s=arc-20160816; b=yDG8Ijg3OlpYMBj8sUjS0vlB78u5F1hkQ/NGcd0+SAVdW1o58wRhckLbgG1sMaKVrC Ote7SGNS3YFdv9+kC1Wch1IHs+jlSoE2doER3vx5V2UGcDStp9r1KISKnAXKz1E5SO4u LlDejd56RzaI4kdZOYhCq05XXh0dCkda36NA7U2/K/6j8tU/eZRckVQsLPlNLz5RB5hq fCYuech/6E0eU0x5tP2WqtpNvqajno9txX4/x7X03k9NslDoKtD1gw/NA+FLhJ05z/dy oJxovZO3QgCc6rbeAhjbcRakLO82HHjIZIVsfpw+GX847w9H+ZObA2x79E7CzEaINitj Bcwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=ReOhsz0jCiVvqrqbancqAKUZ3llP7mjMB6EO0dpykBM=; b=BiTO/L187QT9fB1aG0d7Z0/II8tf26ZwRuDJbT5ZDM1sPcx/H3TcK76J9i/HRZIiBX EKgOms87q9ZMYwLXxMu9y6LfmMKvFROvGVr8WoaP1UhHmMariT6xspa4zkP26W5z7Cz9 6ZCQCtnMtMuYrAKFhe+gbcj5ZxbHboH2kZxZ8YJgPLUoB/Au/moBpxHtZhJ8+Um/RzRQ JttXQExJxF5+ezPSaqgYzY+DrmMs+BbHrs2rDor+eoYxdSbW+p+rur2DyEgF1FU9YP4G 5hL48fX4Nvu3FM2qD2CtdSDPPXd1XLBoJBkJe3UgG43jRn3EIdJajyOsqmHblrLm0GNY usoA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j70si1116676pgc.81.2018.04.11.12.42.33; Wed, 11 Apr 2018 12:43:10 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757310AbeDKTgw (ORCPT + 99 others); Wed, 11 Apr 2018 15:36:52 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:38354 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934335AbeDKTB4 (ORCPT ); Wed, 11 Apr 2018 15:01:56 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id E06D3DAC; Wed, 11 Apr 2018 19:01:55 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Anilkumar Kolli , Kalle Valo , Sasha Levin Subject: [PATCH 4.9 176/310] ath10k: add BMI parameters to fix calibration from DT/pre-cal Date: Wed, 11 Apr 2018 20:35:15 +0200 Message-Id: <20180411183630.197106721@linuxfoundation.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180411183622.305902791@linuxfoundation.org> References: <20180411183622.305902791@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ From: Anilkumar Kolli [ Upstream commit a9f5f287fa1d47d61dfa8b60f94831174b2ea4d0 ] QCA99X0, QCA9888, QCA9984 supports calibration data in either OTP or DT/pre-cal file. Current ath10k supports Calibration data from OTP only. If caldata is loaded from DT/pre-cal file, fetching board id and applying calibration parameters like tx power gets failed. error log: [ 15.733663] ath10k_pci 0000:01:00.0: failed to fetch board file: -2 [ 15.741474] ath10k_pci 0000:01:00.0: could not probe fw (-2) This patch adds calibration data support from DT/pre-cal file. Below parameters are used to get board id and applying calibration parameters from cal data. EEPROM[OTP] FLASH[DT/pre-cal file] Cal param 0x700 0x10000 Board id 0x10 0x8000 Tested on QCA9888 with pre-cal file. Signed-off-by: Anilkumar Kolli Signed-off-by: Kalle Valo Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/net/wireless/ath/ath10k/bmi.h | 2 ++ drivers/net/wireless/ath/ath10k/core.c | 16 +++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) --- a/drivers/net/wireless/ath/ath10k/bmi.h +++ b/drivers/net/wireless/ath/ath10k/bmi.h @@ -83,6 +83,8 @@ enum bmi_cmd_id { #define BMI_NVRAM_SEG_NAME_SZ 16 #define BMI_PARAM_GET_EEPROM_BOARD_ID 0x10 +#define BMI_PARAM_GET_FLASH_BOARD_ID 0x8000 +#define BMI_PARAM_FLASH_SECTION_ALL 0x10000 #define ATH10K_BMI_BOARD_ID_FROM_OTP_MASK 0x7c00 #define ATH10K_BMI_BOARD_ID_FROM_OTP_LSB 10 --- a/drivers/net/wireless/ath/ath10k/core.c +++ b/drivers/net/wireless/ath/ath10k/core.c @@ -652,7 +652,7 @@ static int ath10k_core_get_board_id_from { u32 result, address; u8 board_id, chip_id; - int ret; + int ret, bmi_board_id_param; address = ar->hw_params.patch_load_addr; @@ -676,8 +676,13 @@ static int ath10k_core_get_board_id_from return ret; } - ret = ath10k_bmi_execute(ar, address, BMI_PARAM_GET_EEPROM_BOARD_ID, - &result); + if (ar->cal_mode == ATH10K_PRE_CAL_MODE_DT || + ar->cal_mode == ATH10K_PRE_CAL_MODE_FILE) + bmi_board_id_param = BMI_PARAM_GET_FLASH_BOARD_ID; + else + bmi_board_id_param = BMI_PARAM_GET_EEPROM_BOARD_ID; + + ret = ath10k_bmi_execute(ar, address, bmi_board_id_param, &result); if (ret) { ath10k_err(ar, "could not execute otp for board id check: %d\n", ret); @@ -739,6 +744,11 @@ static int ath10k_download_and_run_otp(s return ret; } + /* As of now pre-cal is valid for 10_4 variants */ + if (ar->cal_mode == ATH10K_PRE_CAL_MODE_DT || + ar->cal_mode == ATH10K_PRE_CAL_MODE_FILE) + bmi_otp_exe_param = BMI_PARAM_FLASH_SECTION_ALL; + ret = ath10k_bmi_execute(ar, address, bmi_otp_exe_param, &result); if (ret) { ath10k_err(ar, "could not execute otp (%d)\n", ret);