zephyr/drivers/firmware/scmi/Kconfig
Laurentiu Mihalcea 6b689d0207 firmware: scmi: add support for pinctrl protocol
This includes helper function for pin configuration
and a DT binding for the pinctrl DT node.

There's two important notes to be made regarding this
protocol:

* pinctrl drivers have no subsytem API to implement as opposed
to clock control drivers. Because of this (and the fact that
`pinctrl_configure_pins()` doesn't require a `struct device`
handle) the pinctrl driver consists only of a helper function,
which implements the `PINCTRL_CONFIGURE_PINS` command.
Additionally, the `scmi_protocol` structure is defined inside
the pinctrl helpers source file to avoid redundant code
(otherwise, each SCMI-based pinctrl driver would have to define
it its source file).

* each vendor may have their own set of pin propeties and DT
representations for them. Because of this, there can't be a
generic, SCMI-based pinctrl driver. As such, each vendor who
wants to use the SCMI support for pinctrl operations will have
to implement their pinctrl driver (which, to put it simply,
revolves around implemeting `pinctrl_configure_pins()`) and
make use of the pin configuration function introduced in this
commit. Moreover, this means that each vendor will have control
over the way their pin properties are encoded in the
`scmi_pinctrl_settings` structure.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-08-19 10:05:16 -04:00

60 lines
1.7 KiB
Plaintext

# Copyright 2024 NXP
# SPDX-License-Identifier: Apache-2.0
if ARM_SCMI
config ARM_SCMI_CLK_HELPERS
bool "Helper functions for SCMI clock protocol"
default y
depends on DT_HAS_ARM_SCMI_CLOCK_ENABLED
help
Enable support for SCMI clock protocol helper functions.
config ARM_SCMI_MAILBOX_TRANSPORT
bool "SCMI transport based on shared memory and doorbells"
default y
depends on DT_HAS_ARM_SCMI_ENABLED
depends on ARM_SCMI_SHMEM
select ARM_SCMI_TRANSPORT_HAS_STATIC_CHANNELS
help
Enable support for SCMI transport based on shared memory
and doorbells.
config ARM_SCMI_PINCTRL_HELPERS
bool "Helper functions for SCMI pinctrl protocol"
default y
depends on DT_HAS_ARM_SCMI_PINCTRL_ENABLED
help
Enable support for SCMI pinctrl protocol helper functions.
config ARM_SCMI_SHMEM
bool "SCMI shared memory (SHMEM) driver"
default y
depends on DT_HAS_ARM_SCMI_SHMEM_ENABLED
help
Enable support for SCMI shared memory (SHMEM) driver.
config ARM_SCMI_SHMEM_INIT_PRIORITY
int "SCMI shared memory (SHMEM) initialization priority"
default 15
help
SCMI SHMEM driver device initialization priority.
config ARM_SCMI_TRANSPORT_HAS_STATIC_CHANNELS
bool "Transport layer has static channels"
help
Enable this if the SCMI transport layer uses static channels.
What this means is that each protocol will have its channels
assigned at compile time. This option is recommended for
transport layer drivers which can use the default channel
allocation scheme (i.e: use protocol-specific channels if
they exist, otherwise use base protocol channels).
config ARM_SCMI_TRANSPORT_INIT_PRIORITY
int "SCMI transport layer initialization priority"
default 20
help
SCMI transport driver device initialization priority.
endif # ARM_SCMI