Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp836826pxu; Fri, 11 Dec 2020 16:03:05 -0800 (PST) X-Google-Smtp-Source: ABdhPJz1QnGUJKZzXFqnWFFPGoACPdp5OMGAae8dWtzDnSU3ZS93EEfiLSrA85hlrC6fYNRZ6Vh9 X-Received: by 2002:a17:906:2e16:: with SMTP id n22mr13583136eji.477.1607731385319; Fri, 11 Dec 2020 16:03:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607731385; cv=none; d=google.com; s=arc-20160816; b=o3lNkZmpnOP7VOtfuz9nH9g8jtHLzRAPVnVD6NS0zgB2nt+d3bIIMO5Wna3dBzlYff Bc/yI7nQPNfZak+TR4Pe5oI4QIhIj3YpHj353IUh9ufLq63SbESwkbwVYwKaWl5lAxKM jNzsamyp2J4gOfxw4Ab2h87SOj2M/hhHSqFqiG/xyUayVWZNZEjqbHm07vcZQf2pBmqO /TsmQ4JPV01S4kyMdrihio1V8wnT35McEu8PChXEf4NEnc5KgvmPEWLKkGsYyEIGeGOk mD+HjQ92hafBTbxQb0QKh7vP41vl9IKqVKAv5SCkiFHmMy7sJKKqFHN2Y9fTFvo3cpBM ySog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from; bh=EW9naTnPvXVjGNcb5ky7zY7K3RW/D3btVL5B99oURVg=; b=jC3wRXY78G4d+VLlFWy2BLeQwx68LMb4hkC6r+ZoFydsyLRTcSe8tBQRLxY5l6uan9 wgQI9LiIzzrOe6orR3K4rCPMImIr1ETQmLb6yH/X73U6PtE6ojDkhyPm+bEOWZPiOVmv nEjFYkHonBDfOBC6copaBCM7BD1wpk0NNL3296SXVKgwtd1heoZYzOabSCfcK0637VR8 0PpcOrV0ZTMX4DyChTHA9Hvmmni2ikXdhiTNRb4rYke3UhpXYwPS2vkafZArDeU9T3KT KmtP+n7p/LZxGpatONR1kptaFEmL2EST2ZtYN/EeBE2d9eGhw3+Ex9y+t62COvgAQQcE HtzA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o24si5472597ejm.674.2020.12.11.16.02.43; Fri, 11 Dec 2020 16:03:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389275AbgLKBX5 (ORCPT + 99 others); Thu, 10 Dec 2020 20:23:57 -0500 Received: from foss.arm.com ([217.140.110.172]:49838 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2394755AbgLKBVf (ORCPT ); Thu, 10 Dec 2020 20:21:35 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 830F61500; Thu, 10 Dec 2020 17:20:22 -0800 (PST) Received: from localhost.localdomain (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A64823F66B; Thu, 10 Dec 2020 17:20:20 -0800 (PST) From: Andre Przywara To: Maxime Ripard , Chen-Yu Tsai , Jernej Skrabec Cc: Icenowy Zheng , Linus Walleij , Rob Herring , =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= , Shuosheng Huang , Yangtao Li , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com Subject: [PATCH v2 12/21] soc: sunxi: sram: Add support for more than one EMAC clock Date: Fri, 11 Dec 2020 01:19:25 +0000 Message-Id: <20201211011934.6171-13-andre.przywara@arm.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20201211011934.6171-1-andre.przywara@arm.com> References: <20201211011934.6171-1-andre.przywara@arm.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The Allwinner H616 adds a second EMAC clock register at offset 0x34, for controlling the second EMAC in this chip. Allow to extend the regmap in this case, to cover more than the current 4 bytes exported. Signed-off-by: Andre Przywara --- drivers/soc/sunxi/sunxi_sram.c | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/drivers/soc/sunxi/sunxi_sram.c b/drivers/soc/sunxi/sunxi_sram.c index d4c7bd59429e..42833e33a96c 100644 --- a/drivers/soc/sunxi/sunxi_sram.c +++ b/drivers/soc/sunxi/sunxi_sram.c @@ -283,7 +283,7 @@ int sunxi_sram_release(struct device *dev) EXPORT_SYMBOL(sunxi_sram_release); struct sunxi_sramc_variant { - bool has_emac_clock; + int num_emac_clocks; }; static const struct sunxi_sramc_variant sun4i_a10_sramc_variant = { @@ -291,20 +291,31 @@ static const struct sunxi_sramc_variant sun4i_a10_sramc_variant = { }; static const struct sunxi_sramc_variant sun8i_h3_sramc_variant = { - .has_emac_clock = true, + .num_emac_clocks = 1, }; static const struct sunxi_sramc_variant sun50i_a64_sramc_variant = { - .has_emac_clock = true, + .num_emac_clocks = 1, +}; + +static const struct sunxi_sramc_variant sun50i_h616_sramc_variant = { + .num_emac_clocks = 2, }; #define SUNXI_SRAM_EMAC_CLOCK_REG 0x30 static bool sunxi_sram_regmap_accessible_reg(struct device *dev, unsigned int reg) { - if (reg == SUNXI_SRAM_EMAC_CLOCK_REG) - return true; - return false; + const struct sunxi_sramc_variant *variant; + + variant = of_device_get_match_data(dev); + + if (reg < SUNXI_SRAM_EMAC_CLOCK_REG) + return false; + if (reg > SUNXI_SRAM_EMAC_CLOCK_REG + variant->num_emac_clocks * 4) + return false; + + return true; } static struct regmap_config sunxi_sram_emac_clock_regmap = { @@ -312,7 +323,7 @@ static struct regmap_config sunxi_sram_emac_clock_regmap = { .val_bits = 32, .reg_stride = 4, /* last defined register */ - .max_register = SUNXI_SRAM_EMAC_CLOCK_REG, + .max_register = SUNXI_SRAM_EMAC_CLOCK_REG + 4, /* other devices have no business accessing other registers */ .readable_reg = sunxi_sram_regmap_accessible_reg, .writeable_reg = sunxi_sram_regmap_accessible_reg, @@ -343,7 +354,7 @@ static int sunxi_sram_probe(struct platform_device *pdev) if (!d) return -ENOMEM; - if (variant->has_emac_clock) { + if (variant->num_emac_clocks > 0) { emac_clock = devm_regmap_init_mmio(&pdev->dev, base, &sunxi_sram_emac_clock_regmap); @@ -387,6 +398,10 @@ static const struct of_device_id sunxi_sram_dt_match[] = { .compatible = "allwinner,sun50i-h5-system-control", .data = &sun50i_a64_sramc_variant, }, + { + .compatible = "allwinner,sun50i-h616-system-control", + .data = &sun50i_h616_sramc_variant, + }, { }, }; MODULE_DEVICE_TABLE(of, sunxi_sram_dt_match); -- 2.17.5