Received: by 2002:a05:7412:798b:b0:fc:a2b0:25d7 with SMTP id fb11csp46310rdb; Wed, 21 Feb 2024 16:42:42 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCXrDs0s2qtuBAdtcvWDEm7WiPbRQLKX2hQMnE6BLoaRq3zb7LQ7Ac6Uxy9fgkDLZBlhE7z8k/QRcVa1Wd8QGCDXml6hZ4manqmq+ATe9A== X-Google-Smtp-Source: AGHT+IGPIZBZyvgyOsN1mIdEPpyB8uZdqm/sYrEiJYb4Cu0a849PykPlQubvpc9ZyyRlD3GN0xse X-Received: by 2002:a05:6102:160a:b0:471:b991:6cae with SMTP id cu10-20020a056102160a00b00471b9916caemr797515vsb.26.1708562562150; Wed, 21 Feb 2024 16:42:42 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708562562; cv=pass; d=google.com; s=arc-20160816; b=RA2QVQ8D8cHgo9mj3RqOhYMa+4hMR4rOulKOF3q7NtwKVdDPMfrY/MUGJedv/JZ6wL ABKpI78BRIfAgejmcOlnDFblttqpoAEhKsyIEZRs2/lL0VuO/qqUZdJx2bgTJLsv/FLa xUGqfiHfOj9kRO8LFAqlS1N6O2dk0iSfpzgsMgRz+ZoaOq86NPSOvIrVgy4MmCYcL00v /wzhYoxb24i0J7WKUK+Nt3tqjKOqVCjy1YIuE9t5wmU8uWZg7pIS+shwxCrn8pCefTNg A/SRApJzOLBR5dEsTULDYDnwUy6bmJ9azIK1grwwkbgUq+Pco6It5VbSDRLl4ENOdPDm wggQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:list-unsubscribe:list-subscribe :list-id:precedence:dkim-signature; bh=ShxvQ8PVoqtGaEPQqhEqEYNCHruhNGrg1u0pTjKfrU0=; fh=NZ+YyXaoMxET+lRcYtNDK9xJN9nkwdQIUujX9Ho2RVg=; b=LDVhsQGiRp8ZvNZ+Zsu+9d9wh3ZFEnfwW5py7I8UEzz0v/OxmuTACgCMfQarCDl1SJ 2/sxe4WSDFsJeYNKkRRuFmqnXA0TLnxn4xsdxLbCl0AaIRVq5DcQLvWFwiMGrlQF6U3F VjdYAuZ6Q6NwO2nYqJrOcCuv652rOuhCwakORJruAcdH5VYImzm90nwowVM3uAK9aYVi hsunLDFUbHZ+3UT1MDFduS1llBsM8ESyA+JOCoLKQ5o8SK+aTMf2BCUWyQvFc5D1Q1dD baGGRwcOSZpSJe4mmmhQjzC8CJC2uJcShR+uUV7k7KAZ1ZCRLtAUX4zW29pvVtdGWi5r dSHQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=UYtixNgB; arc=pass (i=1 spf=pass spfdomain=linaro.org dkim=pass dkdomain=linaro.org dmarc=pass fromdomain=linaro.org); spf=pass (google.com: domain of linux-kernel+bounces-75738-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-75738-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id j1-20020a05621419c100b0068edf664eadsi12287539qvc.213.2024.02.21.16.42.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Feb 2024 16:42:42 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-75738-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=UYtixNgB; arc=pass (i=1 spf=pass spfdomain=linaro.org dkim=pass dkdomain=linaro.org dmarc=pass fromdomain=linaro.org); spf=pass (google.com: domain of linux-kernel+bounces-75738-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-75738-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id BDEED1C21B19 for ; Thu, 22 Feb 2024 00:42:41 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CEAF210A1D; Thu, 22 Feb 2024 00:42:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="UYtixNgB" Received: from mail-yb1-f180.google.com (mail-yb1-f180.google.com [209.85.219.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5FD6BF9CE for ; Thu, 22 Feb 2024 00:42:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.180 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708562553; cv=none; b=b77vXBoUw6fzCfR/403dIVIlO9WjuuAkz2bZbS1Cqa5s9Eo4x+PXDn+Ok40vzsXoqCzKRGHPpksTtN0n64+6E5gn9O80F6jBgrdIx742RywDWRSPSqHWBColDMVMWJ0bakyWqBVgX41diFBqu662TyR2uAkp7rVmN8VXZYXS0/c= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708562553; c=relaxed/simple; bh=Bs9vhLKuGEIex6OPxJkFxMFJCT3jUj8PEgVKlk55ND4=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=TPo5aUJPv1pIsPa4zaC6K29BIRQPwcxE7quXZ5xEARQVkyzeYNQUXzQ5wLeKjfexAANLVMVXFIyo8nSwgu94ZPdo1+xQLNzcfuBgTao6LiwLZvH7go+vVhWOqpPdhu1qpwW5dTkKiGjw8ZMEciwJoOP8btJE0BAZ7sTMXoqoJWg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=UYtixNgB; arc=none smtp.client-ip=209.85.219.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Received: by mail-yb1-f180.google.com with SMTP id 3f1490d57ef6-dcd94fb9e4dso1469241276.2 for ; Wed, 21 Feb 2024 16:42:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1708562550; x=1709167350; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=ShxvQ8PVoqtGaEPQqhEqEYNCHruhNGrg1u0pTjKfrU0=; b=UYtixNgBQFiKAO4w4+Udpn2GKuFPl0ARB5tOU1uUFetljSj8qUmr+Rn5G1gSGUqBg0 f5tv5Q+P8Z5CSQegkDMu3wuvbSEGxAmkb/2Ur+cUWt9wEHexOAlA4nViBG3VLQK65bz1 kqY7/KnQfsQRrJ7XeDuSybRY80SMRQLdCFrJHlwRi54sDKGV+oaExp0Gjff7O1orll0M 8MriWzrdQQYSm2VeBeUzt2DQFs15sn706mvjUXqkhMVppZOC3rlaBUTHTYvSL9qqkWK5 ayHgYwJIDv3Z1ff+NHd02CwxMpTPxSRp0FJ8d8IIKN7S3d6o+OIENWdKw7/do+acWQxc qSkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708562550; x=1709167350; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ShxvQ8PVoqtGaEPQqhEqEYNCHruhNGrg1u0pTjKfrU0=; b=a89sXImg+yet66E1YsSV+8age4syTyVNLQbu+bRLFt7rYW+HOJmOWmhkJfGylQZmlw 5KFOgaDaEB9/wjxpeJtiXh4qZrgEWkLb7qBhBIVl+hW35JVVvo1oea4pFuHK6zcUc6ql NK++RqssSssswp1t44XWW+1uZU+A3zsdeRI9Y8I5E7YApQdh3BDS9I7wgzPUqumRJIKZ 2UkVptFgodwK2LozxK5MhkPm6wuE7hQjeVmF4adPAeoaJN2Qa4uWwR1+6rcui6Pz8Q5G qafcYTVHTRyLnhuvCNJaW3j7C475wFTmlDtrN4gM7yBDJw7xTkvmS80AQbOuqmZ3uOB/ oHCQ== X-Forwarded-Encrypted: i=1; AJvYcCVIv3NSR6u9j9Gy6ebEJMJ7Meibp6G7vspCKqR5C0QchJ/bhPGateBIYt0lMkcfhmvmAMk/CMhQbm5KmvxKFkPM0VowcfNVhiNDhNWp X-Gm-Message-State: AOJu0Yx3UDEdh3n5eDp9rUwQfIMgMGjC/Vm/B/me7lKU4w+5wxeUcnBd v0naEfG4lJWprO0fzXmWtadHZy7caLQyDfapIC2W2cTSYMcvDeiyncKf2LoW1PJ5lgkToshe7zm Ho0/4S7CQVb/fvQTfL+RZ3oHPOX66EQvqBHLtwQ== X-Received: by 2002:a81:9a47:0:b0:607:a75e:9caf with SMTP id r68-20020a819a47000000b00607a75e9cafmr18882889ywg.22.1708562549946; Wed, 21 Feb 2024 16:42:29 -0800 (PST) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20240216223245.12273-1-semen.protsenko@linaro.org> <20240216223245.12273-12-semen.protsenko@linaro.org> In-Reply-To: From: Sam Protsenko Date: Wed, 21 Feb 2024 18:42:18 -0600 Message-ID: Subject: Re: [PATCH 11/16] clk: samsung: Keep register offsets in chip specific structure To: Krzysztof Kozlowski Cc: Sylwester Nawrocki , Chanwoo Choi , Alim Akhtar , Michael Turquette , Stephen Boyd , Rob Herring , Conor Dooley , Tomasz Figa , linux-samsung-soc@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Feb 20, 2024 at 5:04=E2=80=AFAM Krzysztof Kozlowski wrote: > > On 16/02/2024 23:32, Sam Protsenko wrote: > > Abstract CPU clock registers by keeping their offsets in a dedicated > > chip specific structure to accommodate for oncoming Exynos850 support, > > which has different offsets for cluster 0 and cluster 1. This rework > > also makes it possible to use exynos_set_safe_div() for all chips, so > > exynos5433_set_safe_div() is removed here to reduce the code > > duplication. > > > > So that's the answer why you could not use flags anymore - you need an > enum, not a bitmap. Such short explanation should be in previous commits > justifying moving reg layout to new property. Will do, thanks. > > > No functional change. > > > > Signed-off-by: Sam Protsenko > > --- > > drivers/clk/samsung/clk-cpu.c | 156 +++++++++++++++++++--------------- > > 1 file changed, 86 insertions(+), 70 deletions(-) > > > > diff --git a/drivers/clk/samsung/clk-cpu.c b/drivers/clk/samsung/clk-cp= u.c > > index 04394d2166c9..744b609c222d 100644 > > --- a/drivers/clk/samsung/clk-cpu.c > > +++ b/drivers/clk/samsung/clk-cpu.c > > @@ -44,12 +44,14 @@ typedef int (*exynos_rate_change_fn_t)(struct clk_n= otifier_data *ndata, > > > > /** > > * struct exynos_cpuclk_chip - Chip specific data for CPU clock > > + * @regs: register offsets for CPU related clocks > > * @pre_rate_cb: callback to run before CPU clock rate change > > * @post_rate_cb: callback to run after CPU clock rate change > > */ > > struct exynos_cpuclk_chip { > > - exynos_rate_change_fn_t pre_rate_cb; > > - exynos_rate_change_fn_t post_rate_cb; > > + const void * const regs; > > Why this is void? > Different chips can have very different register layout. For example, older Exynos chips usually keep multiple CPU divider ratios in one single register, whereas more modern chips have a dedicated register for each divider clock. Also, old chips usually split divider ratio vs DIV clock status between different registers, but in modern chips they both live in one single register. Having (void *) makes it possible to keep pointers to different structures, and each function for the particular chip can "know" which exactly structure is stored there, casting (void *) to a needed type. Another way to do that would be to have "one-size-fits-all" structure with all possible registers for all possible chips. I don't know, I just didn't like that for a couple of reasons, so decided to go with (void *). I'll add some explanation in the commit message in v2. > > + exynos_rate_change_fn_t pre_rate_cb; > > + exynos_rate_change_fn_t post_rate_cb; > > }; > > > > > > Best regards, > Krzysztof >