|
|
Log in / Subscribe / Register

Rust bindings for cpufreq and OPP core + sample driver

From:  Viresh Kumar <viresh.kumar-AT-linaro.org>
To:  "Rafael J. Wysocki" <rafael-AT-kernel.org>, Miguel Ojeda <miguel.ojeda.sandonis-AT-gmail.com>, Alex Gaynor <alex.gaynor-AT-gmail.com>, Alice Ryhl <aliceryhl-AT-google.com>, Andreas Hindborg <a.hindborg-AT-samsung.com>, Benno Lossin <benno.lossin-AT-proton.me>, Björn Roy Baron <bjorn3_gh-AT-protonmail.com>, Boqun Feng <boqun.feng-AT-gmail.com>, Gary Guo <gary-AT-garyguo.net>, Miguel Ojeda <ojeda-AT-kernel.org>, Viresh Kumar <viresh.kumar-AT-linaro.org>, Wedson Almeida Filho <wedsonaf-AT-gmail.com>
Subject:  [RFC PATCH 0/3] Rust bindings for cpufreq and OPP core + sample driver
Date:  Fri, 05 Apr 2024 16:39:37 +0530
Message-ID:  <cover.1712314032.git.viresh.kumar@linaro.org>
Cc:  linux-pm-AT-vger.kernel.org, Vincent Guittot <vincent.guittot-AT-linaro.org>, Stephen Boyd <sboyd-AT-kernel.org>, Nishanth Menon <nm-AT-ti.com>, rust-for-linux-AT-vger.kernel.org, Manos Pitsidianakis <manos.pitsidianakis-AT-linaro.org>, Erik Schilling <erik.schilling-AT-linaro.org>, Alex Bennée <alex.bennee-AT-linaro.org>, Joakim Bech <joakim.bech-AT-linaro.org>, linux-kernel-AT-vger.kernel.org
Archive-link:  Article

Hello,

This RFC adds initial rust bindings for two subsystems, cpufreq and operating
performance points (OPP). The bindings are provided for most of the interface
these subsystems expose.

This series also provides a sample cpufreq driver rcpufreq-dt, which is a
duplicate of the merged cpufreq-dt driver (A generic platform agnostic device
tree based cpufreq driver) used on most of the ARM platforms.

This is tested with the help of QEMU for now and frequency transitions and
configurations work as expected. No performance measurement is done as of now
with this.

These patches (along with a lot of other dependencies) are pushed here for
anyone to give them a try:

git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/linux.git rust/cpufreq-dt


I understand that there is a long road ahead before these patches can get merged
as a lot of other stuff needs to get in first, i.e. Rust bindings for:
- generic device / driver
- platform device / driver
- clk, regulator, OF, cpumask, etc

Because of the missing bindings for above APIs, lot of calls are made directly
into the bindgen generated bindings for now, to make this work. Hopefully we can
have a lot less unsafe code once we get all those things merged.

Based over v6.9-rc1.

Thanks.

Viresh Kumar (3):
  rust: Add bindings for OPP framework
  rust: Add bindings for cpufreq framework
  cpufreq: Add Rust based cpufreq-dt driver

 drivers/cpufreq/Kconfig         |   12 +
 drivers/cpufreq/Makefile        |    1 +
 drivers/cpufreq/rcpufreq_dt.rs  |  264 ++++++++
 rust/bindings/bindings_helper.h |    2 +
 rust/helpers.c                  |   15 +
 rust/kernel/cpufreq.rs          | 1090 +++++++++++++++++++++++++++++++
 rust/kernel/lib.rs              |    4 +
 rust/kernel/opp.rs              |  895 +++++++++++++++++++++++++
 8 files changed, 2283 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




Copyright © 2024, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds