From: Viresh Kumar <viresh.kumar@linaro.org>
To: "Rafael J. Wysocki" <rafael@kernel.org>,
"Miguel Ojeda" <miguel.ojeda.sandonis@gmail.com>,
"Danilo Krummrich" <dakr@redhat.com>,
"Alex Gaynor" <alex.gaynor@gmail.com>,
"Alice Ryhl" <aliceryhl@google.com>,
"Andreas Hindborg" <a.hindborg@samsung.com>,
"Benno Lossin" <benno.lossin@proton.me>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Boqun Feng" <boqun.feng@gmail.com>,
"Gary Guo" <gary@garyguo.net>, "Miguel Ojeda" <ojeda@kernel.org>,
"Nishanth Menon" <nm@ti.com>, "Stephen Boyd" <sboyd@kernel.org>,
"Viresh Kumar" <vireshk@kernel.org>,
"Viresh Kumar" <viresh.kumar@linaro.org>,
"Wedson Almeida Filho" <wedsonaf@gmail.com>
Cc: linux-pm@vger.kernel.org,
"Vincent Guittot" <vincent.guittot@linaro.org>,
rust-for-linux@vger.kernel.org,
"Manos Pitsidianakis" <manos.pitsidianakis@linaro.org>,
"Erik Schilling" <erik.schilling@linaro.org>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Joakim Bech" <joakim.bech@linaro.org>,
"Rob Herring" <robh@kernel.org>,
linux-kernel@vger.kernel.org
Subject: [PATCH V5 0/8] Rust bindings for cpufreq and OPP core + sample driver
Date: Tue, 30 Jul 2024 15:56:57 +0530 [thread overview]
Message-ID: <cover.1722334569.git.viresh.kumar@linaro.org> (raw)
Hello,
This patch series introduces initial Rust bindings for two subsystems: cpufreq
and Operating Performance Points (OPP). The bindings cover most of the
interfaces exposed by these subsystems.
Included in this series is a sample `cpufreq` driver, `rcpufreq-dt`, which is a
duplicate of the existing `cpufreq-dt` driver. The `cpufreq-dt` driver is a
generic, platform-agnostic, device-tree-based driver used on many ARM platforms.
Currently, the implementation has been tested using QEMU, verifying that
frequency transitions, various configurations, and driver binding/unbinding
functions as expected. However, performance measurements have not been
conducted.
For those interested in trying these patches, along with a few dependencies,
they can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/linux.git rust/cpufreq-dt
This series depends on foundational bindings for several other modules,
including device/driver, platform driver, OF (Device Tree), clock, and cpumask.
Support for these modules is not yet intended for upstream inclusion.
The work is based on `staging/rust-device` from the Rust tree, which is derived
from v6.10-rc1.
V4->V5:
- Rename Registration::register() as new().
- Provide a new API: Registration::new_foreign_owned() and use it for
rcpufreq_dt driver.
- Update MAINTAINERS file.
V3->V4:
- Fix bugs with freeing of OPP structure. Dropped the Drop routine and fixed
reference counting.
- Registration object of the cpufreq core is modified a bit to remove the
registered field, and few other cleanups.
- Use Devres for instead of platform data.
- Improve SAFETY comments.
V2->V3:
- Rebased on latest rust-device changes, which removed `Data` and so few changes
were required to make it work.
- use srctree links (Alice Ryhl).
- Various changes the OPP creation APIs, new APIs: from_raw_opp() and
from_raw_opp_owned() (Alice Ryhl).
- Inline as_raw() helpers (Alice Ryhl).
- Add new interface (`OPP::Token`) for dynamically created OPPs.
- Add Reviewed-by tag from Manos.
- Modified/simplified cpufreq registration structure / method a bit.
V1->V2:
- Create and use separate bindings for OF, clk, cpumask, etc (not included in
this patchset but pushed to the above branch). This helped removing direct
calls from the driver.
- Fix wrong usage of Pinning + Vec.
- Use Token for OPP Config.
- Use Opaque, transparent and Aref for few structures.
- Broken down into smaller patches to make it easy for reviewers.
- Based over staging/rust-device.
Thanks.
Viresh Kumar (8):
rust: Add initial bindings for OPP framework
rust: Extend OPP bindings for the OPP table
rust: Extend OPP bindings for the configuration options
rust: Add initial bindings for cpufreq framework
rust: Extend cpufreq bindings for policy and driver ops
rust: Extend cpufreq bindings for driver registration
rust: Extend OPP bindings with CPU frequency table
cpufreq: Add Rust based cpufreq-dt driver
MAINTAINERS | 2 +
drivers/cpufreq/Kconfig | 12 +
drivers/cpufreq/Makefile | 1 +
drivers/cpufreq/rcpufreq_dt.rs | 221 +++++++
rust/bindings/bindings_helper.h | 2 +
rust/helpers.c | 15 +
rust/kernel/cpufreq.rs | 1039 +++++++++++++++++++++++++++++++
rust/kernel/lib.rs | 4 +
rust/kernel/opp.rs | 925 +++++++++++++++++++++++++++
9 files changed, 2221 insertions(+)
create mode 100644 drivers/cpufreq/rcpufreq_dt.rs
create mode 100644 rust/kernel/cpufreq.rs
create mode 100644 rust/kernel/opp.rs
--
2.31.1.272.g89b43f80a514
next reply other threads:[~2024-07-30 10:27 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-30 10:26 Viresh Kumar [this message]
2024-07-30 10:26 ` [PATCH V5 1/8] rust: Add initial bindings for OPP framework Viresh Kumar
2024-07-30 10:26 ` [PATCH V5 2/8] rust: Extend OPP bindings for the OPP table Viresh Kumar
2024-07-30 10:27 ` [PATCH V5 3/8] rust: Extend OPP bindings for the configuration options Viresh Kumar
2024-07-30 10:27 ` [PATCH V5 4/8] rust: Add initial bindings for cpufreq framework Viresh Kumar
2024-07-30 10:27 ` [PATCH V5 5/8] rust: Extend cpufreq bindings for policy and driver ops Viresh Kumar
2024-07-30 10:27 ` [PATCH V5 6/8] rust: Extend cpufreq bindings for driver registration Viresh Kumar
2024-08-15 8:30 ` Pierre Gondois
2024-07-30 10:27 ` [PATCH V5 7/8] rust: Extend OPP bindings with CPU frequency table Viresh Kumar
2024-07-30 10:27 ` [PATCH V5 8/8] cpufreq: Add Rust based cpufreq-dt driver Viresh Kumar
2024-07-31 21:14 ` Rob Herring
2024-08-01 8:31 ` Viresh Kumar
2024-08-01 16:05 ` Rob Herring
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1722334569.git.viresh.kumar@linaro.org \
--to=viresh.kumar@linaro.org \
--cc=a.hindborg@samsung.com \
--cc=alex.bennee@linaro.org \
--cc=alex.gaynor@gmail.com \
--cc=aliceryhl@google.com \
--cc=benno.lossin@proton.me \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=dakr@redhat.com \
--cc=erik.schilling@linaro.org \
--cc=gary@garyguo.net \
--cc=joakim.bech@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=manos.pitsidianakis@linaro.org \
--cc=miguel.ojeda.sandonis@gmail.com \
--cc=nm@ti.com \
--cc=ojeda@kernel.org \
--cc=rafael@kernel.org \
--cc=robh@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=sboyd@kernel.org \
--cc=vincent.guittot@linaro.org \
--cc=vireshk@kernel.org \
--cc=wedsonaf@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.