Received: by 2002:ab2:687:0:b0:1f4:6588:b3a7 with SMTP id s7csp236344lqe; Tue, 9 Apr 2024 23:41:55 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXTHnKI1viEk0KOmdo0EFTG7wr84LxNjPER8NcZdj0bzmO5mOiD+SrVa3EBjTC8GwSV0MiiYJTLLJ+rPBuEjgyWrONVPQQZ+fGq/sPm2w== X-Google-Smtp-Source: AGHT+IGKivC0cnouGLzPXR36qyqMAFxWFZ3YeyGf4TJ8N5sdLerL/CCg5Gq7HGsyvEUAru49+ZjX X-Received: by 2002:a25:1142:0:b0:de0:d728:1b21 with SMTP id 63-20020a251142000000b00de0d7281b21mr1520873ybr.54.1712731315603; Tue, 09 Apr 2024 23:41:55 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712731315; cv=pass; d=google.com; s=arc-20160816; b=vPR5qSZvihMCcXE4NKGVPHS4o1wM5JKtPgXXR5e31U7xFc8xEKJjoa/OH4qrI+sH5v MqdoNUC17li6zNlAq5znL7Ymaa5vLrj3/UsvwHf2VcbunvelDvOgdG9pxGADBRd+o0Pi Z6canHO9v8NjE/2CcVsZA9BoDPHjgt5JSN7F+nzWIUWQw9PlC+1otQgC9PtyuJKsnFMJ fw79ihnvwrhjuBKN0XkRZrNBeuAdHBK3NNKnBewNRE8Q2YCZDcIL54d2/x58fUf2wfNP nSn6ybn40wJPo1tEmf05lKrB544uN+U9v5rJ0RmyNqaa3yydEo9sBTT676YHj85/0iv+ vUYA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=ULjSHB0x63Af2OJ8U4INf3tsrB3CGdyFz+RLoMDISVg=; fh=AhBBpAg3lh+I88+AkRWrI5Uf1UcuTYxs1zmDN5pI7xY=; b=MAWYOIkf9UxyUj7+c5ovnC1ytGdD43m3584XHFZ5bZxSEdyJ37AoaiCUkHd8edHz2D 7fb1od5Hfeve6gIhY5Ypw7XyaG3wP3NqsAUGd6A4MdF5vgjliDUOn8WXLtOrO7CXeXaO OD42RSkzw3PeDjnwcRSIgk6U1jWYCaFyG0jHwGHYFu+BABvop8xsa210JdybMpOaUttV s4/grjkli8+QcMO+RzxFdlG9hZI22tsyrmCCFdlUy0ObYszItPiIjN/UsFWkcWVya2vq FtX0gai518z0UBeoXW/lm+Tmke7IZVRA2SFIKUWxBEG5oxvb1QsGp0jMA3vi72VMErf7 oshQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@atomide.com header.s=25mailst header.b=FrJkEGEf; arc=pass (i=1 dkim=pass dkdomain=atomide.com); spf=pass (google.com: domain of linux-kernel+bounces-138010-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-138010-linux.lists.archive=gmail.com@vger.kernel.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 z10-20020ac87f8a000000b004348b9e8431si7117411qtj.598.2024.04.09.23.41.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Apr 2024 23:41:55 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-138010-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=@atomide.com header.s=25mailst header.b=FrJkEGEf; arc=pass (i=1 dkim=pass dkdomain=atomide.com); spf=pass (google.com: domain of linux-kernel+bounces-138010-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-138010-linux.lists.archive=gmail.com@vger.kernel.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 359801C22C3B for ; Wed, 10 Apr 2024 06:41:55 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 071962BB0F; Wed, 10 Apr 2024 06:41:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=atomide.com header.i=@atomide.com header.b="FrJkEGEf" Received: from mail5.25mail.st (mail5.25mail.st [74.50.62.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 762303A1B5; Wed, 10 Apr 2024 06:41:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.50.62.9 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712731289; cv=none; b=IE7gYvQ57PkX8uR7nvMZwVsbmVJAkRDpsDPs09PQksDPEYwv09hNXnVuDiv8lEdi9h5h2MnFzjE1g+SGoa0j6BYg+ItfA8JUahr826nAOBQ0/O7VUQ9JXpzmvuPH/BzkvbmoDnhkZ+ehN/YoY7c6JDj6eXoy3AgK+fEfcHOZ1to= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712731289; c=relaxed/simple; bh=8bGZqPY7HaCj+eCY7bxYO4nE9VKSXNZpeySHbLtdy9w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=E7KgorsQB2g97Hr9zOR3AOXeMYRvBqCM0DGU8je106jEQwmRUdJF5jS6aCuhF8OsRrKlLo1UgTdExOO4Dacj56/J+Gf/xcWcdPN9D6GyrdMi1jlc3tW9Pc0fD27v3IaYTaRsKdB3Zlfg9Wxz+oWvr5gzPbnO4oax2ggn3KQKLdg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomide.com; spf=fail smtp.mailfrom=atomide.com; dkim=pass (2048-bit key) header.d=atomide.com header.i=@atomide.com header.b=FrJkEGEf; arc=none smtp.client-ip=74.50.62.9 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomide.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=atomide.com Received: from localhost (91-158-86-216.elisa-laajakaista.fi [91.158.86.216]) by mail5.25mail.st (Postfix) with ESMTPSA id 0F6116034B; Wed, 10 Apr 2024 06:41:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=atomide.com; s=25mailst; t=1712731286; bh=8bGZqPY7HaCj+eCY7bxYO4nE9VKSXNZpeySHbLtdy9w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FrJkEGEfDNekjel8w+hiZvzQP8wl3K0pTBiYikgZFJ8nRrLcwGxlgwg1BOJhYx/5m 1ds1xBDXOIo8X2+FkR1k/quydNaViOvuq5n43xlp7qVURxrkGo5azeQHcJyQA3vHqs up/rj9Vnmk694VrVGwC5AWUUTRU8acptAXWhUiFzzlXNZdZRn+j93XzGdhJhb2dwuZ mMvv0YvWvY4cp8ZMuqxWWdSa+Ups5mLGS0c4OslfBC6BUQSgUfvcavVp+9ajTSg1p0 LDqcgXSktbmClwwlKrQlkJ/MivrYGZ6awbM6zr9OH7Wn3020i/F7m1/5PMHNjmaCwI ZtGKZFC7j5mog== From: Tony Lindgren To: linux-omap@vger.kernel.org Cc: Dhruva Gole , Greg Kroah-Hartman , linux-kernel@vger.kernel.org Subject: [PATCH v2 5/5] bus: ti-sysc: Drop legacy idle quirk handling Date: Wed, 10 Apr 2024 09:40:09 +0300 Message-ID: <20240410064010.57142-6-tony@atomide.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240410064010.57142-1-tony@atomide.com> References: <20240410064010.57142-1-tony@atomide.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit There are no more users that need the legacy idle quirk so let's drop the legacy idle quirk handling. This simplifies the PM code to just sysc_pm_ops with unified handling for all the interconnect targets. Reviewed-by: Dhruva Gole Signed-off-by: Tony Lindgren --- drivers/bus/ti-sysc.c | 109 +------------------------- include/linux/platform_data/ti-sysc.h | 1 - 2 files changed, 2 insertions(+), 108 deletions(-) diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c --- a/drivers/bus/ti-sysc.c +++ b/drivers/bus/ti-sysc.c @@ -1469,8 +1469,7 @@ static int __maybe_unused sysc_noirq_suspend(struct device *dev) ddata = dev_get_drvdata(dev); - if (ddata->cfg.quirks & - (SYSC_QUIRK_LEGACY_IDLE | SYSC_QUIRK_NO_IDLE)) + if (ddata->cfg.quirks & SYSC_QUIRK_NO_IDLE) return 0; if (!ddata->enabled) @@ -1488,8 +1487,7 @@ static int __maybe_unused sysc_noirq_resume(struct device *dev) ddata = dev_get_drvdata(dev); - if (ddata->cfg.quirks & - (SYSC_QUIRK_LEGACY_IDLE | SYSC_QUIRK_NO_IDLE)) + if (ddata->cfg.quirks & SYSC_QUIRK_NO_IDLE) return 0; if (ddata->cfg.quirks & SYSC_QUIRK_REINIT_ON_RESUME) { @@ -2457,89 +2455,6 @@ static int __maybe_unused sysc_child_runtime_resume(struct device *dev) return pm_generic_runtime_resume(dev); } -#ifdef CONFIG_PM_SLEEP -static int sysc_child_suspend_noirq(struct device *dev) -{ - struct sysc *ddata; - int error; - - ddata = sysc_child_to_parent(dev); - - dev_dbg(ddata->dev, "%s %s\n", __func__, - ddata->name ? ddata->name : ""); - - error = pm_generic_suspend_noirq(dev); - if (error) { - dev_err(dev, "%s error at %i: %i\n", - __func__, __LINE__, error); - - return error; - } - - if (!pm_runtime_status_suspended(dev)) { - error = pm_generic_runtime_suspend(dev); - if (error) { - dev_dbg(dev, "%s busy at %i: %i\n", - __func__, __LINE__, error); - - return 0; - } - - error = sysc_runtime_suspend(ddata->dev); - if (error) { - dev_err(dev, "%s error at %i: %i\n", - __func__, __LINE__, error); - - return error; - } - - ddata->child_needs_resume = true; - } - - return 0; -} - -static int sysc_child_resume_noirq(struct device *dev) -{ - struct sysc *ddata; - int error; - - ddata = sysc_child_to_parent(dev); - - dev_dbg(ddata->dev, "%s %s\n", __func__, - ddata->name ? ddata->name : ""); - - if (ddata->child_needs_resume) { - ddata->child_needs_resume = false; - - error = sysc_runtime_resume(ddata->dev); - if (error) - dev_err(ddata->dev, - "%s runtime resume error: %i\n", - __func__, error); - - error = pm_generic_runtime_resume(dev); - if (error) - dev_err(ddata->dev, - "%s generic runtime resume: %i\n", - __func__, error); - } - - return pm_generic_resume_noirq(dev); -} -#endif - -static struct dev_pm_domain sysc_child_pm_domain = { - .ops = { - SET_RUNTIME_PM_OPS(sysc_child_runtime_suspend, - sysc_child_runtime_resume, - NULL) - USE_PLATFORM_PM_SLEEP_OPS - SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(sysc_child_suspend_noirq, - sysc_child_resume_noirq) - } -}; - /* Caller needs to take list_lock if ever used outside of cpu_pm */ static void sysc_reinit_modules(struct sysc_soc_info *soc) { @@ -2610,25 +2525,6 @@ static void sysc_add_restored(struct sysc *ddata) mutex_unlock(&sysc_soc->list_lock); } -/** - * sysc_legacy_idle_quirk - handle children in omap_device compatible way - * @ddata: device driver data - * @child: child device driver - * - * Allow idle for child devices as done with _od_runtime_suspend(). - * Otherwise many child devices will not idle because of the permanent - * parent usecount set in pm_runtime_irq_safe(). - * - * Note that the long term solution is to just modify the child device - * drivers to not set pm_runtime_irq_safe() and then this can be just - * dropped. - */ -static void sysc_legacy_idle_quirk(struct sysc *ddata, struct device *child) -{ - if (ddata->cfg.quirks & SYSC_QUIRK_LEGACY_IDLE) - dev_pm_domain_set(child, &sysc_child_pm_domain); -} - static int sysc_notifier_call(struct notifier_block *nb, unsigned long event, void *device) { @@ -2645,7 +2541,6 @@ static int sysc_notifier_call(struct notifier_block *nb, error = sysc_child_add_clocks(ddata, dev); if (error) return error; - sysc_legacy_idle_quirk(ddata, dev); break; default: break; diff --git a/include/linux/platform_data/ti-sysc.h b/include/linux/platform_data/ti-sysc.h --- a/include/linux/platform_data/ti-sysc.h +++ b/include/linux/platform_data/ti-sysc.h @@ -71,7 +71,6 @@ struct sysc_regbits { #define SYSC_QUIRK_SWSUP_SIDLE_ACT BIT(12) #define SYSC_QUIRK_SWSUP_SIDLE BIT(11) #define SYSC_QUIRK_EXT_OPT_CLOCK BIT(10) -#define SYSC_QUIRK_LEGACY_IDLE BIT(9) #define SYSC_QUIRK_RESET_STATUS BIT(8) #define SYSC_QUIRK_NO_IDLE BIT(7) #define SYSC_QUIRK_NO_IDLE_ON_INIT BIT(6) -- 2.44.0