Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2190508imu; Thu, 10 Jan 2019 09:44:13 -0800 (PST) X-Google-Smtp-Source: ALg8bN6tzFiePgO4cra6me3K6n6tm7hegLFqvMqfmIX2xszDeSYsqkYT/cj24sImO8G7iHepLxBf X-Received: by 2002:a17:902:96a:: with SMTP id 97mr10874324plm.45.1547142253560; Thu, 10 Jan 2019 09:44:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1547142253; cv=none; d=google.com; s=arc-20160816; b=wSLybpya7miKehbNLgY9UFv2uXUTb6Vsm82xH5H+U/myDj2D/rOJacKFdwiFey8yzh H0cba+3dPZ9hGkne9j4z9QDelgvp4AOrqvyPJVKV7zqbfRAgDjVKC5KZhGk7sHvIDSO+ +/g0V7msUoX2aQuK2iYAXRmyx2Ot0nyUHGqZPGbq78umk6OCF1XBRyUvgp7aEGQGyDZ4 iPOPvcwTYi28TXoYxBD212TpNPPvoQxiLvn8ABqnVWQ5VHRpjmyeyQ4MuaykC8zE4PwG 9EfZ6LUiGSMNnnSs5A03JgvP2InFwtWwhHiI7/3ReikwOwreg4l5k0rvPf1pIffhpjPg VOPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=9+nykkYjjwFDbneI9DfLbuVuJbCz3vxDVLsUiamBKy8=; b=diSy5KffEgI02Z13STCsPpEtlRGuA3DiFimHaHXNZNDV0I3ITkPEM2uouU1aADW4zj Qo6mRgOhN5YI4VJ7ErNyj6yltoQ3KT/jEyxtajcUV4lvjzBCcXAyO1gdONOZhURSvyur QulMC4NCF67sw8HYDLcO7nReBcif/XA/4WZ1zXmIZZ5ZoLsPqheiK/R/4LNVyGJDx9PE pOyNsbZKh5nNUPb1aMnP0NqCAPBoEMbGDCdX6Ht3BAfwaXzhxpxG10PJt/9r5fJFnQBg GRlJ9qGJM3oPiHmyz7S7izXlSUeVwPmzqv7y4i49/MyDaQNwzgpd5DwASa/yuRBCOedN E4ag== 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 p14si8154754pfi.12.2019.01.10.09.43.58; Thu, 10 Jan 2019 09:44:13 -0800 (PST) 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 S1730784AbfAJRmd convert rfc822-to-8bit (ORCPT + 99 others); Thu, 10 Jan 2019 12:42:33 -0500 Received: from shell.v3.sk ([90.176.6.54]:58412 "EHLO shell.v3.sk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730741AbfAJRm3 (ORCPT ); Thu, 10 Jan 2019 12:42:29 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.v3.sk (Postfix) with ESMTP id 434101002E4; Thu, 10 Jan 2019 18:42:27 +0100 (CET) Received: from shell.v3.sk ([127.0.0.1]) by localhost (zimbra.v3.sk [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id EOYDNee_1h3E; Thu, 10 Jan 2019 18:42:12 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by zimbra.v3.sk (Postfix) with ESMTP id 9A4261002E7; Thu, 10 Jan 2019 18:42:07 +0100 (CET) X-Virus-Scanned: amavisd-new at zimbra.v3.sk Received: from shell.v3.sk ([127.0.0.1]) by localhost (zimbra.v3.sk [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id lwnuudnjVmlq; Thu, 10 Jan 2019 18:42:04 +0100 (CET) Received: from belphegor.brq.redhat.com (nat-pool-brq-t.redhat.com [213.175.37.10]) by zimbra.v3.sk (Postfix) with ESMTPSA id CB2D91002EE; Thu, 10 Jan 2019 18:42:03 +0100 (CET) From: Lubomir Rintel To: Sebastian Reichel Cc: Rob Herring , Mark Rutland , x86@kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Lubomir Rintel , Pavel Machek , Sebastian Reichel Subject: [PATCH v5 6/7] power: supply: olpc_battery: Avoid using platform_info Date: Thu, 10 Jan 2019 18:40:04 +0100 Message-Id: <20190110174005.1202564-7-lkundrak@v3.sk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190110174005.1202564-1-lkundrak@v3.sk> References: <20190110174005.1202564-1-lkundrak@v3.sk> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This wouldn't work on the DT-based ARM platform. Let's read the EC version directly from the EC driver instead. This removes x86 specific bits that would prevent this driver from being used with the EC of ARM-based OLPC XO 1.75. Signed-off-by: Lubomir Rintel Acked-by: Pavel Machek Reviewed-by: Sebastian Reichel --- Changes since v2: - Move the priv data allocation hunk from this patch to a proper place Changes since v1: - Use uint8_t instead of unsigned char [1] for ecver drivers/power/supply/olpc_battery.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/drivers/power/supply/olpc_battery.c b/drivers/power/supply/olpc_battery.c index 1fcc459433a8..a6c89d002d5d 100644 --- a/drivers/power/supply/olpc_battery.c +++ b/drivers/power/supply/olpc_battery.c @@ -22,7 +22,6 @@ #include #include - #define EC_BAT_VOLTAGE 0x10 /* uint16_t, *9.76/32, mV */ #define EC_BAT_CURRENT 0x11 /* int16_t, *15.625/120, mA */ #define EC_BAT_ACR 0x12 /* int16_t, *6250/15, µAh */ @@ -57,6 +56,7 @@ struct olpc_battery_data { struct power_supply *olpc_ac; struct power_supply *olpc_bat; char bat_serial[17]; + int new_proto; }; /********************************************************************* @@ -100,7 +100,7 @@ static const struct power_supply_desc olpc_ac_desc = { static int olpc_bat_get_status(struct olpc_battery_data *data, union power_supply_propval *val, uint8_t ec_byte) { - if (olpc_platform_info.ecver > 0x44) { + if (data->new_proto) { if (ec_byte & (BAT_STAT_CHARGING | BAT_STAT_TRICKLE)) val->intval = POWER_SUPPLY_STATUS_CHARGING; else if (ec_byte & BAT_STAT_DISCHARGING) @@ -608,6 +608,7 @@ static int olpc_battery_probe(struct platform_device *pdev) struct power_supply_config psy_cfg = {}; struct olpc_battery_data *data; uint8_t status; + uint8_t ecver; int ret; data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); @@ -615,13 +616,21 @@ static int olpc_battery_probe(struct platform_device *pdev) return -ENOMEM; platform_set_drvdata(pdev, data); - /* - * We've seen a number of EC protocol changes; this driver requires - * the latest EC protocol, supported by 0x44 and above. - */ - if (olpc_platform_info.ecver < 0x44) { + /* See if the EC is already there and get the EC revision */ + ret = olpc_ec_cmd(EC_FIRMWARE_REV, NULL, 0, &ecver, 1); + if (ret) + return ret; + + if (ecver > 0x44) { + /* XO 1 or 1.5 with a new EC firmware. */ + data->new_proto = 1; + } else if (ecver < 0x44) { + /* + * We've seen a number of EC protocol changes; this driver + * requires the latest EC protocol, supported by 0x44 and above. + */ printk(KERN_NOTICE "OLPC EC version 0x%02x too old for " - "battery driver.\n", olpc_platform_info.ecver); + "battery driver.\n", ecver); return -ENXIO; } -- 2.20.1