From patchwork Thu Apr 17 14:25:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 882187 Received: from mail-lf1-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) (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 79086251798 for ; Thu, 17 Apr 2025 14:25:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899938; cv=none; b=EZJkJmxIEE4qlU8mSAqIlSftxZwkDONyBPEzPEQ5OlXn2gKW2NELYUZZDiWc/dgTdqkgBrmiT043ZXo8QjQRMtOSR8TFH7agZZVpYHHzv3s6ZS9L1/uDgMJGZ9OOXPXrLoruVikyMTydNv8BsrnEfbCfPu4vPobgURi0OOreWfY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899938; c=relaxed/simple; bh=XlSonSv9LviP5yU3Iu5BfSf+jtHN/4GkokQYgxmFxEE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EJ/NJqKlJVhCN3KD7GzKQWjQcb33+T+l5yRdo3/cngkLgZSWuUC9WtdMevAZZT+UETbibinksMnS2ZUqbbrwVDtIkTs5Hj2nIQlyGktuLrdK4GghAGgrZZJo3wIX/sQc5/9ks/Bhe14vZ0MQaiFWhW8GOhWiho1YmzejzrqjhLw= 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=DLnqK4P4; arc=none smtp.client-ip=209.85.167.45 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="DLnqK4P4" Received: by mail-lf1-f45.google.com with SMTP id 2adb3069b0e04-54d42884842so1113137e87.2 for ; Thu, 17 Apr 2025 07:25:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1744899934; x=1745504734; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VAv5QpD/3W+QIUIAEsxCNkQa5aZqJu5jR8/2XBRcQ9U=; b=DLnqK4P4iIAM2ihwg+U77jmEfycxjz1IL8tCwfuLx7HzSb6RPN0HBG93fz6urzaFjx hKDex43/Ng2fUEWpo6t4Dg7PPWSxiSRtRl2LSTlZ4IbQc7GgY4AVsBGcUh3aVQ7zd2KR g89k6P7XhW38H7CAYymtMj0Ggkk3ghuKt94qE/LlHP73/Km5ksSH7VRDuY5bDN4EuDFS rn7dC+mAm8Mr9NI6tj9BXmfmux2Wg2ExniQrDRY04A3XhgiS8Kak6I5mDx8X9Iknu3WK CKfBDO5+1qGf1594i/bJwlmiO6uQMsoKNwkVYs9vaQCTIdL3bdyR8Xflmt692pRWMHcu rLww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744899934; x=1745504734; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VAv5QpD/3W+QIUIAEsxCNkQa5aZqJu5jR8/2XBRcQ9U=; b=ozpvPruvqAFeG+U9wSN8sSGDPOlIa/hMuIiy3WsJd2ql57T4zDp1HMHHEgJpoZZP27 mzUmWW7NylsDkeozPCvERk/x6gmPgSEjqQeNiPwcmdB6/dhwdl8130uaqM67bwzeftzz PsQYPhLo5DN6Ab53Pp3sZLcmmCkKkPoBWqxiJ2vumRY89JWzbO2tgyKq2pDlN5jgZziF EgAAHn4gNDJhhz9gZbg7kATjy1p0PCPb9WcKgCkhflaII8ykvVIPfGc/V5gAsatD7oid dHbgR8SdW9LBSs2zh9dzSL4m6/mIIxtTtQWuZmgPH3vXfwBS+uYZwsyl2ro5pNLYkT0a dn3w== X-Forwarded-Encrypted: i=1; AJvYcCW/+2eJyQWVppacCbxxKEIF7HRtj3XDWKFB1yxSa6R778C4bOVPl514s3g1IUypz7fi9kaPiqWGuA==@vger.kernel.org X-Gm-Message-State: AOJu0YyJ74lJk8O3uwwhtEZKutIJz8OagijItYUUM75Yv3QNxL2ywM0U emv3K8eZdaPPeuVfu3q8plW1C5tsdlheLX0CdotLi5cqBtF8JwVFq4zhp7jFs8U= X-Gm-Gg: ASbGncutLcIzKaEiehL5hCmyk+xVq1S8HXTCfiZn7+L1fmlntvjp6mC/TLxxQyNSIjH lI74513WErWp80kQjPj/RxVrsV89bDWZEmDrGSKObii06B3uYk1jGYKjZjSp6BqFS9uk8fet75P yjVzq1SF17c1i6Cah6FYe5JSfY8jx1mvzAIkiuUVqsJIeMnOqBBfSVV37fE+LwR1z2V0X6XnqD6 FeJdJs5euz73SAQ1apC7ARO4vRHmd4nG+sBwrBEDE/O1As7nBHEob3lCZaozzaaUCmePdfhPIIp FyXy0vdqZiKH5fDNkrNKWZZk+0yZ26tfTJenG1f9Sf5Xiw6J45SGU9GnoUjVKRtDaoQdTZg5sNr +kmbxsqfQhsTzrCo= X-Google-Smtp-Source: AGHT+IEdRb+byxDtsaF938ihBQexYxdm23PnPrnwFBeiHnuU4i+1SkPOaDcL0cyZpoToJUlNYAezMQ== X-Received: by 2002:a05:6512:334c:b0:54d:68b7:86da with SMTP id 2adb3069b0e04-54d68b78b62mr1388539e87.42.1744899934579; Thu, 17 Apr 2025 07:25:34 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54d65e43647sm370096e87.58.2025.04.17.07.25.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Apr 2025 07:25:33 -0700 (PDT) From: Ulf Hansson To: Saravana Kannan , Stephen Boyd , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Greg Kroah-Hartman , Michael Grzeschik , Bjorn Andersson , Abel Vesa , Devarsh Thakkar , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 02/11] pmdomain: core: Simplify return statement in genpd_power_off() Date: Thu, 17 Apr 2025 16:25:00 +0200 Message-ID: <20250417142513.312939-3-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417142513.312939-1-ulf.hansson@linaro.org> References: <20250417142513.312939-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Rather than using two if-clauses immediately after each to check for similar reasons to prevent the power-off, let's combine them into one if-clause to simplify the code. Signed-off-by: Ulf Hansson --- drivers/pmdomain/core.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 574a0de1696a..34a85bf347ad 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -917,20 +917,14 @@ static void genpd_power_off(struct generic_pm_domain *genpd, bool one_dev_on, /* * Do not try to power off the domain in the following situations: - * (1) The domain is already in the "power off" state. - * (2) System suspend is in progress. + * The domain is already in the "power off" state. + * System suspend is in progress. + * The domain is configured as always on. + * The domain has a subdomain being powered on. */ - if (!genpd_status_on(genpd) || genpd->prepared_count > 0) - return; - - /* - * Abort power off for the PM domain in the following situations: - * (1) The domain is configured as always on. - * (2) When the domain has a subdomain being powered on. - */ - if (genpd_is_always_on(genpd) || - genpd_is_rpm_always_on(genpd) || - atomic_read(&genpd->sd_count) > 0) + if (!genpd_status_on(genpd) || genpd->prepared_count > 0 || + genpd_is_always_on(genpd) || genpd_is_rpm_always_on(genpd) || + atomic_read(&genpd->sd_count) > 0) return; /* From patchwork Thu Apr 17 14:25:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 882186 Received: from mail-lf1-f42.google.com (mail-lf1-f42.google.com [209.85.167.42]) (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 4212F252287 for ; Thu, 17 Apr 2025 14:25:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899941; cv=none; b=bSsnNGBrrchG9KDGJlIWDTjxrI+SedkDIzLjQta1OSdvhewGf1giCqFJUBe/OHFmtbAtRlvo2MjvaxoA4LDJAbTD4iQclQ0HyzjnCBsP9Qf5xSjE6g4hhucp5b0UL1HBFSyKbpqxVcBLRC1N0YXkSMurDS3O2n4i5V4SZvjufA0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899941; c=relaxed/simple; bh=9Au4Fe2OLSeRsUR1xwYHxdSnAkAsfOjjKZwl2VCoWc0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Lz+sXPsOY1Awrj6E2a5yC5k3/VWGGxbDcRvsO9Dz3L7j8DNco9NO9IBYGJUPPEoE3XH0kB3WEaLprkA3RwvTs4JDe2USFCFtB3DmQDMjsOsNlmBbflRym6qrsh/IrcpQ2xRa1A1gzfRpUMsXEJJFzFXgepHTn8RKyiHib+E0QhU= 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=ijiDNEaB; arc=none smtp.client-ip=209.85.167.42 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="ijiDNEaB" Received: by mail-lf1-f42.google.com with SMTP id 2adb3069b0e04-54998f865b8so845668e87.3 for ; Thu, 17 Apr 2025 07:25:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1744899937; x=1745504737; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=J79qRcZGJZJmCItGNs9XR09SxwFcm6gRBRDcexcVIfk=; b=ijiDNEaBaxLMYig1oNR9LWDd2a1dIGwM9A8nWnjLQkun68n+s0wh1avqAqo8GHOuO8 T5nsMhnjs0lRWoV7I8ayUpgtmvo+483R0M46LOlAREimkJOi9lnu4lPNgapEnZhn+YWT wT1MucED4DaSYGbhXNna0P1XSv3o+dCOzLaFGmwVzryKNk1Fct3xLxndNP3dsfmtz51e b0JkdyqN6GzRuxD8BtuVc9PdHmQ3c7KNwNvjGwZQvY+rRt4EL9EuHN7GYPF4oOkeH4Lz gn+eQczWUlalS8PbbqQ3v7Os4KJmqNjGdBq89Vv5DgG6bYYz6CjnTuD+JhvOJerDEFgu BZdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744899937; x=1745504737; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=J79qRcZGJZJmCItGNs9XR09SxwFcm6gRBRDcexcVIfk=; b=OCbSDmuXuYjGuExHbvX4tnWegq6205qyvv8601P8mXJMXO6lZ7Jeom3/bEhzZ0jBZv HtEYQnOWfbZ3fJ0BQLdWFi6MSGcNPlKVWOGo92f05FW+L8VETtuJQbTsb8HHBamUIcUP nrPJASNEUJrnakv5LSqzwkQRBLcaJm/rFYhJsgfvtbbYHi3yxTRvoLJy5FUbYrzFQVzl nFYp0n4s7hA2WDl/H+AcMxVxhKf+D1xvz1r66iVX40Do1/7A4xFiHsfhQGFRrNnaObso Np/mqYCABKkSYofgRUOrN+7oaztJ+nWmkCSe3ZDaw92Sf2dhtth2otmjcAdIwSNH7x4u 6ZpA== X-Forwarded-Encrypted: i=1; AJvYcCWsqmyplibcxrJFNwsNt560GF17O/emxOfNIaKeDD0T5XAAoWxNkTaTdtdaKJXw93Pmewsdm0PUMg==@vger.kernel.org X-Gm-Message-State: AOJu0YxYgjEyvgK2kYelNmnspb6k/mM5IqhG3C/MdZuVrFtZDnfMqsCA 8+io45uage6jPsukZ+2tv/dykROGh32QwqqQdwpNcVFCU8kKgXA19C4ssk7QEkM= X-Gm-Gg: ASbGnctQJ0ZKq4SH6AmFzwsSJpg0/Y56ZspqT/xZmbNARIBYC+9Izuj9ucj9oFqVRzj Ohf/2sKw7bDhxYcL4kCa+pJGsO+F8ap3b+qoDwOFvm1tmkmLk8u3jTI43cpAcxueC9V9tccgXr4 jtsADgN5hOGMUOYa5JY8GxEioUD20K7fkmQN2RrgGJ6hpS8d3jnIvHxNu2+9BqTYdayPycSj2Sd s0eQPGiPEVCaPTs3XAHMANGChEDZy9Zbg2VHB9QcVp6ldWRdks//U7XrAbrHKFHxZOXX1k+SQOo k1rRlFFyxO91O9vGhtj/RPpWDTttXR0n/IfjjHfm1Wny1oKsI0btZ0sO3YWPbmQ6OpWSr7rDK54 6LRLOf1NyLIIUfuYqORzwZFv59g== X-Google-Smtp-Source: AGHT+IFiUhuBtQQApad2nNH4tL0zFojb+VPiB8t6cSOcnI01Uz7KMV7xXLgUmCgNPnGefcFd0iptEA== X-Received: by 2002:ac2:4e0b:0:b0:54a:cc11:b558 with SMTP id 2adb3069b0e04-54d64ab204amr1985603e87.33.1744899937335; Thu, 17 Apr 2025 07:25:37 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54d65e43647sm370096e87.58.2025.04.17.07.25.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Apr 2025 07:25:36 -0700 (PDT) From: Ulf Hansson To: Saravana Kannan , Stephen Boyd , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Greg Kroah-Hartman , Michael Grzeschik , Bjorn Andersson , Abel Vesa , Devarsh Thakkar , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 04/11] pmdomain: core: Add a bus and a driver for genpd providers Date: Thu, 17 Apr 2025 16:25:02 +0200 Message-ID: <20250417142513.312939-5-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417142513.312939-1-ulf.hansson@linaro.org> References: <20250417142513.312939-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 When we create a genpd via pm_genpd_init() we are initializing a corresponding struct device for it, but we don't add the device to any bus_type. It has not really been needed as the device is used as cookie to help us manage OPP tables. However, to prepare to make better use of the device let's add a new genpd provider bus_type and a corresponding genpd provider driver. Subsequent changes will make use of this. Signed-off-by: Ulf Hansson --- drivers/pmdomain/core.c | 89 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 88 insertions(+), 1 deletion(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 035b65563947..da51a61a974c 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -27,6 +27,11 @@ /* Provides a unique ID for each genpd device */ static DEFINE_IDA(genpd_ida); +/* The parent for genpd_provider devices. */ +static struct device genpd_provider_bus = { + .init_name = "genpd_provider", +}; + #define GENPD_RETRY_MAX_MS 250 /* Approximate */ #define GENPD_DEV_CALLBACK(genpd, type, callback, dev) \ @@ -44,6 +49,14 @@ static DEFINE_IDA(genpd_ida); static LIST_HEAD(gpd_list); static DEFINE_MUTEX(gpd_list_lock); +#define to_genpd_provider_drv(d) container_of(d, struct genpd_provider_drv, drv) + +struct genpd_provider_drv { + struct device_driver drv; + int (*probe)(struct device *dev); + void (*remove)(struct device *dev); +}; + struct genpd_lock_ops { void (*lock)(struct generic_pm_domain *genpd); void (*lock_nested)(struct generic_pm_domain *genpd, int depth); @@ -2225,6 +2238,26 @@ static int genpd_set_default_power_state(struct generic_pm_domain *genpd) return 0; } +static int genpd_provider_bus_probe(struct device *dev) +{ + struct genpd_provider_drv *drv = to_genpd_provider_drv(dev->driver); + + return drv->probe(dev); +} + +static void genpd_provider_bus_remove(struct device *dev) +{ + struct genpd_provider_drv *drv = to_genpd_provider_drv(dev->driver); + + drv->remove(dev); +} + +static const struct bus_type genpd_provider_bus_type = { + .name = "genpd_provider", + .probe = genpd_provider_bus_probe, + .remove = genpd_provider_bus_remove, +}; + static void genpd_provider_release(struct device *dev) { /* nothing to be done here */ @@ -2262,6 +2295,8 @@ static int genpd_alloc_data(struct generic_pm_domain *genpd) genpd->gd = gd; device_initialize(&genpd->dev); genpd->dev.release = genpd_provider_release; + genpd->dev.bus = &genpd_provider_bus_type; + genpd->dev.parent = &genpd_provider_bus; if (!genpd_is_dev_name_fw(genpd)) { dev_set_name(&genpd->dev, "%s", genpd->name); @@ -3355,9 +3390,61 @@ int of_genpd_parse_idle_states(struct device_node *dn, } EXPORT_SYMBOL_GPL(of_genpd_parse_idle_states); +static int genpd_provider_probe(struct device *dev) +{ + return 0; +} + +static void genpd_provider_remove(struct device *dev) +{ +} + +static void genpd_provider_sync_state(struct device *dev) +{ +} + +static struct genpd_provider_drv genpd_provider_drv = { + .drv = { + .name = "genpd_provider", + .bus = &genpd_provider_bus_type, + .sync_state = genpd_provider_sync_state, + .suppress_bind_attrs = true, + }, + .probe = genpd_provider_probe, + .remove = genpd_provider_remove, +}; + static int __init genpd_bus_init(void) { - return bus_register(&genpd_bus_type); + int ret; + + ret = device_register(&genpd_provider_bus); + if (ret) { + put_device(&genpd_provider_bus); + return ret; + } + + ret = bus_register(&genpd_provider_bus_type); + if (ret) + goto err_dev; + + ret = bus_register(&genpd_bus_type); + if (ret) + goto err_prov_bus; + + ret = driver_register(&genpd_provider_drv.drv); + if (ret) + goto err_bus; + + return 0; + +err_bus: + bus_unregister(&genpd_bus_type); +err_prov_bus: + bus_unregister(&genpd_provider_bus_type); +err_dev: + device_unregister(&genpd_provider_bus); + return ret; } core_initcall(genpd_bus_init); From patchwork Thu Apr 17 14:25:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 882185 Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) (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 0CCFC2528E6 for ; Thu, 17 Apr 2025 14:25:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899945; cv=none; b=CkMNHisb117zGsglL8kBXEwmND61x0F9/AjL4YNNw40x9RdZPd3+yhFCguRAeITytoZf59VbvOJ2aMj9X0xo/bDaOOXv8JiB12A5+SnL52470SpGj+2/SN+jL245cJlv0QaKz/0Kzzc6R71jm3Qpmfp5M0GUJwVSfoAg2YzcBvE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899945; c=relaxed/simple; bh=mCvK16gSgEDQy1+5bYn7FFtCLXuKxhPqDJ3FRjReYEA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=i7nx7LbPGOix3/C3g9JU7UcTpMmY7uZNzQSGPmJbvZjFy+meMym5nrFhICOf8Xibmo7poV2pi7nQlgCmBy7kHbBui3bN70w5rwxf572MlYfmqZcSPlwMXFaRjaD/m0XJl6vz1Ye9VaEvrnaeg5GjYgpexi/Ql0h3sEcLN1UJCqE= 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=YhmeIm5G; arc=none smtp.client-ip=209.85.167.41 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="YhmeIm5G" Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-54996d30bfbso786546e87.2 for ; Thu, 17 Apr 2025 07:25:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1744899942; x=1745504742; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IhCzeeuIRn9U4lLFeFB39wEFdroIdbbgBLNLNN654Y4=; b=YhmeIm5Gv+7KPC7WLKw4TTfzlaVcxpqkiHsyMEDZaBV2xsaHhfV9xgH3WpL1WIaKtW eAVoTBxfiZfWZsErRI2Tg6ajPU2wH+WPqae2x1s2rJdSb6lT1ZV2oXsxNUvNBXW+drII ExfeJ7zk3xKLyIPV9uvOnSfvZOj92GlwWYce8PgvMCLVs9sx5bURTZi7ORXKZPgRufLd 55hnG75pfgVeGhoQhmEnNadY2gpxe6IHlJIWGJMWRAZT+hSTNsnfNX/CsF9VkuzAC7ba t3IEck7D7wF/xFgxHNZIY/Ia6uSnH059t2eUnJBAyJvJF6uNFC7Dyhb1qiQ9JaQWVQJi z9WQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744899942; x=1745504742; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IhCzeeuIRn9U4lLFeFB39wEFdroIdbbgBLNLNN654Y4=; b=JWMeOSC7USu2jk7H4YQOABkH2nwLbH9jMIyWYdOhCJrTaONHp7QYxubn7lUo/l/Jyc J2uue3CM+TkCP5IAGGWo4NJEejj6h81L5YFZ1NhsqZWCjpy7UqEbuliOAgqrLsAjg3NT Z5dYet1XMMG+mTVIry8RCIShq4N+/ut9Q5+p08q1A92t8HUFytBKD0umIYmvdLulgciT PDee9bSkqYtU0Z8rkZJpxFlX9Sg9rgGyH20fm4oT55egk8oZynwybFYZeU2lqqZ1iw2d 3CNR90i+mIobuQayejkI/ByAEbODxx5XeekCzghaoRYTHfpUrJjL2u8Kaa3kLj9p70mA dAHA== X-Forwarded-Encrypted: i=1; AJvYcCXQQ3zqgAalYlA2QtRFZBxg/q2HY5+gvrrl03J9Pd6+6Gq8fIz/2gnB9RkIKceRO54uiNWc6EiSNQ==@vger.kernel.org X-Gm-Message-State: AOJu0YwWOxnmOoo3SqLLlPn0Zh4hRR7QYprjKYGaz0PnduAFHjI5tD4f wOYNP92PAb2JhlpyBdkVCgbcecn67Lj5E2d/9B2eHZ016ukL+f/ZbKhU5RunUs0= X-Gm-Gg: ASbGncv7DzLXC1YbbqnP9IgcCllnCPsgLpfQIv7LRE1VWyWIpelwbsVeKNvEjXxa09G 1Eo+SJsunzB26d3Xmt35Gx2YmhvzozsodlbfbPu2CaBG7rolaGgpjDnB3oigAphY/dd58kou/Uk 8Ix3C1sYn1fY+CEVzO6Hv1DFCeE5M2nzV+e+slfFGM5jG5J3s9tYDRHk53Q4tzZR2/qnbwTYtRr X2Yy+SiB7/vbcaPpLRwIvEYf7KjCSi7H4J51pfYRqHtfzEgaIhdqeSEnXHosFQNtKwztv+rFuC0 7UYe41IVeyjDqyfyorGc5wbbN5dTvt4Rgq7eQHZpY4IC0YCGEWpi5Y9pVWHZhMmql9ghOInDSo3 rGvxoM7rxvIensfA= X-Google-Smtp-Source: AGHT+IEKg2sAljzc60RG1x7zQS31Y71/y6HRPvtwzajn+isSwZjg667wjhQKlzCNX2y4YKOKam9UjA== X-Received: by 2002:a05:6512:10d5:b0:549:8675:c388 with SMTP id 2adb3069b0e04-54d64af3fbbmr2088472e87.52.1744899942203; Thu, 17 Apr 2025 07:25:42 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54d65e43647sm370096e87.58.2025.04.17.07.25.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Apr 2025 07:25:41 -0700 (PDT) From: Ulf Hansson To: Saravana Kannan , Stephen Boyd , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Greg Kroah-Hartman , Michael Grzeschik , Bjorn Andersson , Abel Vesa , Devarsh Thakkar , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 06/11] pmdomain: core: Add the genpd->dev to the genpd provider bus Date: Thu, 17 Apr 2025 16:25:04 +0200 Message-ID: <20250417142513.312939-7-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417142513.312939-1-ulf.hansson@linaro.org> References: <20250417142513.312939-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 To take the next step for a more common handling of the genpd providers, let's add the genpd->dev to the genpd provider bus when registering a genpd OF provider. Beyond this, the corresponding genpd provider driver's ->probe(), ->remove() and ->sync_state() callbacks starts to be invoked. However, let's leave those callbacks as empty functions for now. Instead, subsequent changes will implement them. Signed-off-by: Ulf Hansson --- drivers/pmdomain/core.c | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 3911d3e96626..5aba66ac78f1 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -2640,11 +2640,17 @@ int of_genpd_add_provider_simple(struct device_node *np, device_set_node(&genpd->dev, fwnode); + ret = device_add(&genpd->dev); + if (ret) + return ret; + /* Parse genpd OPP table */ if (!genpd_is_opp_table_fw(genpd) && genpd->set_performance_state) { ret = dev_pm_opp_of_add_table(&genpd->dev); - if (ret) - return dev_err_probe(&genpd->dev, ret, "Failed to add OPP table\n"); + if (ret) { + dev_err_probe(&genpd->dev, ret, "Failed to add OPP table\n"); + goto err_del; + } /* * Save table for faster processing while setting performance @@ -2655,19 +2661,22 @@ int of_genpd_add_provider_simple(struct device_node *np, } ret = genpd_add_provider(np, genpd_xlate_simple, genpd); - if (ret) { - if (genpd->opp_table) { - dev_pm_opp_put_opp_table(genpd->opp_table); - dev_pm_opp_of_remove_table(&genpd->dev); - } - - return ret; - } + if (ret) + goto err_opp; genpd->provider = fwnode; genpd->has_provider = true; return 0; + +err_opp: + if (genpd->opp_table) { + dev_pm_opp_put_opp_table(genpd->opp_table); + dev_pm_opp_of_remove_table(&genpd->dev); + } +err_del: + device_del(&genpd->dev); + return ret; } EXPORT_SYMBOL_GPL(of_genpd_add_provider_simple); @@ -2702,12 +2711,17 @@ int of_genpd_add_provider_onecell(struct device_node *np, device_set_node(&genpd->dev, fwnode); + ret = device_add(&genpd->dev); + if (ret) + goto error; + /* Parse genpd OPP table */ if (!genpd_is_opp_table_fw(genpd) && genpd->set_performance_state) { ret = dev_pm_opp_of_add_table_indexed(&genpd->dev, i); if (ret) { dev_err_probe(&genpd->dev, ret, "Failed to add OPP table for index %d\n", i); + device_del(&genpd->dev); goto error; } @@ -2743,6 +2757,8 @@ int of_genpd_add_provider_onecell(struct device_node *np, dev_pm_opp_put_opp_table(genpd->opp_table); dev_pm_opp_of_remove_table(&genpd->dev); } + + device_del(&genpd->dev); } return ret; @@ -2775,6 +2791,8 @@ void of_genpd_del_provider(struct device_node *np) dev_pm_opp_put_opp_table(gpd->opp_table); dev_pm_opp_of_remove_table(&gpd->dev); } + + device_del(&gpd->dev); } } From patchwork Thu Apr 17 14:25:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 882184 Received: from mail-lf1-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) (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 B3EFA253350 for ; Thu, 17 Apr 2025 14:25:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899948; cv=none; b=lDFkQqkuSOsEp1j8HO/eeihB8w4UomIdxE6lZIYZC2y2sXfgIu6VocoHHaniK8udeS3PnxVicXOG79+0kQUx602GkWeWGClUJQXcVosvP2e2sWziExnmiS5CbWPl52mzgTSlEakUB7G0Mbac98sZItmjXBZUOTQFsh7XoU0yc1U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899948; c=relaxed/simple; bh=aN8FEk2gTwraQmA2Okw28VZvXnn4IpMUEhiRqft6pRM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kmmHqxaNVe2B6Ap5qorxAiMrjUQUZqdNp4bM2WWzgjXkjuhe6STCJ+AFu/4/j97Glmp0hlLHEcHXI67pANyn0CxEUTgj1t8G2epxMlBSJ06TGXekbGR+9NyLjcyTxU4+h+h28DrBV++7LF9bL2XOTFJn7v09ufJRLXEiJnxERks= 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=yVy5L502; arc=none smtp.client-ip=209.85.167.45 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="yVy5L502" Received: by mail-lf1-f45.google.com with SMTP id 2adb3069b0e04-54298ec925bso434275e87.3 for ; Thu, 17 Apr 2025 07:25:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1744899945; x=1745504745; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/DgFXHRgSnMuDIPCx1JNgWD3fMJlP6odjvf+kJnYpPA=; b=yVy5L5027EaTAPgylmnLEUY4rL1ClD7aXMlPabQGjdrOWE3+rJHrvCarDc1m1xPcUM yOciC6OW8iEeQ04/nYzhTtDI+SK8I9yOdIX3JR2WRnQY00VNz8NnJw6z83j81GGa4YKG 0kcpmfruS7MiTPIUNjKoo+oPgfDXyDk4Q1A2mKGSY3Q9VEyza/ES5bmgcdCRrL9qzkuc gPAt5DO1fRLK+bD3TXEnD8aFD6CFFVBeagf2Bdvujg8x6YhUd1K/q08u6jRPHsy+dHVP 1bAbsT/buFntkLuF0M4AAgSeyeeilCBtLjlwuEp9ZVXt3GliXvHO7kce5tE272FmXUq6 sD/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744899945; x=1745504745; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/DgFXHRgSnMuDIPCx1JNgWD3fMJlP6odjvf+kJnYpPA=; b=Ye413BgNHNcuKIuVFlw2r1r48jLXvhJtpyQh7rJnj8TwImAe2AkdwVWCjrzOs2kOWW AP4rfCBwo77HZ4JZoryhfYEXpwdzb/gMiN8UYUF90XRaYZlynHajYTkfSZ4AsChj47Gj tFMMzVs9ZKgFh+fttCx4XhBfJIltGcqs3aLcQqLVTJTdvhf6/JLXNCKNgBRbCf6ItWo3 fcs9m5SobsViC1QOf5a86Gqx0i46+ZSpWth5SthzDZ7fE9LcJvUsxosPDw/BvpmPmwpC w0iaDEBRJttBsg7ILoFoxzt7/WRjX6cWOfy29/i9Zad2YLSP6ZGTfNEnjzDRwus4XOSQ 912A== X-Forwarded-Encrypted: i=1; AJvYcCUWwjd7T0WMPLW5syVJ2vEULlIDqCuuCK19jJYvs09tVf93sVoWwOlRufseT7WfYa/Fp+dIxaoB3A==@vger.kernel.org X-Gm-Message-State: AOJu0Yxz5isSTFFrBuDprxBUhab0qbR7V/7tGQHD7zGNlwRpAyY30y64 1BEyupjQBBD4U9mmf/n4ncSnXHPRgT5xPscx0Rpksvs2BxYBYDP4jT8vLPgxlgY= X-Gm-Gg: ASbGncueSuTlo6/RTPyTU7T/CsIGOHjAPrUNFRRZX68X0jn9RTJUq7cGQ3p7EFvddWi hDonyYmaXbXvYnZms6HreWLrDijdxo0ar0qD8WLLscRL0rtVocKawZ0TfLHWT7k0RYGBfCoUkgW 0VMgjugKJ6nUdzz2oRNQAnS515U7xKpbqfyoXgya/O8q+3HcqBBOJ5f95c006NtI0yrOYQescKb OrXGLUzkIugpjQD1q5kWcW552lriaTykvsOQeg+rTDolVobTloZufUr9Mv7evw/xOTyzHxZWS2u 4FHZ5DBZs+CuKc1qNDcJVhzrKcKim9K5RQedkg8/bdzEppo/Nz5M7f9tvMhTLA41lYwqj1LJbyb l84vaSQSWap4VV8c= X-Google-Smtp-Source: AGHT+IHdJaQxomsfYSS+f0K9itIKdmZijhFhwWEW6ghpA5npqy5MAC8rCQkmORhb5jt3ng77hEg7hw== X-Received: by 2002:a05:6512:3055:b0:54b:117c:a070 with SMTP id 2adb3069b0e04-54d64af157dmr2157090e87.57.1744899944885; Thu, 17 Apr 2025 07:25:44 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54d65e43647sm370096e87.58.2025.04.17.07.25.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Apr 2025 07:25:44 -0700 (PDT) From: Ulf Hansson To: Saravana Kannan , Stephen Boyd , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Greg Kroah-Hartman , Michael Grzeschik , Bjorn Andersson , Abel Vesa , Devarsh Thakkar , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 08/11] pmdomain: core: Add internal ->sync_state() support for genpd providers Date: Thu, 17 Apr 2025 16:25:06 +0200 Message-ID: <20250417142513.312939-9-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417142513.312939-1-ulf.hansson@linaro.org> References: <20250417142513.312939-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 If the genpd provider's fwnode doesn't have an associated struct device with it, we can make use of the generic genpd->dev and it corresponding driver internally in genpd to manage ->sync_state(). More precisely, while adding a genpd OF provider let's check if the fwnode has a device and if not, make the preparation to handle ->sync_state() internally through the genpd_provider_driver and the genpd_provider_bus. Signed-off-by: Ulf Hansson --- drivers/pmdomain/core.c | 36 ++++++++++++++++++++++++++++++++++++ include/linux/pm_domain.h | 7 +++++++ 2 files changed, 43 insertions(+) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 512f89e6d302..9c5a77bf59d2 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -2374,6 +2374,7 @@ int pm_genpd_init(struct generic_pm_domain *genpd, INIT_WORK(&genpd->power_off_work, genpd_power_off_work_fn); atomic_set(&genpd->sd_count, 0); genpd->status = is_off ? GENPD_STATE_OFF : GENPD_STATE_ON; + genpd->sync_state = GENPD_SYNC_STATE_OFF; genpd->device_count = 0; genpd->provider = NULL; genpd->device_id = -ENXIO; @@ -2656,6 +2657,7 @@ int of_genpd_add_provider_simple(struct device_node *np, struct generic_pm_domain *genpd) { struct fwnode_handle *fwnode; + struct device *dev; int ret; if (!np || !genpd) @@ -2665,6 +2667,10 @@ int of_genpd_add_provider_simple(struct device_node *np, return -EINVAL; fwnode = &np->fwnode; + dev = fwnode->dev; + + if (!dev) + genpd->sync_state = GENPD_SYNC_STATE_SIMPLE; device_set_node(&genpd->dev, fwnode); @@ -2718,8 +2724,10 @@ int of_genpd_add_provider_onecell(struct device_node *np, { struct generic_pm_domain *genpd; struct fwnode_handle *fwnode; + struct device *dev; unsigned int i; int ret = -EINVAL; + bool sync_state = false; if (!np || !data) return -EINVAL; @@ -2728,6 +2736,10 @@ int of_genpd_add_provider_onecell(struct device_node *np, data->xlate = genpd_xlate_onecell; fwnode = &np->fwnode; + dev = fwnode->dev; + + if (!dev) + sync_state = true; for (i = 0; i < data->num_domains; i++) { genpd = data->domains[i]; @@ -2737,6 +2749,11 @@ int of_genpd_add_provider_onecell(struct device_node *np, if (!genpd_present(genpd)) goto error; + if (sync_state) { + genpd->sync_state = GENPD_SYNC_STATE_ONECELL; + sync_state = false; + } + device_set_node(&genpd->dev, fwnode); ret = device_add(&genpd->dev); @@ -3453,6 +3470,25 @@ static void genpd_provider_remove(struct device *dev) static void genpd_provider_sync_state(struct device *dev) { + struct generic_pm_domain *genpd = container_of(dev, struct generic_pm_domain, dev); + + switch (genpd->sync_state) { + case GENPD_SYNC_STATE_OFF: + break; + + case GENPD_SYNC_STATE_ONECELL: + of_genpd_sync_state(dev); + break; + + case GENPD_SYNC_STATE_SIMPLE: + genpd_lock(genpd); + genpd_power_off(genpd, false, 0); + genpd_unlock(genpd); + break; + + default: + break; + } } static struct genpd_provider_drv genpd_provider_drv = { diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h index e9a1f8975c4f..2185ee9e4f7c 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h @@ -127,6 +127,12 @@ enum genpd_notication { GENPD_NOTIFY_ON, }; +enum genpd_sync_state { + GENPD_SYNC_STATE_OFF = 0, + GENPD_SYNC_STATE_SIMPLE, + GENPD_SYNC_STATE_ONECELL, +}; + struct dev_power_governor { bool (*power_down_ok)(struct dev_pm_domain *domain); bool (*suspend_ok)(struct device *dev); @@ -187,6 +193,7 @@ struct generic_pm_domain { unsigned int performance_state; /* Aggregated max performance state */ cpumask_var_t cpus; /* A cpumask of the attached CPUs */ bool synced_poweroff; /* A consumer needs a synced poweroff */ + enum genpd_sync_state sync_state; /* How sync_state is managed. */ int (*power_off)(struct generic_pm_domain *domain); int (*power_on)(struct generic_pm_domain *domain); struct raw_notifier_head power_notifiers; /* Power on/off notifiers */ From patchwork Thu Apr 17 14:25:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 882183 Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) (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 272402517A5 for ; Thu, 17 Apr 2025 14:25:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899952; cv=none; b=oIsSG0OfkCJbkraO4L7atdF00TcWJB8DP+YIouO+x9EpzAu4sacx1k9XH0PWXJ2mLYXdwiMtFcPLw1QFtnKCACY9N8jif+Zxby1d3v7LvGKtPm3gxYXx4AbvmOFG/U14Jn0RML1mw+pOT0eYXN1jP1OKjGPdgGNCQcSV34BqBm0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899952; c=relaxed/simple; bh=qufReoonGhxKbTrj9KGiMOUNKUggmPheexh2sLrPrQE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=c7NxOHT+LDi8GHycIxNMAMR3UpnH158zdUIkGXXf8p8Hp+PCSu5fCTeQfUQfthf0JZ5y5CDqQn7cMyi/diFQpj1gil+2ncNp99P1/A+nAN/93G37P2jKQ+Au52mj+S6tAniXscyU3/q2IvOWCHQFT5rdWUvO2FN2LIk4noHvC0g= 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=XSz5gDD/; arc=none smtp.client-ip=209.85.167.54 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="XSz5gDD/" Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-54af20849adso887788e87.1 for ; Thu, 17 Apr 2025 07:25:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1744899948; x=1745504748; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8TjEcikoo6DSPkHDkOpmkpqUSlM//3uPYTFXI+t8fY4=; b=XSz5gDD/eUy8E/wN11YQasrdC1RN+9ZKaKBcYBaZ6C7i9QXro9HpQuHKGLRWYgLZSw we9J3j0MDCm2LrACBdpt0aMiOTlNXLkAENzuZnBoLBiptBBapXMSCgZ7IEo2RBlbrLdv lrpY++ZDI8Mahsmmb8MIGUTi/POrNH4Z1oyPtvZtfZ+PFmmkzolO0m6B8kGjqE1B6njb drljXOdtTdaTEvy+zdFi9g78la7Ia+IMzHgC1qG1H9F6ihJ/Ugk6QFDdKyWK0dG5susi OBk9Qre87MI8n0tMIHYtebv9X65Ti6fvJyq3Gnf/8LD6dbcA7h/324yhajRF8SaNQ0VU yFug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744899948; x=1745504748; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8TjEcikoo6DSPkHDkOpmkpqUSlM//3uPYTFXI+t8fY4=; b=p/sBbKpjmJpyZDbNeWOsNxNPPRLP/+zA7mZsXe7IIDMZxIRhofAGrv0NpP1+5BnBAG VnmVJ+KU0ol3JHVsroIKi+nh3CrM4uY1CRhaz1yoPe40guSQeoeJ7iVstGv5f5w5QIe7 bPkZP0KRLi6eM80J8TuK/OI6Jq9S3SkBEqp+qqLQRL5k/Uc29midZi0OPevlu76q0A/M S0Hm7uO207MB3ds1l/dgstu5NMmcBIBAO3iiV9FJbEUBrLIJXoSFe0jVoDlsCUbF0WGT F7z9wqsdjPwGnkTfxaZjqLYqBQJOsNMaxcGxpzVA2tLK9k2pwCHM+OLMaRTTNyP1Jlvb suEQ== X-Forwarded-Encrypted: i=1; AJvYcCWMs8EM1Z31/hBDZemtBgoPLwkpgydij9GasvGzDktPHvX6jGdjqfJ9eJwjlWF9GSStSLAD0LoozA==@vger.kernel.org X-Gm-Message-State: AOJu0YwHOTTvVuzbKCnDIT/mRVDIItRvi9IvAxnQsSWlaZkpnaIYuSSu Bmst85yJa5pG0Liv3lsXWmZNkoHoOVTKTXLvirqLuY4zRmFBS9ju18RRzmIUP0A= X-Gm-Gg: ASbGncvhI7n0Nopkw4ujuhcJPDLUKXOYXcXtroAQeI21RmTavlH+I9mpc06SSDLnYi8 dEQxRc2PrvZIwOLff2tGh/V/kfogASfHauGXiUTgykXMHOj+ritaSrwMwmIhANdZ1j1XIEoHflP EODorPUrDzIfID5eliWJ7NKm7n0tkXnoaRLusJ4KgrxVNqobDrLzVUWlJov/uyuQNxepc2wo5eA lebHQWdySMP/6ul2HPjbIhErtKgub6xvIaK+sm2iojRENX7R3/hmk4aI8rQIzIMsQUbLY5I3XZd Bl/SoGVDxt8bdpBnC4p5qxtz9qQTr0Y2ke4McsVBG4MhigUxCbNSnuNhGdXryz1F2I5emZHyj/y VEIF+mnWC5VXNxGU= X-Google-Smtp-Source: AGHT+IHqso8NP2mkjGd2codcc9AYXMx3rITJMfiumhfwHLFCKjgzoXmRta3CnFxIynd4smfXKHkXFg== X-Received: by 2002:a05:6512:3e01:b0:54b:117f:686f with SMTP id 2adb3069b0e04-54d6dc1df78mr5182e87.28.1744899948235; Thu, 17 Apr 2025 07:25:48 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54d65e43647sm370096e87.58.2025.04.17.07.25.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Apr 2025 07:25:47 -0700 (PDT) From: Ulf Hansson To: Saravana Kannan , Stephen Boyd , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Greg Kroah-Hartman , Michael Grzeschik , Bjorn Andersson , Abel Vesa , Devarsh Thakkar , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 10/11] pmdomain: core: Default to use of_genpd_sync_state() for genpd providers Date: Thu, 17 Apr 2025 16:25:08 +0200 Message-ID: <20250417142513.312939-11-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417142513.312939-1-ulf.hansson@linaro.org> References: <20250417142513.312939-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Unless the typical platform driver that act as genpd provider, has its own ->sync_state() callback implemented let's default to use of_genpd_sync_state(). More precisely, while adding a genpd OF provider let's assign the ->sync_state() callback, in case the fwnode has a device and its driver/bus doesn't have the ->sync_state() set already. In this way the typical platform driver doesn't need to assign ->sync_state(), unless it has some additional things to manage beyond genpds. Signed-off-by: Ulf Hansson --- drivers/pmdomain/core.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 9c5a77bf59d2..695d7d9e5582 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -2671,6 +2671,8 @@ int of_genpd_add_provider_simple(struct device_node *np, if (!dev) genpd->sync_state = GENPD_SYNC_STATE_SIMPLE; + else if (!dev_has_sync_state(dev)) + dev_set_drv_sync_state(dev, of_genpd_sync_state); device_set_node(&genpd->dev, fwnode); @@ -2740,6 +2742,8 @@ int of_genpd_add_provider_onecell(struct device_node *np, if (!dev) sync_state = true; + else if (!dev_has_sync_state(dev)) + dev_set_drv_sync_state(dev, of_genpd_sync_state); for (i = 0; i < data->num_domains; i++) { genpd = data->domains[i];