From patchwork Tue Jun 23 02:51:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andreas_F=C3=A4rber?= X-Patchwork-Id: 11619647 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 852BD13A0 for ; Tue, 23 Jun 2020 02:57:56 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4D2D62076A for ; Tue, 23 Jun 2020 02:57:56 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="N0jCcmD+"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="GDb8bS4R" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4D2D62076A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: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:List-Owner; bh=JzoHLIX74ZPgCC4A/KF/w3tV9CJu0YillReehgszfmM=; b=N0jCcmD+dI626Cp7zZY+v5b6R iILof/AgBO1wDE5I2bzpLNANUcv9XAzx+5JkjLQMZN/6E+If/3TIoPZ/rrUJ9nhB+qHPBeT2Rq+Xn B/pO/cig0VDtVz/jBUfWtFWRc3oR4hGfOG2CaZ8LIXr/6isyVIEUcg3rgwqvOD1oK13eMgj5BCy/c tz6cxZWF3tqtm73WhVRpi9cu1NIgQ4AHRFlTkdgfTxKN/orgK0xFQSkasbEjc+fNfgbEBUxuQzBwa FkhqTrJXQde1jFDDAjQeRu00kfJGGnSbH+6eIRsHietFQgRUMxH74NM7ATIne9IoRbBB6uayVykcR /atj0Pgwg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jnZ5t-0004Sm-E9; Tue, 23 Jun 2020 02:55:29 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jnZ30-0002IW-U1; Tue, 23 Jun 2020 02:52:31 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:Content-Type: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-ID:Content-Description; bh=BhR4sHXkSgOjtpuGGjpCZQc3KmPPFrg8Jceqqj13eEo=; b=GDb8bS4Rwb7XLWxEfTEiKQw+TF /izQf0D9uV2sQbtWPQt2Mp8KUxXaSrmu+SVdud0Y4kDf/V4/p/873AIDeeibxzDsztxwkPBhrNJfb Kr3KarXZbvLxQEioapxdJwZbF3PIftIp3HzQZ8Zq9YWMLk9bcou+sDCD0/o03zOqGe/uA+w5Jt/Ix rzTVnRV9OAE/dV2aalf3VLarIIeDZgQ0VZ/ibTR4EmdS+tDJp8jbuFsQxGtNt3JuraHpOPXzE6orf D+Bh9OXE+O+nlcLnHIQXO8EYkrIbzu0wPi/ptdP9FTuL6sByGy40HUcIcjXRayDq9xTVWzEBwKYUH WO9bltNw==; Received: from mx2.suse.de ([195.135.220.15]) by casper.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jnZ2w-0005Rp-Nv; Tue, 23 Jun 2020 02:52:30 +0000 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id C812DB1A5; Tue, 23 Jun 2020 02:51:41 +0000 (UTC) From: =?utf-8?q?Andreas_F=C3=A4rber?= To: linux-realtek-soc@lists.infradead.org Subject: [PATCH v2 26/29] soc: realtek: chip: Detect RTD1294 Date: Tue, 23 Jun 2020 04:51:03 +0200 Message-Id: <20200623025106.31273-27-afaerber@suse.de> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200623025106.31273-1-afaerber@suse.de> References: <20200623025106.31273-1-afaerber@suse.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200623_035227_023686_868C2D82 X-CRM114-Status: GOOD ( 12.57 ) X-Spam-Score: -4.2 (----) X-Spam-Report: SpamAssassin version 3.4.4 on casper.infradead.org summary: Content analysis details: (-4.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [195.135.220.15 listed in wl.mailspike.net] -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [195.135.220.15 listed in list.dnswl.org] -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?utf-8?b?SmFtZXMgVGFpIFvmiLTlv5fls7Bd?= , Edgar Lee , linux-kernel@vger.kernel.org, =?utf-8?b?U3RhbmxleSBDaGFuZyBb5piM6IKy5b63XQ==?= , =?utf-8?q?Andreas_F=C3=A4rber?= , linux-arm-kernel@lists.infradead.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org Detection logic from downstream include/soc/realtek/rtd129x_cpu.h. Signed-off-by: Andreas Färber Reviewed-by: Stanley Chang --- Note: We don't have any RTD1294 .dtsi/.dts yet. v1 -> v2: * Instead of direct eFuse register access use nvmem cell API * Warn on errors other than deferred probing drivers/soc/realtek/chip.c | 39 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/drivers/soc/realtek/chip.c b/drivers/soc/realtek/chip.c index 9cee760bac35..bed028ce1b16 100644 --- a/drivers/soc/realtek/chip.c +++ b/drivers/soc/realtek/chip.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -26,6 +27,8 @@ #define REG_ISO_CHIP_INFO1 0x028 +#define REG_EFUSE_PACKAGE_ID 0x1d8 + struct dhc_soc_revision { const char *name; u16 chip_rev; @@ -76,6 +79,33 @@ struct dhc_soc { const char *codename; }; +static int dhc_efuse_read_u8(struct device *dev, const char *cell_id, u8 *val) +{ + struct nvmem_cell *cell; + void *buf; + size_t len; + + cell = nvmem_cell_get(dev, cell_id); + if (IS_ERR(cell)) + return PTR_ERR(cell); + + buf = nvmem_cell_read(cell, &len); + if (IS_ERR(buf)) { + nvmem_cell_put(cell); + return PTR_ERR(buf); + } + if (len != sizeof(*val)) { + kfree(buf); + nvmem_cell_put(cell); + return -EINVAL; + } + memcpy(val, buf, 1); + kfree(buf); + nvmem_cell_put(cell); + + return 0; +} + static const char *default_name(struct device *dev, const struct dhc_soc *s) { return s->family; @@ -86,6 +116,15 @@ static const char *rtd1295_name(struct device *dev, const struct dhc_soc *s) struct regmap *regmap; unsigned int val; int ret; + u8 b; + + ret = dhc_efuse_read_u8(dev, "efuse_package_id", &b); + if (ret == -EPROBE_DEFER) + return ERR_PTR(ret); + else if (ret) + dev_warn(dev, "Could not read efuse package_id (%d)\n", ret); + else if (b == 0x1) + return "RTD1294"; regmap = syscon_regmap_lookup_by_phandle(dev->of_node, "iso-syscon"); if (IS_ERR(regmap)) {