Re: [PATCH RFC v6 0/6] Create common DPLL/clock configuration API

Jiri Pirko
2023-03-13T16:23:06Z

Mon, Mar 13, 2023 at 04:33:13PM CET, vadim.fedorenko@linux.dev wrote:
>On 13/03/2023 12:20, Jiri Pirko wrote:
>> Sun, Mar 12, 2023 at 03:28:01AM CET, vadfed@meta.com wrote:
>> > Implement common API for clock/DPLL configuration and status reporting.
>> > The API utilises netlink interface as transport for commands and event
>> > notifications. This API aim to extend current pin configuration and
>> > make it flexible and easy to cover special configurations.
>>
>> Could you please put here some command line examples to work with this?
>
>We don't have open-source tools ready right now for specific hardware, but
>with YAML spec published you can use in-kernel tool to manipulate the values,
>i.e.:
>
>./tools/net/ynl/cli.py --spec Documentation/netlink/specs/dpll.yaml --dump
>device-get
>./tools/net/ynl/cli.py --spec Documentation/netlink/specs/dpll.yaml --do
>device-get --json '{"id": 0}'
>./tools/net/ynl/cli.py --spec Documentation/netlink/specs/dpll.yaml --dump
>pin-get
>./tools/net/ynl/cli.py --spec Documentation/netlink/specs/dpll.yaml --do
>pin-get --json '{"id": 0, "pin-idx":1}'
>./tools/net/ynl/cli.py --spec Documentation/netlink/specs/dpll.yaml --do
>pin-set --json '{"id":0, "pin-idx":1, "pin-frequency":1}'

Yep, that is exactly what I was asking for. Thanks.
Please try to extend it a bit and add to the cover letter. Gives people
better understanding of how this works.

>
>>
>> >
>> > v5 -> v6:
>> > * rework pin part to better fit shared pins use cases
>> > * add YAML spec to easy generate user-space apps
>> > * simple implementation in ptp_ocp is back again
>> > v4 -> v5:
>> > * fix code issues found during last reviews:
>> > - replace cookie with clock id
>> > - follow one naming schema in dpll subsys
>> > - move function comments to dpll_core.c, fix exports
>> > - remove single-use helper functions
>> > - merge device register with alloc
>> > - lock and unlock mutex on dpll device release
>> > - move dpll_type to uapi header
>> > - rename DPLLA_DUMP_FILTER to DPLLA_FILTER
>> > - rename dpll_pin_state to dpll_pin_mode
>> > - rename DPLL_MODE_FORCED to DPLL_MODE_MANUAL
>> > - remove DPLL_CHANGE_PIN_TYPE enum value
>> > * rewrite framework once again (Arkadiusz)
>> > - add clock class:
>> > Provide userspace with clock class value of DPLL with dpll device dump
>> > netlink request. Clock class is assigned by driver allocating a dpll
>> > device. Clock class values are defined as specified in:
>> > ITU-T G.8273.2/Y.1368.2 recommendation.
>> > - dpll device naming schema use new pattern:
>> > "dpll_%s_%d_%d", where:
>> > - %s - dev_name(parent) of parent device,
>> > - %d (1) - enum value of dpll type,
>> > - %d (2) - device index provided by parent device.
>> > - new muxed/shared pin registration:
>> > Let the kernel module to register a shared or muxed pin without finding
>> > it or its parent. Instead use a parent/shared pin description to find
>> > correct pin internally in dpll_core, simplifing a dpll API
>> > * Implement complex DPLL design in ice driver (Arkadiusz)
>> > * Remove ptp_ocp driver from the series for now
>> > v3 -> v4:
>> > * redesign framework to make pins dynamically allocated (Arkadiusz)
>> > * implement shared pins (Arkadiusz)
>> > v2 -> v3:
>> > * implement source select mode (Arkadiusz)
>> > * add documentation
>> > * implementation improvements (Jakub)
>> > v1 -> v2:
>> > * implement returning supported input/output types
>> > * ptp_ocp: follow suggestions from Jonathan
>> > * add linux-clk mailing list
>> > v0 -> v1:
>> > * fix code style and errors
>> > * add linux-arm mailing list
>> >
>> > Arkadiusz Kubalewski (3):
>> > dpll: spec: Add Netlink spec in YAML
>> > ice: add admin commands to access cgu configuration
>> > ice: implement dpll interface to control cgu
>> >
>> > Vadim Fedorenko (3):
>> > dpll: Add DPLL framework base functions
>> > dpll: documentation on DPLL subsystem interface
>> > ptp_ocp: implement DPLL ops
>> >
>> > Documentation/netlink/specs/dpll.yaml | 514 +++++
>> > Documentation/networking/dpll.rst | 347 ++++
>> > Documentation/networking/index.rst | 1 +
>> > MAINTAINERS | 9 +
>> > drivers/Kconfig | 2 +
>> > drivers/Makefile | 1 +
>> > drivers/dpll/Kconfig | 7 +
>> > drivers/dpll/Makefile | 10 +
>> > drivers/dpll/dpll_core.c | 835 ++++++++
>> > drivers/dpll/dpll_core.h | 99 +
>> > drivers/dpll/dpll_netlink.c | 1065 ++++++++++
>> > drivers/dpll/dpll_netlink.h | 30 +
>> > drivers/dpll/dpll_nl.c | 126 ++
>> > drivers/dpll/dpll_nl.h | 42 +
>> > drivers/net/ethernet/intel/Kconfig | 1 +
>> > drivers/net/ethernet/intel/ice/Makefile | 3 +-
>> > drivers/net/ethernet/intel/ice/ice.h | 5 +
>> > .../net/ethernet/intel/ice/ice_adminq_cmd.h | 240 ++-
>> > drivers/net/ethernet/intel/ice/ice_common.c | 467 +++++
>> > drivers/net/ethernet/intel/ice/ice_common.h | 43 +
>> > drivers/net/ethernet/intel/ice/ice_dpll.c | 1845 +++++++++++++++++
>> > drivers/net/ethernet/intel/ice/ice_dpll.h | 96 +
>> > drivers/net/ethernet/intel/ice/ice_lib.c | 17 +-
>> > drivers/net/ethernet/intel/ice/ice_main.c | 7 +
>> > drivers/net/ethernet/intel/ice/ice_ptp_hw.c | 411 ++++
>> > drivers/net/ethernet/intel/ice/ice_ptp_hw.h | 240 +++
>> > drivers/net/ethernet/intel/ice/ice_type.h | 1 +
>> > drivers/ptp/Kconfig | 1 +
>> > drivers/ptp/ptp_ocp.c | 206 +-
>> > include/linux/dpll.h | 284 +++
>> > include/uapi/linux/dpll.h | 196 ++
>> > 31 files changed, 7135 insertions(+), 16 deletions(-)
>> > create mode 100644 Documentation/netlink/specs/dpll.yaml
>> > create mode 100644 Documentation/networking/dpll.rst
>> > create mode 100644 drivers/dpll/Kconfig
>> > create mode 100644 drivers/dpll/Makefile
>> > create mode 100644 drivers/dpll/dpll_core.c
>> > create mode 100644 drivers/dpll/dpll_core.h
>> > create mode 100644 drivers/dpll/dpll_netlink.c
>> > create mode 100644 drivers/dpll/dpll_netlink.h
>> > create mode 100644 drivers/dpll/dpll_nl.c
>> > create mode 100644 drivers/dpll/dpll_nl.h
>> > create mode 100644 drivers/net/ethernet/intel/ice/ice_dpll.c
>> > create mode 100644 drivers/net/ethernet/intel/ice/ice_dpll.h
>> > create mode 100644 include/linux/dpll.h
>> > create mode 100644 include/uapi/linux/dpll.h
>> >
>> > --
>> > 2.34.1
>> >
>