From nobody Fri Sep 25 21:01:20 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 65E1E5908C2 for ; Tue, 8 Sep 2026 17:47:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788889672; cv=none; b=u7o18ie7YOBJPfjuGz5ANzCj6cchrSnmTYIMGWrShVzwTjcFcd+msIBexUck0Sg5zJq915gKk/1BvTc+tcvqo6sMIBhAnDITv6+RgduzrDRDJ9/l7iUAVramHL7nTu000SKOqDiu3/cA19OaYoVhYYj0szTGdbIJ7SeIAewVQC4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788889672; c=relaxed/simple; bh=a7E1cAnanYVVkRWaKkPGdq4ia4gYC62syLjr8jr85LY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=byxfKLVhOlZgQ05YZW0vtfOdM3fYpEGACGoNpynIqHGMC8rBvoVrPx3dm+ZEuBpoWKF9FM+84hOAF4sPOhv3zfnLmXD2ieSEInOJSJvbTLIF7fYvrmkjMiBE9WtURVJRenT/POOTn4BErlykQOssNCWIYCfdV343Qm+158wmkMc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=D3YFZunP; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=cFtdCXZB; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="D3YFZunP"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="cFtdCXZB" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1788889669; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JmkVIyJpnqsnRkQ/AN9eH6zCUWkahngJ6micUwzJvZg=; b=D3YFZunPI3SMlTf5DcpezVwB1jkUXyKHLnYiH+y4p0GiCGFrv5xJnbPH485p452andZ1+G 8otanSp2I5/qMmEEOCIA9leNGCSaW9UeN2fT6ETmPjNdJ5SWuczro6A6Qj4HbU9rDjylCn 7rB9rNpdYgcR78jhFAat4O3kn6CsgSo= Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-75-K1bLzIYvMjSK9TZx5tJIhQ-1; Tue, 08 Sep 2026 13:47:48 -0400 X-MC-Unique: K1bLzIYvMjSK9TZx5tJIhQ-1 X-Mimecast-MFC-AGG-ID: K1bLzIYvMjSK9TZx5tJIhQ_1788889667 Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-9104ba8bf51so75088716d6.3 for ; Tue, 08 Sep 2026 10:47:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1788889667; x=1789494467; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=JmkVIyJpnqsnRkQ/AN9eH6zCUWkahngJ6micUwzJvZg=; b=cFtdCXZBVF6u0AgOUQEn0l4w6S0EYRaPxTMKWH3VBGM0KYYiCiBsaEzHHs9qM03LbL 17KVlXiRjR/KmRwqzhTAf3vOMkgO5qKAxCs3eN/dR9fI0HCZc7o48gk/pRwNwICgYy4F hq1X3ZmQW5eKTyMCdYnHoE5eoB1K3KGjK7P4OXypOmXVhXNFj2TxhUCHlniuQ8Y+nVLK 9vselbUhd8Eb3c6D2i2daHuHhCQYOYJYOv1sHCMeZu0ku8Bw2TAXRBAyXOxUxJ9c67OH nforgBV8iNjqid9GazlhUfkbArU42xM7iNK6oW70aTJL4yKfL1iWfZbmrtadl8zxoP9K DBoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788889667; x=1789494467; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=JmkVIyJpnqsnRkQ/AN9eH6zCUWkahngJ6micUwzJvZg=; b=OmKaY6rAYYtXqBIOUYyqmy0y0Xs4y7okWsZRl1mcioI25mHqotGse/dnl0Sk5AQiq7 5vxOZsBBAGYpdGn9FYpO/ytYak+gbO+cUBBsl9Tf1eEKO2kDvIXJXwGE7Q2jCFMS9c7X b4pM141KIYujIleYm3+9pRP6WTLVWeMp7dS89xeQ/z+GiQawxJsxBJv25ipgUByF8YTR rx3o+ovB83DxLcGx0epo5j5YowwjI99U0y6EJkExDMNrJxlKRFq3ToFClvegsN+lQCoT lacIqc0IdAaQboDhzN0qovxRVY3mBdnnJeZEA5MXU4dUu1v7u0sm4rCxUPwjnKaiqiga hMBw== X-Forwarded-Encrypted: i=1; AKwUvBwLRcuLyA2+DzQmIPt/WJPuB6SSJNGWvGrDcjmH37uGtCWIGuayVU9Gm6yvMJK3GigOJdO6fM+xPiNeGRU=@vger.kernel.org X-Gm-Message-State: AFuF++lZkfqlvI8HKievx/R+TNyonPzJhFCKa6jN34RlhGSI/NI6VA7m Bv5h41By+dLIG6MbtPVvzvqUtGEYgXGDPaoPKhzLjYKabkSCYbt0D0c6DpvYFe+TwzNDfcTVsV3 hx2nXICOssVXGjgtLHIxyu9VreYq9lUuZ0Ag5y7CLEYa5nqrUtUe4+Oc5iEoH5orweA== X-Gm-Gg: AYBFou3JjsBSLFsk/ckYaBE80x0hYlMLn4eBojHOgp8ZCPLXo5OzNGDpoaQwEiAiVSn jqT3kH1kd3DjdD8dkV7q/ykciu8AkJcCg4dsPNbhAaWHxQrnQbzE1aW/K1YZnt62Iu+FlIoQPEg E9R5/HKQpyU+Rr1YhFhEdlppWMzrN76seVMLG3EFejlY8pDM9OZQg89B3wwHVwPHKspTadGvSXl kQyCBrALYkRTToYfRBm3QTK6DOHpmZELjrR+5qeuKZwrCNxKPwm6DwckLUJZxVEQDgeEtfvbQJc oqiIItaUErRL7EMp2zekXvVitTjZ2e4nRhMyahKLprbAt+V91oOsVMG0KWLEgSuv1iidw4fL37K jY3VxycEc5DaEBYt38DVPSnvIqMMWXQ6kvlt8I6U= X-Received: by 2002:a05:620a:46a2:b0:939:3712:77df with SMTP id af79cd13be357-939803405c3mr3213676685a.21.1788889667272; Tue, 08 Sep 2026 10:47:47 -0700 (PDT) X-Received: by 2002:a05:620a:46a2:b0:939:3712:77df with SMTP id af79cd13be357-939803405c3mr3213671985a.21.1788889666833; Tue, 08 Sep 2026 10:47:46 -0700 (PDT) Received: from [192.168.1.3] (c-73-183-53-213.hsd1.pa.comcast.net. [73.183.53.213]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9397fb9bac1sm1194093685a.35.2026.09.08.10.47.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 10:47:46 -0700 (PDT) From: Brian Masney Date: Tue, 08 Sep 2026 13:47:18 -0400 Subject: [PATCH 1/4] driver: core: add subsys_driver() macro Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260908-subsys_initcall-v1-1-cbccf4cd4288@redhat.com> References: <20260908-subsys_initcall-v1-0-cbccf4cd4288@redhat.com> In-Reply-To: <20260908-subsys_initcall-v1-0-cbccf4cd4288@redhat.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Bjorn Andersson , Stephen Boyd , Jerome Brunet , Geert Uytterhoeven Cc: driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Brian Masney X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2040; i=bmasney@redhat.com; s=20250903; h=from:subject:message-id; bh=a7E1cAnanYVVkRWaKkPGdq4ia4gYC62syLjr8jr85LY=; b=owGbwMvMwCW2/dJd9di6A+2Mp9WSGLIWeNn2tBU1Ni1/dSggNbqg+dfChvjbuQt/uU6Q59qeu buBSUCwo5SFQYyLQVZMkWVJrlFBROoq23t3NFlg5rAygQxh4OIUgIlUcTMynEjas5VdRKHyXNSp jwynb6XoznuXmfJN85R/9wbxuKPTTjAyzIwrYIzpUotZnHuvkkEkgW9DRFtASu7/n+a/65dJC07 nBQA= X-Developer-Key: i=bmasney@redhat.com; a=openpgp; fpr=A46D32705865AA3DDEDC2904B7D2DD275D7EC087 Add a new macro subsys_driver() to eliminate some boilerplate code in drivers that need to register earlier in the boot at the subsys_initcall level. Signed-off-by: Brian Masney Assisted-by: Claude:claude-opus-4-8 Reviewed-by: Abel Vesa Reviewed-by: Geert Uytterhoeven Tested-by: Pankaj Patil --- include/linux/device/driver.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/include/linux/device/driver.h b/include/linux/device/driver.h index 768a1334c0a1..29fbc01ef06f 100644 --- a/include/linux/device/driver.h +++ b/include/linux/device/driver.h @@ -297,4 +297,35 @@ static int __init __driver##_init(void) \ } \ device_initcall(__driver##_init); =20 +/** + * subsys_driver() - Helper macro for drivers that don't do anything speci= al + * in init/exit but have to register earlier, at subsys_initcall level, wh= en + * built in. This eliminates a lot of boilerplate. Each driver may only use + * this macro once, and calling it replaces the init/exit boilerplate. + * + * @__driver: driver name + * @__register: register function for this driver type + * @__unregister: unregister function for this driver type + * @...: Additional arguments to be passed to __register and __unregister. + * + * This is meant to be a direct parallel of module_driver() above, but with + * the init call promoted to subsys_initcall() for built-in drivers so they + * are available earlier during boot. When built as a module subsys_initca= ll() + * collapses to module_init() and the normal module init/exit paths are us= ed. + * + * Use this macro to construct bus specific macros for registering drivers, + * and do not use it on its own. + */ +#define subsys_driver(__driver, __register, __unregister, ...) \ +static int __init __driver##_init(void) \ +{ \ + return __register(&(__driver), ##__VA_ARGS__); \ +} \ +subsys_initcall(__driver##_init) \ +static void __exit __driver##_exit(void) \ +{ \ + __unregister(&(__driver), ##__VA_ARGS__); \ +} \ +module_exit(__driver##_exit) + #endif /* _DEVICE_DRIVER_H_ */ --=20 2.55.0 From nobody Fri Sep 25 21:01:20 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 C941854CF5E for ; Tue, 8 Sep 2026 17:47:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788889673; cv=none; b=R4lqegljimhGAyzYM+/r1lJKSpaos9jPkw/aDlpagY4AjS4jeBT7zG9VpuLMdZtN7qtEnnJVvAM9NVuSPGVC9SZnP+lVuX1mdiA52kjrw3ZdkZ4ANi32sZ+MHBrxYrL++rlqVel2Pf93NVRPK6iDWffelB8TeBCf7nxh3wjvf14= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788889673; c=relaxed/simple; bh=dUQc7PWrbX8uAQtdC+UYHtMhjF0PHNUBZJYOmbunHLw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RdRvBjzf8+tN8dwm9AJZD+SAIv67ZzWpnIBkGc1gc/aeDfpvty0tqBh8kkiH1nCEGvy7NC/ON3/RTVGUzo2m+XYBY9C7EOuDgZ9LGkD5dcgrtjO8XXcu5CnmqRjZ8Tb3jH+UzN92RLeS/w7VyhmHUsib6HNTJquFkmhdQm1H5Sk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=hXx6L928; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=pNmM6S+l; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="hXx6L928"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="pNmM6S+l" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1788889670; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=luyNT9P1mkrzQIhc+xUVIxx4p4MwhVi8AIPUHPOm+So=; b=hXx6L928wMvRxnvyQFXaKA8FLUcC6mk/ikak3pAYTShW/P+9U2dU/UjZxr2oSlXgk2vtlU p1vmXSxhxJ6boVPhn6cBLN/TsTCJ494tSOoOoHfTq1GBUUF7RZLE9rcTG0JIusKrQRs2MC mNR2IPvP+v+eZXKjlOaJH1bhvBhCenI= Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-327-GIQBOAKqOheQ3K89dxJS_Q-1; Tue, 08 Sep 2026 13:47:49 -0400 X-MC-Unique: GIQBOAKqOheQ3K89dxJS_Q-1 X-Mimecast-MFC-AGG-ID: GIQBOAKqOheQ3K89dxJS_Q_1788889669 Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-93903982af1so1023642885a.3 for ; Tue, 08 Sep 2026 10:47:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1788889669; x=1789494469; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=luyNT9P1mkrzQIhc+xUVIxx4p4MwhVi8AIPUHPOm+So=; b=pNmM6S+lWnzLOabIrfOUDsGtHlLfzHedNz672OW8oiBuGCXzqVaXDCSNLjZ353pKZU HT3Pg+zrDq+dvJ73Z+139DuHt8Hkctv59Z8tCIaTtEps/kvG/fDrt3xEosHok2gylxM4 aQBhuWlYkgGuYKIx1eyRZKfhobbJrE3TVWBGVTbHpC7Ka+ATN6+GsepPLG+PbiOTMKT9 XtsaoFXy3OM5CaBcrNGw252Pmn5Fj/ITc4X4qxVFrOL6zsHxthSEeZK/bjeZVf4MBv/2 7JA96V6McoL7ysc5bmQ7uJqZ30Ze/xUGYPsdu3+s08GEKDY8m45VWh3btVqlqQQKjWlN sEHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788889669; x=1789494469; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=luyNT9P1mkrzQIhc+xUVIxx4p4MwhVi8AIPUHPOm+So=; b=Jif/0BEai1nWvAfUPzHqu9be+1j0YLv2g/abeiTCIH/g+BePDpcvDTC2DZgf9M7VIt RhQYPYZ6EGgJTfgzDA5nQUmxeZqfNo1L4D/dBroBKbnIX4cQenzCggvhzumHhMIhC4M8 HdqQRD0yqvBpDIkPmxtAZLyJNws8pxTprcGzszryzgVCHjXLEKNbozjNSZVCxfz2cC/o IYsMq8z7FFaDudUp8Nz0ZKofM82x6rdJwIXUZGw6NQUM/0iI4iHvlLaW5v3F/TnrhaKx vKQkuoDXaar0OrtbrtdJPdxNmotXzLWnXDNFZho0FNUnxoDNuOgYuD4kyY4X6zbZJ+Na hjog== X-Forwarded-Encrypted: i=1; AKwUvBy6EJ8E8pPDFg0FToTXLJYu+rRLOjTyQeHe8boRXgFUouJesIOhLhzX76nBL84uPnN+otbJV9PhhnJyYYM=@vger.kernel.org X-Gm-Message-State: AFuF++mxc/og221/vKN2vtVsQTSYhHQtCjzRpjEO4LEppIDtV2ATtoI1 sbL9Ft9tAVZ0uzerun9ck+ZyupL2WSJthnTJdlr3kKIZ5DTo90ipRHYPFqFaK5kudWgO5GTICAN tDbisTFMGPFdhEHPBC3LOIrzcfyiVcrpzUweYrjSq6KAenWi0mMcNzIRFJzXR/aUjLQ== X-Gm-Gg: AYBFou3/oZoJkdTZ39TzzjzrA1csKhSGWD0H+W3UhS/BBb+8nTwMmjZNU1BfyYT/EO5 7DgDpvOc0yt9JfiLTzbKH9D6LGPlcVTe9Gm4mCqKDxT87MoTA9KodW/a+0j1JUa4DxYQRxNKoUS EJYAAIg2HTNKIdKoTNo74g/cWknCNUw6HL69bsAA9S+T1haAx91c1pPS9t1yuFQLwaHeehsq7DX ZbUDHkqvjJe5zZkTKNzh+Zj6HsgR9PieMuqrpUzGEA5cuqzmvEVy4ScD6G1diOcpj4sk/pwCj8Z CCH83jqGeJ8+N9uDULoT1LHExsCGIT59roz3TBDEuSEvFkBd+EpS135LECPXs7vU8PfLl6+9fSY kAmqMhSspNZucaf5MOWiPXEuif3mcV8ZcWAKcv9g= X-Received: by 2002:a05:620a:25d4:b0:939:6df9:1996 with SMTP id af79cd13be357-9398077453bmr3211076385a.50.1788889668986; Tue, 08 Sep 2026 10:47:48 -0700 (PDT) X-Received: by 2002:a05:620a:25d4:b0:939:6df9:1996 with SMTP id af79cd13be357-9398077453bmr3211071485a.50.1788889668513; Tue, 08 Sep 2026 10:47:48 -0700 (PDT) Received: from [192.168.1.3] (c-73-183-53-213.hsd1.pa.comcast.net. [73.183.53.213]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9397fb9bac1sm1194093685a.35.2026.09.08.10.47.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 10:47:47 -0700 (PDT) From: Brian Masney Date: Tue, 08 Sep 2026 13:47:19 -0400 Subject: [PATCH 2/4] driver: core: platform: add subsys_platform_driver() macro Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260908-subsys_initcall-v1-2-cbccf4cd4288@redhat.com> References: <20260908-subsys_initcall-v1-0-cbccf4cd4288@redhat.com> In-Reply-To: <20260908-subsys_initcall-v1-0-cbccf4cd4288@redhat.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Bjorn Andersson , Stephen Boyd , Jerome Brunet , Geert Uytterhoeven Cc: driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Brian Masney X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2845; i=bmasney@redhat.com; s=20250903; h=from:subject:message-id; bh=dUQc7PWrbX8uAQtdC+UYHtMhjF0PHNUBZJYOmbunHLw=; b=owGbwMvMwCW2/dJd9di6A+2Mp9WSGLIWeNlGl8x1q7io6bY7/Mr1m+sOs8htXTHDgn3Xkynhp n13mGK3dJSwMIhxMciKKbIsyTUqiEhdZXvvjiYLzBxWJpAhDFycAjARrxWMDNOmXTSv84h+H5Nc x6l2bu1a9Z2zF+xt8P8V/vrSApf3xw8xfPd1q/34Y86hFX6zHQTmaxTZqMWemJR+mlll0c+Ol8e FWAA= X-Developer-Key: i=bmasney@redhat.com; a=openpgp; fpr=A46D32705865AA3DDEDC2904B7D2DD275D7EC087 Add a new macro subsys_platform_driver() to eliminate some boilerplate code in drivers that need to register earlier in the boot at the subsys_initcall level. Signed-off-by: Brian Masney Assisted-by: Claude:claude-opus-4-8 Reviewed-by: Abel Vesa Reviewed-by: Geert Uytterhoeven Tested-by: Pankaj Patil --- include/linux/platform_device.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/include/linux/platform_device.h b/include/linux/platform_devic= e.h index 3d5bbcbae730..3bd0f1f0d870 100644 --- a/include/linux/platform_device.h +++ b/include/linux/platform_device.h @@ -344,6 +344,19 @@ static inline void platform_set_drvdata(struct platfor= m_device *pdev, #define builtin_platform_driver(__platform_driver) \ builtin_driver(__platform_driver, platform_driver_register) =20 +/* + * subsys_platform_driver() - Helper macro for drivers that don't do anyth= ing + * special in module init/exit but need to register earlier, at + * subsys_initcall level, when built in. This eliminates a lot of + * boilerplate. Each driver may only use this macro once, and calling it + * replaces module_init() and module_exit(). This is meant to be a parall= el + * of module_platform_driver() above, but with the init call promoted to + * subsys_initcall() so built-in providers are available earlier during bo= ot. + */ +#define subsys_platform_driver(__platform_driver) \ + subsys_driver(__platform_driver, platform_driver_register, \ + platform_driver_unregister) + /* module_platform_driver_probe() - Helper macro for drivers that don't do * anything special in module init/exit. This eliminates a lot of * boilerplate. Each module may only use this macro once, and @@ -376,6 +389,23 @@ static int __init __platform_driver##_init(void) \ } \ device_initcall(__platform_driver##_init); \ =20 +/* + * subsys_platform_driver_probe() - Helper macro for drivers that don't do + * anything special in device init and have no exit, but need to register + * earlier, at subsys_initcall level. This eliminates some boilerplate. = Each + * driver may only use this macro once, and using it replaces subsys_initc= all. + * This is meant to be a parallel of builtin_platform_driver_probe above, = but + * with the init call promoted to subsys_initcall so the provider is avail= able + * earlier during boot. + */ +#define subsys_platform_driver_probe(__platform_driver, __platform_probe) \ +static int __init __platform_driver##_init(void) \ +{ \ + return platform_driver_probe(&(__platform_driver), \ + __platform_probe); \ +} \ +subsys_initcall(__platform_driver##_init) \ + #define platform_create_bundle(driver, probe, res, n_res, data, size) \ __platform_create_bundle(driver, probe, res, n_res, data, size, THIS_MODU= LE, KBUILD_MODNAME) extern struct platform_device *__platform_create_bundle( --=20 2.55.0 From nobody Fri Sep 25 21:01:20 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 76DEB59C992 for ; Tue, 8 Sep 2026 17:47:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788889684; cv=none; b=Yy3q6SVXHxuGVrER4hDpIVUu9T3bMs4QDXxK6cDfwcXr1UKPgxHzqTivbsJ2K5GDxYFrA1IMIVZq2TlqPFVRqDTIAOjLsVeVQfDjboHux9WfbslZ8xwQENsaLl7F7WJXZ2UBHIxzqiYDlCm2xZsv/jhwoEbWSla4V0Aw6h2m1wg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788889684; c=relaxed/simple; bh=tacI9m1MslX9y61QR1VhLpeyfq84AgyzmglYCONMaCY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ISkURBbo/sfHePuIUn3981aKpk6nzs+RzxmpjtwqNbmZyVTgy1lS8hPf6YCWc4gg9VNMF/BPB3kDNzksYxUTdGFR26VDk3wIf5Gexw1sn4f5Ya/jvSGjejBU0LVCmhWnYl1dwWUud7hAn3Ao2r57PjelLc+e9UzFEZWO7Er7awg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=XIugPw0L; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=tCbhf1ye; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="XIugPw0L"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="tCbhf1ye" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1788889677; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=oPKIqdvvTIVk8Ctx84tr0wEUgwsrKq1F194NqBriiB4=; b=XIugPw0LhETbRT5qiI9DhEfQ88Xwp07iMZMdVndfe/Tomq3aTc6MmaEDq6nQ9oDfrPlS8L GmZsHVzd5Dy2BvnB7PL6dWzmTJXmcmscpa2k9Pok0sefVEPHQRuv4/VC80oH3ECEsWzsMh ymBsdbqk83+c894v7NNbSzrJFrwHWhk= Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-279-2eeKLkanMs68bNbSmefwng-1; Tue, 08 Sep 2026 13:47:56 -0400 X-MC-Unique: 2eeKLkanMs68bNbSmefwng-1 X-Mimecast-MFC-AGG-ID: 2eeKLkanMs68bNbSmefwng_1788889676 Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-92e820609d9so778010385a.2 for ; Tue, 08 Sep 2026 10:47:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1788889676; x=1789494476; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=oPKIqdvvTIVk8Ctx84tr0wEUgwsrKq1F194NqBriiB4=; b=tCbhf1ye3POH9U8qL3LFiju5zhy8ttk+8kCL48BTfHkWa/xZm2o968m/inpYhsvrh0 B/wed48ZGYqNIkgTbu4xMcAcGAIp8M8NQXiJ5OMrAvnPvZ0lfe9TBE4bQwSaMOrD9Jp2 KuoDeGJhIoiJnfv81mIx1vWMSD8+/xAvbjfu8pfmAXXBoGgQS1FVs3es2WQTJURNItcN 7PEO7kEDANqKbAl50dhDNkP9nroR9wsSuMsC142thJ5aANIe/JcloZOt4cGTlfyhfbm8 HAagi4f0muSDB8KorNF1JBASSWLw10ooE79S40J6Y1FZzP5VaUnpMZm826c7+CtNcTOF PO/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788889676; x=1789494476; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=oPKIqdvvTIVk8Ctx84tr0wEUgwsrKq1F194NqBriiB4=; b=Kch0hIIw7KzY5Kv5whalh4O1y4HYkbrMaOhDZMvQzc59gADNOmhTmItJbQ3tt8rXga y1p13nCb8eDCMhIsrP8S6w2TeB/LzLzJPkyDkk6JRw29cQPQ9GnWila1wQZmKjoPo87T 4K2lvj0b53jpOGqDCQ7WKlXc605pFkT5Qj6ytxEIq4neamh/kcRRIUD3Mae7iUHmQlPn /nMruxHCdUAby0RU9d59I9XsjC0LCTxhcuTTQCYUtJeQ9oczE+fB1Zat0fYPVqeAB4yT w0SVuF5blhNtbg0JbJgZhoSCMk9FcMCX3UD2RMh7mZfSh9/+SUE/YHeOzNZGMkr4UiCA uFUg== X-Forwarded-Encrypted: i=1; AKwUvBxlzDldYE8zCc3jfl4zlzUTIWnBu38a2vbmWfw7i7bf6g5uCW+L0ucQB2gdD+q+PcuskbC44Rq46f3YLko=@vger.kernel.org X-Gm-Message-State: AFuF++lgTHKwmBny9SznQSZyB5T+odp0Zc3WKmkaLWeILMRsqTIwNYqg L/ticDd1qsQIMIF87XbGiKVPMpm8VRbe5Sq41UPIoiQC68+8GuaP3YG/1oXp28KCwPgkZxx3tVD dSOujPnvMa9jaOASw82hGCIuqhSn97w9dbniQnqfZlYTEMyqdvr3hy1HO+gjLdXqgcQ== X-Gm-Gg: AYBFou1Yk9MgCvb1oXrsmy5AeyRuxiYba2KsOVwtIBzggq0YNsqnVVbpgfAQnRxJvLL ehW4KGO0pkYp+T4sCvxLgRUB8ojbTtlsWYuzzBU9w4EMlFRjeaAU38dSdkSYaNmn1+R2N0spL69 4Vcf7lx8q1p64ctTIUFqwvCuxl5o4sJRG2Jngff2aZ7SWMH6sNAnanYB1flERUX7cKg0H++UmEs tmRzSWMaXCNFxlU9e3cllhXbkEKG0t4tL8jYI1+MA0SUzH1/d0OVewRrWK6SEE+o0EdzmPiONhx BihgVvv0g//DCoKPE21F0WKDhFaxRwKCo1Q8+ykksFjS8UQ82FgLmfNpgq4WNaFMyyaTLgGRW6A Lbc6JI22fyQpDvE4TZoNX3Hh92xKkuaQBUmME3wo= X-Received: by 2002:a05:620a:1982:b0:933:aa0:bb83 with SMTP id af79cd13be357-93980400a22mr3419681785a.34.1788889670771; Tue, 08 Sep 2026 10:47:50 -0700 (PDT) X-Received: by 2002:a05:620a:1982:b0:933:aa0:bb83 with SMTP id af79cd13be357-93980400a22mr3419673685a.34.1788889670067; Tue, 08 Sep 2026 10:47:50 -0700 (PDT) Received: from [192.168.1.3] (c-73-183-53-213.hsd1.pa.comcast.net. [73.183.53.213]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9397fb9bac1sm1194093685a.35.2026.09.08.10.47.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 10:47:49 -0700 (PDT) From: Brian Masney Date: Tue, 08 Sep 2026 13:47:20 -0400 Subject: [PATCH 3/4] clk: qcom: convert drivers over to use subsys_platform_driver() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260908-subsys_initcall-v1-3-cbccf4cd4288@redhat.com> References: <20260908-subsys_initcall-v1-0-cbccf4cd4288@redhat.com> In-Reply-To: <20260908-subsys_initcall-v1-0-cbccf4cd4288@redhat.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Bjorn Andersson , Stephen Boyd , Jerome Brunet , Geert Uytterhoeven Cc: driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Brian Masney X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=31919; i=bmasney@redhat.com; s=20250903; h=from:subject:message-id; bh=tacI9m1MslX9y61QR1VhLpeyfq84AgyzmglYCONMaCY=; b=kA0DAAoWt9LdJ11+wIcByyZiAGqgSj7IDYiWKxmxdkfNfcWEWMkMGAY6ZIsvvSm5yVOdwmFiv Yh1BAAWCgAdFiEEpG0ycFhlqj3e3CkEt9LdJ11+wIcFAmqgSj4ACgkQt9LdJ11+wIdEyAEAyoi+ xjlnOw08stYMFdEyQ7F81bMKfeinPXAGot+qh3EBALVPBlp0ANCD1TMGDbkkORyVbiPy88uwlbW sy0cb3eIF X-Developer-Key: i=bmasney@redhat.com; a=openpgp; fpr=A46D32705865AA3DDEDC2904B7D2DD275D7EC087 Reduce boilerplate code in the drivers and convert them over to use subsys_platform_driver(). Signed-off-by: Brian Masney Assisted-by: Claude:claude-opus-4-8 Reviewed-by: Abel Vesa Reviewed-by: Konrad Dybcio Tested-by: Pankaj Patil --- drivers/clk/qcom/dispcc-x1e80100.c | 12 +----------- drivers/clk/qcom/gcc-eliza.c | 12 +----------- drivers/clk/qcom/gcc-glymur.c | 12 +----------- drivers/clk/qcom/gcc-hawi.c | 12 +----------- drivers/clk/qcom/gcc-kaanapali.c | 12 +----------- drivers/clk/qcom/gcc-kuno.c | 12 +----------- drivers/clk/qcom/gcc-milos.c | 12 +----------- drivers/clk/qcom/gcc-nord.c | 12 +----------- drivers/clk/qcom/gcc-qcm2290.c | 12 +----------- drivers/clk/qcom/gcc-qcs615.c | 12 +----------- drivers/clk/qcom/gcc-qcs8300.c | 12 +----------- drivers/clk/qcom/gcc-qdu1000.c | 12 +----------- drivers/clk/qcom/gcc-sar2130p.c | 12 +----------- drivers/clk/qcom/gcc-sc7280.c | 12 +----------- drivers/clk/qcom/gcc-sc8280xp.c | 12 +----------- drivers/clk/qcom/gcc-sdx55.c | 12 +----------- drivers/clk/qcom/gcc-sdx65.c | 12 +----------- drivers/clk/qcom/gcc-sdx75.c | 12 +----------- drivers/clk/qcom/gcc-shikra.c | 12 +----------- drivers/clk/qcom/gcc-sm4450.c | 12 +----------- drivers/clk/qcom/gcc-sm6115.c | 12 +----------- drivers/clk/qcom/gcc-sm6125.c | 12 +----------- drivers/clk/qcom/gcc-sm6375.c | 12 +----------- drivers/clk/qcom/gcc-sm7150.c | 12 +----------- drivers/clk/qcom/gcc-sm8150.c | 12 +----------- drivers/clk/qcom/gcc-sm8250.c | 12 +----------- drivers/clk/qcom/gcc-sm8350.c | 12 +----------- drivers/clk/qcom/gcc-sm8450.c | 12 +----------- drivers/clk/qcom/gcc-sm8550.c | 12 +----------- drivers/clk/qcom/gcc-sm8650.c | 12 +----------- drivers/clk/qcom/gcc-sm8750.c | 12 +----------- drivers/clk/qcom/gcc-x1e80100.c | 12 +----------- drivers/clk/qcom/lpasscc-sc7280.c | 12 +----------- drivers/clk/qcom/lpasscc-sdm845.c | 12 +----------- drivers/clk/qcom/tcsrcc-eliza.c | 12 +----------- drivers/clk/qcom/tcsrcc-glymur.c | 12 +----------- drivers/clk/qcom/tcsrcc-kaanapali.c | 12 +----------- drivers/clk/qcom/tcsrcc-sm8550.c | 12 +----------- drivers/clk/qcom/tcsrcc-sm8650.c | 12 +----------- drivers/clk/qcom/tcsrcc-sm8750.c | 12 +----------- drivers/clk/qcom/tcsrcc-x1e80100.c | 12 +----------- drivers/clk/qcom/videocc-sm8750.c | 12 +----------- 42 files changed, 42 insertions(+), 462 deletions(-) diff --git a/drivers/clk/qcom/dispcc-x1e80100.c b/drivers/clk/qcom/dispcc-x= 1e80100.c index 795279609c0b..d3dc678a298d 100644 --- a/drivers/clk/qcom/dispcc-x1e80100.c +++ b/drivers/clk/qcom/dispcc-x1e80100.c @@ -1704,17 +1704,7 @@ static struct platform_driver disp_cc_x1e80100_drive= r =3D { }, }; =20 -static int __init disp_cc_x1e80100_init(void) -{ - return platform_driver_register(&disp_cc_x1e80100_driver); -} -subsys_initcall(disp_cc_x1e80100_init); - -static void __exit disp_cc_x1e80100_exit(void) -{ - platform_driver_unregister(&disp_cc_x1e80100_driver); -} -module_exit(disp_cc_x1e80100_exit); +subsys_platform_driver(disp_cc_x1e80100_driver); =20 MODULE_DESCRIPTION("QTI Display Clock Controller X1E80100 Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-eliza.c b/drivers/clk/qcom/gcc-eliza.c index fe18942a59ac..ee486c24fe66 100644 --- a/drivers/clk/qcom/gcc-eliza.c +++ b/drivers/clk/qcom/gcc-eliza.c @@ -3090,17 +3090,7 @@ static struct platform_driver gcc_eliza_driver =3D { }, }; =20 -static int __init gcc_eliza_init(void) -{ - return platform_driver_register(&gcc_eliza_driver); -} -subsys_initcall(gcc_eliza_init); - -static void __exit gcc_eliza_exit(void) -{ - platform_driver_unregister(&gcc_eliza_driver); -} -module_exit(gcc_eliza_exit); +subsys_platform_driver(gcc_eliza_driver); =20 MODULE_DESCRIPTION("QTI GCC Eliza Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-glymur.c b/drivers/clk/qcom/gcc-glymur.c index 2ee4820b6fdf..9fdf76d0f692 100644 --- a/drivers/clk/qcom/gcc-glymur.c +++ b/drivers/clk/qcom/gcc-glymur.c @@ -8571,17 +8571,7 @@ static struct platform_driver gcc_glymur_driver =3D { }, }; =20 -static int __init gcc_glymur_init(void) -{ - return platform_driver_register(&gcc_glymur_driver); -} -subsys_initcall(gcc_glymur_init); - -static void __exit gcc_glymur_exit(void) -{ - platform_driver_unregister(&gcc_glymur_driver); -} -module_exit(gcc_glymur_exit); +subsys_platform_driver(gcc_glymur_driver); =20 MODULE_DESCRIPTION("QTI GCC Glymur Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-hawi.c b/drivers/clk/qcom/gcc-hawi.c index f1b95753c3a3..39fd5f56ca61 100644 --- a/drivers/clk/qcom/gcc-hawi.c +++ b/drivers/clk/qcom/gcc-hawi.c @@ -3843,17 +3843,7 @@ static struct platform_driver gcc_hawi_driver =3D { }, }; =20 -static int __init gcc_hawi_init(void) -{ - return platform_driver_register(&gcc_hawi_driver); -} -subsys_initcall(gcc_hawi_init); - -static void __exit gcc_hawi_exit(void) -{ - platform_driver_unregister(&gcc_hawi_driver); -} -module_exit(gcc_hawi_exit); +subsys_platform_driver(gcc_hawi_driver); =20 MODULE_DESCRIPTION("QTI GCC HAWI Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-kaanapali.c b/drivers/clk/qcom/gcc-kaanap= ali.c index 5bcbcd178657..e310b5c9b5c7 100644 --- a/drivers/clk/qcom/gcc-kaanapali.c +++ b/drivers/clk/qcom/gcc-kaanapali.c @@ -3524,17 +3524,7 @@ static struct platform_driver gcc_kaanapali_driver = =3D { }, }; =20 -static int __init gcc_kaanapali_init(void) -{ - return platform_driver_register(&gcc_kaanapali_driver); -} -subsys_initcall(gcc_kaanapali_init); - -static void __exit gcc_kaanapali_exit(void) -{ - platform_driver_unregister(&gcc_kaanapali_driver); -} -module_exit(gcc_kaanapali_exit); +subsys_platform_driver(gcc_kaanapali_driver); =20 MODULE_DESCRIPTION("QTI GCC Kaanapali Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-kuno.c b/drivers/clk/qcom/gcc-kuno.c index 787111397df9..55a2fbc74268 100644 --- a/drivers/clk/qcom/gcc-kuno.c +++ b/drivers/clk/qcom/gcc-kuno.c @@ -1467,17 +1467,7 @@ static struct platform_driver gcc_kuno_driver =3D { }, }; =20 -static int __init gcc_kuno_init(void) -{ - return platform_driver_register(&gcc_kuno_driver); -} -subsys_initcall(gcc_kuno_init); - -static void __exit gcc_kuno_exit(void) -{ - platform_driver_unregister(&gcc_kuno_driver); -} -module_exit(gcc_kuno_exit); +subsys_platform_driver(gcc_kuno_driver); =20 MODULE_DESCRIPTION("QTI GCC Kuno Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-milos.c b/drivers/clk/qcom/gcc-milos.c index 4219af2879d9..10a5f3ab0d42 100644 --- a/drivers/clk/qcom/gcc-milos.c +++ b/drivers/clk/qcom/gcc-milos.c @@ -3208,17 +3208,7 @@ static struct platform_driver gcc_milos_driver =3D { }, }; =20 -static int __init gcc_milos_init(void) -{ - return platform_driver_register(&gcc_milos_driver); -} -subsys_initcall(gcc_milos_init); - -static void __exit gcc_milos_exit(void) -{ - platform_driver_unregister(&gcc_milos_driver); -} -module_exit(gcc_milos_exit); +subsys_platform_driver(gcc_milos_driver); =20 MODULE_DESCRIPTION("QTI GCC Milos Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-nord.c b/drivers/clk/qcom/gcc-nord.c index 5c9d25f53a6d..4f87e06b33ab 100644 --- a/drivers/clk/qcom/gcc-nord.c +++ b/drivers/clk/qcom/gcc-nord.c @@ -1862,17 +1862,7 @@ static struct platform_driver gcc_nord_driver =3D { }, }; =20 -static int __init gcc_nord_init(void) -{ - return platform_driver_register(&gcc_nord_driver); -} -subsys_initcall(gcc_nord_init); - -static void __exit gcc_nord_exit(void) -{ - platform_driver_unregister(&gcc_nord_driver); -} -module_exit(gcc_nord_exit); +subsys_platform_driver(gcc_nord_driver); =20 MODULE_DESCRIPTION("QTI GCC NORD Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-qcm2290.c b/drivers/clk/qcom/gcc-qcm2290.c index 2532c0b36bc5..cf7d05558be9 100644 --- a/drivers/clk/qcom/gcc-qcm2290.c +++ b/drivers/clk/qcom/gcc-qcm2290.c @@ -2923,17 +2923,7 @@ static struct platform_driver gcc_qcm2290_driver =3D= { }, }; =20 -static int __init gcc_qcm2290_init(void) -{ - return platform_driver_register(&gcc_qcm2290_driver); -} -subsys_initcall(gcc_qcm2290_init); - -static void __exit gcc_qcm2290_exit(void) -{ - platform_driver_unregister(&gcc_qcm2290_driver); -} -module_exit(gcc_qcm2290_exit); +subsys_platform_driver(gcc_qcm2290_driver); =20 MODULE_DESCRIPTION("QTI GCC QCM2290 Driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/clk/qcom/gcc-qcs615.c b/drivers/clk/qcom/gcc-qcs615.c index 57f8c80c6f32..d19792027cd9 100644 --- a/drivers/clk/qcom/gcc-qcs615.c +++ b/drivers/clk/qcom/gcc-qcs615.c @@ -3017,17 +3017,7 @@ static struct platform_driver gcc_qcs615_driver =3D { }, }; =20 -static int __init gcc_qcs615_init(void) -{ - return platform_driver_register(&gcc_qcs615_driver); -} -subsys_initcall(gcc_qcs615_init); - -static void __exit gcc_qcs615_exit(void) -{ - platform_driver_unregister(&gcc_qcs615_driver); -} -module_exit(gcc_qcs615_exit); +subsys_platform_driver(gcc_qcs615_driver); =20 MODULE_DESCRIPTION("QTI GCC QCS615 Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-qcs8300.c b/drivers/clk/qcom/gcc-qcs8300.c index 146b3b5dfead..57014c4f8c6d 100644 --- a/drivers/clk/qcom/gcc-qcs8300.c +++ b/drivers/clk/qcom/gcc-qcs8300.c @@ -3726,17 +3726,7 @@ static struct platform_driver gcc_qcs8300_driver =3D= { }, }; =20 -static int __init gcc_qcs8300_init(void) -{ - return platform_driver_register(&gcc_qcs8300_driver); -} -subsys_initcall(gcc_qcs8300_init); - -static void __exit gcc_qcs8300_exit(void) -{ - platform_driver_unregister(&gcc_qcs8300_driver); -} -module_exit(gcc_qcs8300_exit); +subsys_platform_driver(gcc_qcs8300_driver); =20 MODULE_DESCRIPTION("QTI GCC QCS8300 Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-qdu1000.c b/drivers/clk/qcom/gcc-qdu1000.c index 915bb9b4ff81..a139fd8f722d 100644 --- a/drivers/clk/qcom/gcc-qdu1000.c +++ b/drivers/clk/qcom/gcc-qdu1000.c @@ -2689,17 +2689,7 @@ static struct platform_driver gcc_qdu1000_driver =3D= { }, }; =20 -static int __init gcc_qdu1000_init(void) -{ - return platform_driver_register(&gcc_qdu1000_driver); -} -subsys_initcall(gcc_qdu1000_init); - -static void __exit gcc_qdu1000_exit(void) -{ - platform_driver_unregister(&gcc_qdu1000_driver); -} -module_exit(gcc_qdu1000_exit); +subsys_platform_driver(gcc_qdu1000_driver); =20 MODULE_DESCRIPTION("QTI GCC QDU1000 Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-sar2130p.c b/drivers/clk/qcom/gcc-sar2130= p.c index 475e2cda3618..7456001cf25e 100644 --- a/drivers/clk/qcom/gcc-sar2130p.c +++ b/drivers/clk/qcom/gcc-sar2130p.c @@ -2350,17 +2350,7 @@ static struct platform_driver gcc_sar2130p_driver = =3D { }, }; =20 -static int __init gcc_sar2130p_init(void) -{ - return platform_driver_register(&gcc_sar2130p_driver); -} -subsys_initcall(gcc_sar2130p_init); - -static void __exit gcc_sar2130p_exit(void) -{ - platform_driver_unregister(&gcc_sar2130p_driver); -} -module_exit(gcc_sar2130p_exit); +subsys_platform_driver(gcc_sar2130p_driver); =20 MODULE_DESCRIPTION("QTI GCC SAR2130P Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-sc7280.c b/drivers/clk/qcom/gcc-sc7280.c index 4502926a2691..e1fe64463de6 100644 --- a/drivers/clk/qcom/gcc-sc7280.c +++ b/drivers/clk/qcom/gcc-sc7280.c @@ -3492,17 +3492,7 @@ static struct platform_driver gcc_sc7280_driver =3D { }, }; =20 -static int __init gcc_sc7280_init(void) -{ - return platform_driver_register(&gcc_sc7280_driver); -} -subsys_initcall(gcc_sc7280_init); - -static void __exit gcc_sc7280_exit(void) -{ - platform_driver_unregister(&gcc_sc7280_driver); -} -module_exit(gcc_sc7280_exit); +subsys_platform_driver(gcc_sc7280_driver); =20 MODULE_DESCRIPTION("QTI GCC SC7280 Driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/clk/qcom/gcc-sc8280xp.c b/drivers/clk/qcom/gcc-sc8280x= p.c index 2ab111585d7f..81533e71e7ef 100644 --- a/drivers/clk/qcom/gcc-sc8280xp.c +++ b/drivers/clk/qcom/gcc-sc8280xp.c @@ -7581,17 +7581,7 @@ static struct platform_driver gcc_sc8280xp_driver = =3D { }, }; =20 -static int __init gcc_sc8280xp_init(void) -{ - return platform_driver_register(&gcc_sc8280xp_driver); -} -subsys_initcall(gcc_sc8280xp_init); - -static void __exit gcc_sc8280xp_exit(void) -{ - platform_driver_unregister(&gcc_sc8280xp_driver); -} -module_exit(gcc_sc8280xp_exit); +subsys_platform_driver(gcc_sc8280xp_driver); =20 MODULE_DESCRIPTION("Qualcomm SC8280XP GCC driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-sdx55.c b/drivers/clk/qcom/gcc-sdx55.c index 84c507656e8f..13d6c9e8183b 100644 --- a/drivers/clk/qcom/gcc-sdx55.c +++ b/drivers/clk/qcom/gcc-sdx55.c @@ -1627,17 +1627,7 @@ static struct platform_driver gcc_sdx55_driver =3D { }, }; =20 -static int __init gcc_sdx55_init(void) -{ - return platform_driver_register(&gcc_sdx55_driver); -} -subsys_initcall(gcc_sdx55_init); - -static void __exit gcc_sdx55_exit(void) -{ - platform_driver_unregister(&gcc_sdx55_driver); -} -module_exit(gcc_sdx55_exit); +subsys_platform_driver(gcc_sdx55_driver); =20 MODULE_DESCRIPTION("QTI GCC SDX55 Driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/clk/qcom/gcc-sdx65.c b/drivers/clk/qcom/gcc-sdx65.c index fe297c606f97..8cae11a0b2c0 100644 --- a/drivers/clk/qcom/gcc-sdx65.c +++ b/drivers/clk/qcom/gcc-sdx65.c @@ -1591,17 +1591,7 @@ static struct platform_driver gcc_sdx65_driver =3D { }, }; =20 -static int __init gcc_sdx65_init(void) -{ - return platform_driver_register(&gcc_sdx65_driver); -} -subsys_initcall(gcc_sdx65_init); - -static void __exit gcc_sdx65_exit(void) -{ - platform_driver_unregister(&gcc_sdx65_driver); -} -module_exit(gcc_sdx65_exit); +subsys_platform_driver(gcc_sdx65_driver); =20 MODULE_DESCRIPTION("QTI GCC SDX65 Driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/clk/qcom/gcc-sdx75.c b/drivers/clk/qcom/gcc-sdx75.c index 6712e76f875c..ce9f19655d6d 100644 --- a/drivers/clk/qcom/gcc-sdx75.c +++ b/drivers/clk/qcom/gcc-sdx75.c @@ -2950,17 +2950,7 @@ static struct platform_driver gcc_sdx75_driver =3D { }, }; =20 -static int __init gcc_sdx75_init(void) -{ - return platform_driver_register(&gcc_sdx75_driver); -} -subsys_initcall(gcc_sdx75_init); - -static void __exit gcc_sdx75_exit(void) -{ - platform_driver_unregister(&gcc_sdx75_driver); -} -module_exit(gcc_sdx75_exit); +subsys_platform_driver(gcc_sdx75_driver); =20 MODULE_DESCRIPTION("QTI GCC SDX75 Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-shikra.c b/drivers/clk/qcom/gcc-shikra.c index 2a1c1fc253aa..13c99a883e29 100644 --- a/drivers/clk/qcom/gcc-shikra.c +++ b/drivers/clk/qcom/gcc-shikra.c @@ -4416,17 +4416,7 @@ static struct platform_driver gcc_shikra_driver =3D { }, }; =20 -static int __init gcc_shikra_init(void) -{ - return platform_driver_register(&gcc_shikra_driver); -} -subsys_initcall(gcc_shikra_init); - -static void __exit gcc_shikra_exit(void) -{ - platform_driver_unregister(&gcc_shikra_driver); -} -module_exit(gcc_shikra_exit); +subsys_platform_driver(gcc_shikra_driver); =20 MODULE_DESCRIPTION("QTI GCC Shikra Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-sm4450.c b/drivers/clk/qcom/gcc-sm4450.c index 30fc7af09930..4fb4d43e8582 100644 --- a/drivers/clk/qcom/gcc-sm4450.c +++ b/drivers/clk/qcom/gcc-sm4450.c @@ -2871,17 +2871,7 @@ static struct platform_driver gcc_sm4450_driver =3D { }, }; =20 -static int __init gcc_sm4450_init(void) -{ - return platform_driver_register(&gcc_sm4450_driver); -} -subsys_initcall(gcc_sm4450_init); - -static void __exit gcc_sm4450_exit(void) -{ - platform_driver_unregister(&gcc_sm4450_driver); -} -module_exit(gcc_sm4450_exit); +subsys_platform_driver(gcc_sm4450_driver); =20 MODULE_DESCRIPTION("QTI GCC SM4450 Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-sm6115.c b/drivers/clk/qcom/gcc-sm6115.c index a3c9dbe3a48a..5736e59d76ce 100644 --- a/drivers/clk/qcom/gcc-sm6115.c +++ b/drivers/clk/qcom/gcc-sm6115.c @@ -3525,17 +3525,7 @@ static struct platform_driver gcc_sm6115_driver =3D { }, }; =20 -static int __init gcc_sm6115_init(void) -{ - return platform_driver_register(&gcc_sm6115_driver); -} -subsys_initcall(gcc_sm6115_init); - -static void __exit gcc_sm6115_exit(void) -{ - platform_driver_unregister(&gcc_sm6115_driver); -} -module_exit(gcc_sm6115_exit); +subsys_platform_driver(gcc_sm6115_driver); =20 MODULE_DESCRIPTION("QTI GCC SM6115 and SM4250 Driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/clk/qcom/gcc-sm6125.c b/drivers/clk/qcom/gcc-sm6125.c index 07bb1e5c4a30..ee3cd0b00fc5 100644 --- a/drivers/clk/qcom/gcc-sm6125.c +++ b/drivers/clk/qcom/gcc-sm6125.c @@ -4172,17 +4172,7 @@ static struct platform_driver gcc_sm6125_driver =3D { }, }; =20 -static int __init gcc_sm6125_init(void) -{ - return platform_driver_register(&gcc_sm6125_driver); -} -subsys_initcall(gcc_sm6125_init); - -static void __exit gcc_sm6125_exit(void) -{ - platform_driver_unregister(&gcc_sm6125_driver); -} -module_exit(gcc_sm6125_exit); +subsys_platform_driver(gcc_sm6125_driver); =20 MODULE_DESCRIPTION("QTI GCC SM6125 Driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/clk/qcom/gcc-sm6375.c b/drivers/clk/qcom/gcc-sm6375.c index f47dc2808095..9c2acf8dc4b7 100644 --- a/drivers/clk/qcom/gcc-sm6375.c +++ b/drivers/clk/qcom/gcc-sm6375.c @@ -3903,17 +3903,7 @@ static struct platform_driver gcc_sm6375_driver =3D { }, }; =20 -static int __init gcc_sm6375_init(void) -{ - return platform_driver_register(&gcc_sm6375_driver); -} -subsys_initcall(gcc_sm6375_init); - -static void __exit gcc_sm6375_exit(void) -{ - platform_driver_unregister(&gcc_sm6375_driver); -} -module_exit(gcc_sm6375_exit); +subsys_platform_driver(gcc_sm6375_driver); =20 MODULE_DESCRIPTION("QTI GCC SM6375 Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-sm7150.c b/drivers/clk/qcom/gcc-sm7150.c index dcb5d82a1a31..2ab3e92eb3c7 100644 --- a/drivers/clk/qcom/gcc-sm7150.c +++ b/drivers/clk/qcom/gcc-sm7150.c @@ -3027,17 +3027,7 @@ static struct platform_driver gcc_sm7150_driver =3D { }, }; =20 -static int __init gcc_sm7150_init(void) -{ - return platform_driver_register(&gcc_sm7150_driver); -} -subsys_initcall(gcc_sm7150_init); - -static void __exit gcc_sm7150_exit(void) -{ - platform_driver_unregister(&gcc_sm7150_driver); -} -module_exit(gcc_sm7150_exit); +subsys_platform_driver(gcc_sm7150_driver); =20 MODULE_DESCRIPTION("Qualcomm SM7150 Global Clock Controller"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-sm8150.c b/drivers/clk/qcom/gcc-sm8150.c index a93d1f412a7b..b38a44842686 100644 --- a/drivers/clk/qcom/gcc-sm8150.c +++ b/drivers/clk/qcom/gcc-sm8150.c @@ -3808,17 +3808,7 @@ static struct platform_driver gcc_sm8150_driver =3D { }, }; =20 -static int __init gcc_sm8150_init(void) -{ - return platform_driver_register(&gcc_sm8150_driver); -} -subsys_initcall(gcc_sm8150_init); - -static void __exit gcc_sm8150_exit(void) -{ - platform_driver_unregister(&gcc_sm8150_driver); -} -module_exit(gcc_sm8150_exit); +subsys_platform_driver(gcc_sm8150_driver); =20 MODULE_DESCRIPTION("QTI GCC SM8150 Driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/clk/qcom/gcc-sm8250.c b/drivers/clk/qcom/gcc-sm8250.c index 1c59d70e0f96..93c1beacee01 100644 --- a/drivers/clk/qcom/gcc-sm8250.c +++ b/drivers/clk/qcom/gcc-sm8250.c @@ -3667,17 +3667,7 @@ static struct platform_driver gcc_sm8250_driver =3D { }, }; =20 -static int __init gcc_sm8250_init(void) -{ - return platform_driver_register(&gcc_sm8250_driver); -} -subsys_initcall(gcc_sm8250_init); - -static void __exit gcc_sm8250_exit(void) -{ - platform_driver_unregister(&gcc_sm8250_driver); -} -module_exit(gcc_sm8250_exit); +subsys_platform_driver(gcc_sm8250_driver); =20 MODULE_DESCRIPTION("QTI GCC SM8250 Driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/clk/qcom/gcc-sm8350.c b/drivers/clk/qcom/gcc-sm8350.c index 2d94f3046b71..cc6eb7ca9c03 100644 --- a/drivers/clk/qcom/gcc-sm8350.c +++ b/drivers/clk/qcom/gcc-sm8350.c @@ -3833,17 +3833,7 @@ static struct platform_driver gcc_sm8350_driver =3D { }, }; =20 -static int __init gcc_sm8350_init(void) -{ - return platform_driver_register(&gcc_sm8350_driver); -} -subsys_initcall(gcc_sm8350_init); - -static void __exit gcc_sm8350_exit(void) -{ - platform_driver_unregister(&gcc_sm8350_driver); -} -module_exit(gcc_sm8350_exit); +subsys_platform_driver(gcc_sm8350_driver); =20 MODULE_DESCRIPTION("QTI GCC SM8350 Driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/clk/qcom/gcc-sm8450.c b/drivers/clk/qcom/gcc-sm8450.c index b18bb34889ab..d473a95bef92 100644 --- a/drivers/clk/qcom/gcc-sm8450.c +++ b/drivers/clk/qcom/gcc-sm8450.c @@ -3479,17 +3479,7 @@ static struct platform_driver gcc_sm8450_driver =3D { }, }; =20 -static int __init gcc_sm8450_init(void) -{ - return platform_driver_register(&gcc_sm8450_driver); -} -subsys_initcall(gcc_sm8450_init); - -static void __exit gcc_sm8450_exit(void) -{ - platform_driver_unregister(&gcc_sm8450_driver); -} -module_exit(gcc_sm8450_exit); +subsys_platform_driver(gcc_sm8450_driver); =20 MODULE_DESCRIPTION("QTI GCC SM8450 / SM8475 Driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/clk/qcom/gcc-sm8550.c b/drivers/clk/qcom/gcc-sm8550.c index 36a5b7de5b55..d83a7bb5356b 100644 --- a/drivers/clk/qcom/gcc-sm8550.c +++ b/drivers/clk/qcom/gcc-sm8550.c @@ -3375,17 +3375,7 @@ static struct platform_driver gcc_sm8550_driver =3D { }, }; =20 -static int __init gcc_sm8550_init(void) -{ - return platform_driver_register(&gcc_sm8550_driver); -} -subsys_initcall(gcc_sm8550_init); - -static void __exit gcc_sm8550_exit(void) -{ - platform_driver_unregister(&gcc_sm8550_driver); -} -module_exit(gcc_sm8550_exit); +subsys_platform_driver(gcc_sm8550_driver); =20 MODULE_DESCRIPTION("QTI GCC SM8550 Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-sm8650.c b/drivers/clk/qcom/gcc-sm8650.c index f7e2d7ec60c9..9fa362f0c447 100644 --- a/drivers/clk/qcom/gcc-sm8650.c +++ b/drivers/clk/qcom/gcc-sm8650.c @@ -3834,17 +3834,7 @@ static struct platform_driver gcc_sm8650_driver =3D { }, }; =20 -static int __init gcc_sm8650_init(void) -{ - return platform_driver_register(&gcc_sm8650_driver); -} -subsys_initcall(gcc_sm8650_init); - -static void __exit gcc_sm8650_exit(void) -{ - platform_driver_unregister(&gcc_sm8650_driver); -} -module_exit(gcc_sm8650_exit); +subsys_platform_driver(gcc_sm8650_driver); =20 MODULE_DESCRIPTION("QTI GCC SM8650 Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-sm8750.c b/drivers/clk/qcom/gcc-sm8750.c index 6cfe90122268..c08130218efe 100644 --- a/drivers/clk/qcom/gcc-sm8750.c +++ b/drivers/clk/qcom/gcc-sm8750.c @@ -3259,17 +3259,7 @@ static struct platform_driver gcc_sm8750_driver =3D { }, }; =20 -static int __init gcc_sm8750_init(void) -{ - return platform_driver_register(&gcc_sm8750_driver); -} -subsys_initcall(gcc_sm8750_init); - -static void __exit gcc_sm8750_exit(void) -{ - platform_driver_unregister(&gcc_sm8750_driver); -} -module_exit(gcc_sm8750_exit); +subsys_platform_driver(gcc_sm8750_driver); =20 MODULE_DESCRIPTION("QTI GCC SM8750 Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/gcc-x1e80100.c b/drivers/clk/qcom/gcc-x1e8010= 0.c index 8c146d62c077..9402fd7fddb8 100644 --- a/drivers/clk/qcom/gcc-x1e80100.c +++ b/drivers/clk/qcom/gcc-x1e80100.c @@ -7499,17 +7499,7 @@ static struct platform_driver gcc_x1e80100_driver = =3D { }, }; =20 -static int __init gcc_x1e80100_init(void) -{ - return platform_driver_register(&gcc_x1e80100_driver); -} -subsys_initcall(gcc_x1e80100_init); - -static void __exit gcc_x1e80100_exit(void) -{ - platform_driver_unregister(&gcc_x1e80100_driver); -} -module_exit(gcc_x1e80100_exit); +subsys_platform_driver(gcc_x1e80100_driver); =20 MODULE_DESCRIPTION("QTI GCC X1E80100 Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/lpasscc-sc7280.c b/drivers/clk/qcom/lpasscc-s= c7280.c index e6b815aec46a..3789a7b37bdd 100644 --- a/drivers/clk/qcom/lpasscc-sc7280.c +++ b/drivers/clk/qcom/lpasscc-sc7280.c @@ -169,17 +169,7 @@ static struct platform_driver lpass_cc_sc7280_driver = =3D { }, }; =20 -static int __init lpass_cc_sc7280_init(void) -{ - return platform_driver_register(&lpass_cc_sc7280_driver); -} -subsys_initcall(lpass_cc_sc7280_init); - -static void __exit lpass_cc_sc7280_exit(void) -{ - platform_driver_unregister(&lpass_cc_sc7280_driver); -} -module_exit(lpass_cc_sc7280_exit); +subsys_platform_driver(lpass_cc_sc7280_driver); =20 MODULE_DESCRIPTION("QTI LPASS_CC SC7280 Driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/clk/qcom/lpasscc-sdm845.c b/drivers/clk/qcom/lpasscc-s= dm845.c index 5c1ea75f9ba8..1d7e78dd6015 100644 --- a/drivers/clk/qcom/lpasscc-sdm845.c +++ b/drivers/clk/qcom/lpasscc-sdm845.c @@ -144,17 +144,7 @@ static struct platform_driver lpass_cc_sdm845_driver = =3D { }, }; =20 -static int __init lpass_cc_sdm845_init(void) -{ - return platform_driver_register(&lpass_cc_sdm845_driver); -} -subsys_initcall(lpass_cc_sdm845_init); - -static void __exit lpass_cc_sdm845_exit(void) -{ - platform_driver_unregister(&lpass_cc_sdm845_driver); -} -module_exit(lpass_cc_sdm845_exit); +subsys_platform_driver(lpass_cc_sdm845_driver); =20 MODULE_DESCRIPTION("QTI LPASS_CC SDM845 Driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/clk/qcom/tcsrcc-eliza.c b/drivers/clk/qcom/tcsrcc-eliz= a.c index 127d1f0a1442..daab9a620490 100644 --- a/drivers/clk/qcom/tcsrcc-eliza.c +++ b/drivers/clk/qcom/tcsrcc-eliza.c @@ -162,17 +162,7 @@ static struct platform_driver tcsr_cc_eliza_driver =3D= { }, }; =20 -static int __init tcsr_cc_eliza_init(void) -{ - return platform_driver_register(&tcsr_cc_eliza_driver); -} -subsys_initcall(tcsr_cc_eliza_init); - -static void __exit tcsr_cc_eliza_exit(void) -{ - platform_driver_unregister(&tcsr_cc_eliza_driver); -} -module_exit(tcsr_cc_eliza_exit); +subsys_platform_driver(tcsr_cc_eliza_driver); =20 MODULE_DESCRIPTION("QTI TCSR_CC Eliza Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/tcsrcc-glymur.c b/drivers/clk/qcom/tcsrcc-gly= mur.c index 1791e23739ed..8ac60052fb14 100644 --- a/drivers/clk/qcom/tcsrcc-glymur.c +++ b/drivers/clk/qcom/tcsrcc-glymur.c @@ -296,17 +296,7 @@ static struct platform_driver tcsr_cc_glymur_driver = =3D { }, }; =20 -static int __init tcsr_cc_glymur_init(void) -{ - return platform_driver_register(&tcsr_cc_glymur_driver); -} -subsys_initcall(tcsr_cc_glymur_init); - -static void __exit tcsr_cc_glymur_exit(void) -{ - platform_driver_unregister(&tcsr_cc_glymur_driver); -} -module_exit(tcsr_cc_glymur_exit); +subsys_platform_driver(tcsr_cc_glymur_driver); =20 MODULE_DESCRIPTION("QTI TCSRCC Glymur Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/tcsrcc-kaanapali.c b/drivers/clk/qcom/tcsrcc-= kaanapali.c index db46d639edb8..78b77e7cd396 100644 --- a/drivers/clk/qcom/tcsrcc-kaanapali.c +++ b/drivers/clk/qcom/tcsrcc-kaanapali.c @@ -124,17 +124,7 @@ static struct platform_driver tcsr_cc_kaanapali_driver= =3D { }, }; =20 -static int __init tcsr_cc_kaanapali_init(void) -{ - return platform_driver_register(&tcsr_cc_kaanapali_driver); -} -subsys_initcall(tcsr_cc_kaanapali_init); - -static void __exit tcsr_cc_kaanapali_exit(void) -{ - platform_driver_unregister(&tcsr_cc_kaanapali_driver); -} -module_exit(tcsr_cc_kaanapali_exit); +subsys_platform_driver(tcsr_cc_kaanapali_driver); =20 MODULE_DESCRIPTION("QTI TCSR_CC Kaanapali Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/tcsrcc-sm8550.c b/drivers/clk/qcom/tcsrcc-sm8= 550.c index 41d73f92a000..6cac619dd959 100644 --- a/drivers/clk/qcom/tcsrcc-sm8550.c +++ b/drivers/clk/qcom/tcsrcc-sm8550.c @@ -191,17 +191,7 @@ static struct platform_driver tcsr_cc_sm8550_driver = =3D { }, }; =20 -static int __init tcsr_cc_sm8550_init(void) -{ - return platform_driver_register(&tcsr_cc_sm8550_driver); -} -subsys_initcall(tcsr_cc_sm8550_init); - -static void __exit tcsr_cc_sm8550_exit(void) -{ - platform_driver_unregister(&tcsr_cc_sm8550_driver); -} -module_exit(tcsr_cc_sm8550_exit); +subsys_platform_driver(tcsr_cc_sm8550_driver); =20 MODULE_DESCRIPTION("QTI TCSRCC SM8550 Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/tcsrcc-sm8650.c b/drivers/clk/qcom/tcsrcc-sm8= 650.c index 651e28067954..194aea6ec43a 100644 --- a/drivers/clk/qcom/tcsrcc-sm8650.c +++ b/drivers/clk/qcom/tcsrcc-sm8650.c @@ -173,17 +173,7 @@ static struct platform_driver tcsr_cc_sm8650_driver = =3D { }, }; =20 -static int __init tcsr_cc_sm8650_init(void) -{ - return platform_driver_register(&tcsr_cc_sm8650_driver); -} -subsys_initcall(tcsr_cc_sm8650_init); - -static void __exit tcsr_cc_sm8650_exit(void) -{ - platform_driver_unregister(&tcsr_cc_sm8650_driver); -} -module_exit(tcsr_cc_sm8650_exit); +subsys_platform_driver(tcsr_cc_sm8650_driver); =20 MODULE_DESCRIPTION("QTI TCSRCC SM8650 Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/tcsrcc-sm8750.c b/drivers/clk/qcom/tcsrcc-sm8= 750.c index 9fe840a448bf..b11ec403bb32 100644 --- a/drivers/clk/qcom/tcsrcc-sm8750.c +++ b/drivers/clk/qcom/tcsrcc-sm8750.c @@ -124,17 +124,7 @@ static struct platform_driver tcsr_cc_sm8750_driver = =3D { }, }; =20 -static int __init tcsr_cc_sm8750_init(void) -{ - return platform_driver_register(&tcsr_cc_sm8750_driver); -} -subsys_initcall(tcsr_cc_sm8750_init); - -static void __exit tcsr_cc_sm8750_exit(void) -{ - platform_driver_unregister(&tcsr_cc_sm8750_driver); -} -module_exit(tcsr_cc_sm8750_exit); +subsys_platform_driver(tcsr_cc_sm8750_driver); =20 MODULE_DESCRIPTION("QTI TCSR_CC SM8750 Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/tcsrcc-x1e80100.c b/drivers/clk/qcom/tcsrcc-x= 1e80100.c index ad1f6be83a53..7dbeff419f99 100644 --- a/drivers/clk/qcom/tcsrcc-x1e80100.c +++ b/drivers/clk/qcom/tcsrcc-x1e80100.c @@ -163,17 +163,7 @@ static struct platform_driver tcsr_cc_x1e80100_driver = =3D { }, }; =20 -static int __init tcsr_cc_x1e80100_init(void) -{ - return platform_driver_register(&tcsr_cc_x1e80100_driver); -} -subsys_initcall(tcsr_cc_x1e80100_init); - -static void __exit tcsr_cc_x1e80100_exit(void) -{ - platform_driver_unregister(&tcsr_cc_x1e80100_driver); -} -module_exit(tcsr_cc_x1e80100_exit); +subsys_platform_driver(tcsr_cc_x1e80100_driver); =20 MODULE_DESCRIPTION("QTI TCSR Clock Controller X1E80100 Driver"); MODULE_LICENSE("GPL"); diff --git a/drivers/clk/qcom/videocc-sm8750.c b/drivers/clk/qcom/videocc-s= m8750.c index b62271a7dac6..91d18a90b84f 100644 --- a/drivers/clk/qcom/videocc-sm8750.c +++ b/drivers/clk/qcom/videocc-sm8750.c @@ -445,17 +445,7 @@ static struct platform_driver video_cc_sm8750_driver = =3D { }, }; =20 -static int __init video_cc_sm8750_init(void) -{ - return platform_driver_register(&video_cc_sm8750_driver); -} -subsys_initcall(video_cc_sm8750_init); - -static void __exit video_cc_sm8750_exit(void) -{ - platform_driver_unregister(&video_cc_sm8750_driver); -} -module_exit(video_cc_sm8750_exit); +subsys_platform_driver(video_cc_sm8750_driver); =20 MODULE_DESCRIPTION("QTI VIDEO_CC SM8750 Driver"); MODULE_LICENSE("GPL"); --=20 2.55.0 From nobody Fri Sep 25 21:01:20 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 E5D365908C2 for ; Tue, 8 Sep 2026 17:48:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788889684; cv=none; b=SWgEsjyFqWHmK7v75hArBxkyVxeXQ9NESdR9kG1Wxq9Io5UN1hSFK/vQ3FR4KxEWF+L98IDglA3aKzYvvyevtuLRMGEHph5N52xh3KGnaOSvjr0gHW6ibATkVQKr5C1nHNllg+lE/hDh2huAYBAgWrs+Cbbx09JZKCu7jScaV7I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788889684; c=relaxed/simple; bh=rrY1owvxS07jbIpCbpLvTgnzot37t+bLysMBqFgi+Qo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iISP+ry0cm0Qy2VhXDzeajTh3mb2JX6NNsDQuclezpSegZu94ZpL7PQ164rKcjRF6+uf005z9d4/d0a+fHt/ufh8pjlpI7rhMdj4Y80ffRHXqYwHUpgAMbCw746RlTKPM3fy1Eon5ZnTQ3VI4dhyioAGK095q7x56cfVQW0BLlQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=UO4I9B5t; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=kyrKMfX7; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="UO4I9B5t"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="kyrKMfX7" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1788889681; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CS/10M/g4Wr/wq9hJUaikpGp/lR/pIXDB913LdXZJIU=; b=UO4I9B5tlKxToykYacgxHc84assgEASwmEMlJkbY5t4eT1hXAecsUsNPM+uip6THj1PtVh 4xu8CQzcd1+ZgQ7LLxslwxtrJgkhpBgUj1Xe2AI4FsmmfddqcQG5VvRsho/ilPMydEX7fh 4iLjJ0gHg5t3oINib/wmbSkNCCl1IBc= Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-248-0CjJ8J1-Mr2vxA-3GrR12Q-1; Tue, 08 Sep 2026 13:47:57 -0400 X-MC-Unique: 0CjJ8J1-Mr2vxA-3GrR12Q-1 X-Mimecast-MFC-AGG-ID: 0CjJ8J1-Mr2vxA-3GrR12Q_1788889677 Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-93915f50a5cso1163958985a.1 for ; Tue, 08 Sep 2026 10:47:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1788889677; x=1789494477; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=CS/10M/g4Wr/wq9hJUaikpGp/lR/pIXDB913LdXZJIU=; b=kyrKMfX75qHaeOvFn9p5aLnKw0A1NO5ezUFPqJhn6GcnSlAr61yQfYVLuEMh/+Gk+d KUdbtdFWtxmhB32x1PG9l5Air+7vylk+++e6VgBOGk1lDAkz0EyZzqEA5YQBmEXSL4xH F3r4uuyKkuAsLeE8Y2bBa7gYqb2gRcbqA6IsuCyNIs03StfH8/quTZSRiTSYXs1Nv4AL jI4avwZ973o1ps2TxFCYO1LeukSu/ZA0WJuXfMjwRDLkRIw3szCOJqHYKiwe9hdvjSW9 7O1bjzZRJARtzCye6bXHv9W2V7N58mslb0f/oMz6cAm9kGVkkJfpo0g/MdFOzWEdfpOS 5OGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788889677; x=1789494477; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=CS/10M/g4Wr/wq9hJUaikpGp/lR/pIXDB913LdXZJIU=; b=tWLYu6Y+xFRva3k4HmilOZJrSn4r4jE7uJO0M3+dGtYze4hTMAqV5GOcLcbO9+XoNy NDahq38Pz3ATrk+ou27IaBYk4FolQo4fMwhyMGrYCRzk8/y9b1YtPTxJC/5L7SGi7SAV RBNMy9ABYoF1xK8kSO0jD9rTtDbgJoQvXUtpk+3Y5lbudW5LGkULyFX5LEFX4DZtFVOX Rx5gmy2RLvZ9TKi1iEyJEmpBaSNdbWvClpdePKUxRFuTAhngit02coIn+FnxXZCRgpGR PmsDEYOvwJy8M88d6ZBkT0X1497GXL2+ooQQSx+SKcpGWCdENVr9s4CLhH6/J6a7GbNZ r3LA== X-Forwarded-Encrypted: i=1; AKwUvBwJNn4TjiHqrFyUWTth728omrErij3kPsX0krNwHxNoWaJzsGapXf/oQNVmQW+blpux2U2WvrDzcxakfl4=@vger.kernel.org X-Gm-Message-State: AFuF++n8ogaHvW2eBFqrbIfMmYQ8xZU+cTZSbm9IcoqevH01PM8ASdPW d8XxKHZ9beYNAz+QbSWnJr3mjkOCJkYvo3kUkWAd+YepY3hOLRHSL2usuWBjPABESI40cehBVlZ 6VZO6skE2rjnNnItQhUsvW+LPl/x6W+guecn6tuPxkMjjoOKjP5iEuzR7zs/NHtSpOw== X-Gm-Gg: AYBFou1p7cUUBlGo43d3NviAOz+z48yua5Pl2A7ROmxMngZyK3GX1Y1cNmgHJ+smZw+ vgaxosPRcpuAysqy95gLL+GPuGvOITpWFpos1pOGINlLrJUxD6g55i7c75jRLJdv1Z7fUsoi+cN rdc/iMCN+fP6P9DlBZsDexTthuvB1wsDmu3um9JRLEBnJIB6HRgXmR5Y9JnYY/yaKCFMaIh9pXd hVjmr3J23E5tIct78tfaDb/EaAKatJP+oDDLYbtfwyE9GRdhFOu+mm568fA1MLO9EXPi2ApJzPn N6IA+Z650mo0e7a/0jCteY2+d5ul0IzG7i7NFaRQ7EzsMQePWfcLTd2TAoeGKTt5Yog9Q5AeMaZ kigmyLVfwZzcLMhKRBh7wUc7vTo9qdfzQ+4W2dAw= X-Received: by 2002:a05:620a:46a5:b0:939:72cb:baeb with SMTP id af79cd13be357-93972cbbcabmr2833250185a.34.1788889672099; Tue, 08 Sep 2026 10:47:52 -0700 (PDT) X-Received: by 2002:a05:620a:46a5:b0:939:72cb:baeb with SMTP id af79cd13be357-93972cbbcabmr2833244485a.34.1788889671455; Tue, 08 Sep 2026 10:47:51 -0700 (PDT) Received: from [192.168.1.3] (c-73-183-53-213.hsd1.pa.comcast.net. [73.183.53.213]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9397fb9bac1sm1194093685a.35.2026.09.08.10.47.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 10:47:50 -0700 (PDT) From: Brian Masney Date: Tue, 08 Sep 2026 13:47:21 -0400 Subject: [PATCH 4/4] clk: renesas: convert drivers over to use subsys_platform_driver() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260908-subsys_initcall-v1-4-cbccf4cd4288@redhat.com> References: <20260908-subsys_initcall-v1-0-cbccf4cd4288@redhat.com> In-Reply-To: <20260908-subsys_initcall-v1-0-cbccf4cd4288@redhat.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Bjorn Andersson , Stephen Boyd , Jerome Brunet , Geert Uytterhoeven Cc: driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Brian Masney X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2826; i=bmasney@redhat.com; s=20250903; h=from:subject:message-id; bh=rrY1owvxS07jbIpCbpLvTgnzot37t+bLysMBqFgi+Qo=; b=owGbwMvMwCW2/dJd9di6A+2Mp9WSGLIWeNl/XMezhn1zYsGtX80ei091LkxnfKvOcIY9mvH5O auzVZ6eHaUsDGJcDLJiiixLco0KIlJX2d67o8kCM4eVCWQIAxenAEzkRjAjw8w1per1JTesE1OS lj27piPfMPvGTsNPXX8nB0r//p46/yXD/4RZf9ZskF6m2PKfMWbh093KwmY9CS78O+6I73h+enE TMysA X-Developer-Key: i=bmasney@redhat.com; a=openpgp; fpr=A46D32705865AA3DDEDC2904B7D2DD275D7EC087 Reduce boilerplate code in the drivers and convert them over to use subsys_platform_driver(). Signed-off-by: Brian Masney Assisted-by: Claude:claude-opus-4-8 Acked-by: Geert Uytterhoeven Reviewed-by: Geert Uytterhoeven Tested-by: Geert Uytterhoeven Tested-by: Pankaj Patil --- drivers/clk/renesas/r9a06g032-clocks.c | 8 +------- drivers/clk/renesas/renesas-cpg-mssr.c | 7 +------ drivers/clk/renesas/rzg2l-cpg.c | 7 +------ drivers/clk/renesas/rzv2h-cpg.c | 7 +------ 4 files changed, 4 insertions(+), 25 deletions(-) diff --git a/drivers/clk/renesas/r9a06g032-clocks.c b/drivers/clk/renesas/r= 9a06g032-clocks.c index 1da25e4fb4d7..3df3f2b2c6de 100644 --- a/drivers/clk/renesas/r9a06g032-clocks.c +++ b/drivers/clk/renesas/r9a06g032-clocks.c @@ -1419,10 +1419,4 @@ static struct platform_driver r9a06g032_clock_driver= =3D { }, }; =20 -static int __init r9a06g032_clocks_init(void) -{ - return platform_driver_probe(&r9a06g032_clock_driver, - r9a06g032_clocks_probe); -} - -subsys_initcall(r9a06g032_clocks_init); +subsys_platform_driver_probe(r9a06g032_clock_driver, r9a06g032_clocks_prob= e); diff --git a/drivers/clk/renesas/renesas-cpg-mssr.c b/drivers/clk/renesas/r= enesas-cpg-mssr.c index 80f4403ea2ba..87b555e38980 100644 --- a/drivers/clk/renesas/renesas-cpg-mssr.c +++ b/drivers/clk/renesas/renesas-cpg-mssr.c @@ -1428,12 +1428,7 @@ static struct platform_driver cpg_mssr_driver =3D { }, }; =20 -static int __init cpg_mssr_init(void) -{ - return platform_driver_probe(&cpg_mssr_driver, cpg_mssr_probe); -} - -subsys_initcall(cpg_mssr_init); +subsys_platform_driver_probe(cpg_mssr_driver, cpg_mssr_probe); =20 void __init mssr_mod_nullify(struct mssr_mod_clk *mod_clks, unsigned int num_mod_clks, diff --git a/drivers/clk/renesas/rzg2l-cpg.c b/drivers/clk/renesas/rzg2l-cp= g.c index 7f8decef92fd..f6293c968bcf 100644 --- a/drivers/clk/renesas/rzg2l-cpg.c +++ b/drivers/clk/renesas/rzg2l-cpg.c @@ -2758,11 +2758,6 @@ static struct platform_driver rzg2l_cpg_driver =3D { }, }; =20 -static int __init rzg2l_cpg_init(void) -{ - return platform_driver_probe(&rzg2l_cpg_driver, rzg2l_cpg_probe); -} - -subsys_initcall(rzg2l_cpg_init); +subsys_platform_driver_probe(rzg2l_cpg_driver, rzg2l_cpg_probe); =20 MODULE_DESCRIPTION("Renesas RZ/G2L CPG Driver"); diff --git a/drivers/clk/renesas/rzv2h-cpg.c b/drivers/clk/renesas/rzv2h-cp= g.c index 63f13fe4e4b0..7ce94680c79a 100644 --- a/drivers/clk/renesas/rzv2h-cpg.c +++ b/drivers/clk/renesas/rzv2h-cpg.c @@ -1643,11 +1643,6 @@ static struct platform_driver rzv2h_cpg_driver =3D { }, }; =20 -static int __init rzv2h_cpg_init(void) -{ - return platform_driver_probe(&rzv2h_cpg_driver, rzv2h_cpg_probe); -} - -subsys_initcall(rzv2h_cpg_init); +subsys_platform_driver_probe(rzv2h_cpg_driver, rzv2h_cpg_probe); =20 MODULE_DESCRIPTION("Renesas RZ/V2H CPG Driver"); --=20 2.55.0