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

From: Vadim Fedorenko <[email-masked]>
Date: Mon, 13 Mar 2023 16:31:17 +0000

On 13/03/2023 16:22, Jiri Pirko wrote:
> Mon, Mar 13, 2023 at 04:33:13PM CET, [email-masked] wrote:
>> On 13/03/2023 12:20, Jiri Pirko wrote:
>>> Sun, Mar 12, 2023 at 03:28:01AM CET, [email-masked] 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.

Sure, will extend the cover letter in the next version, thanks!

> 
>>
>>>
>>>>
>>>> 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
>>>>
>>