Message ID | 20230823225242.817957-1-vadim.fedorenko@linux.dev (mailing list archive) |
---|---|
Headers | show |
Series | Create common DPLL configuration API | expand |
Thu, Aug 24, 2023 at 12:52:33AM CEST, vadim.fedorenko@linux.dev wrote: >Implement common API for DPLL configuration and status reporting. >The API utilises netlink interface as transport for commands and event >notifications. This API aims to extend current pin configuration >provided by PTP subsystem and make it flexible and easy to cover >complex configurations. > >Netlink interface is based on ynl spec, it allows use of in-kernel >tools/net/ynl/cli.py application to control the interface with properly >formated command and json attribute strings. Here are few command >examples of how it works with `ice` driver on supported NIC: > >- dump dpll devices: >$ sudo ./tools/net/ynl/cli.py --spec Documentation/netlink/specs/dpll.yaml \ >--dump device-get >[{'clock-id': 4658613174691613800, > 'id': 0, > 'lock-status': 'locked-ho-acq', > 'mode': 'automatic', > 'mode-supported': ['automatic'], > 'module-name': 'ice', > 'type': 'eec'}, > {'clock-id': 4658613174691613800, > 'id': 1, > 'lock-status': 'locked-ho-acq', > 'mode': 'automatic', > 'mode-supported': ['automatic'], > 'module-name': 'ice', > 'type': 'pps'}] > >- get single pin info: >$ sudo ./tools/net/ynl/cli.py --spec Documentation/netlink/specs/dpll.yaml \ >--do pin-get --json '{"id":2}' >{'board-label': 'C827_0-RCLKA', > 'clock-id': 4658613174691613800, > 'capabilities': 6, > 'frequency': 1953125, > 'id': 2, > 'module-name': 'ice', > 'parent-device': [{'direction': 'input', > 'parent-id': 0, > 'prio': 9, > 'state': 'disconnected'}, > {'direction': 'input', > 'parent-id': 1, > 'prio': 9, > 'state': 'disconnected'}], > 'type': 'mux'} > >- set pin's state on dpll: >$ sudo ./tools/net/ynl/cli.py --spec Documentation/netlink/specs/dpll.yaml \ >--do pin-set --json '{"id":2, "parent-device":{"parent-id":1, "state":2}}' > >- set pin's prio on dpll: >$ sudo ./tools/net/ynl/cli.py --spec Documentation/netlink/specs/dpll.yaml \ >--do pin-set --json '{"id":2, "parent-device":{"parent-id":1, "prio":4}}' > >- set pin's state on parent pin: >$ sudo ./tools/net/ynl/cli.py --spec Documentation/netlink/specs/dpll.yaml \ >--do pin-set --json '{"id":13, "parent-pin":{"parent-id":2, "state":1}}' > > >Changelog: > >v5 -> v6: >- change dpll-caps to pin capabilities and adjust enum accordingly >- remove dpll.h from netdevice.h For the record, I'm fine with this version and my signed-offs stand. Thanks!