# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)

name: em

doc: |
  Energy model netlink interface to notify its changes.

protocol: genetlink

uapi-header: linux/energy_model.h

attribute-sets:
  -
    name: pds
    attributes:
      -
        name: pd
        type: nest
        nested-attributes: pd
        multi-attr: true
  -
    name: pd
    attributes:
      -
        name: pad
        type: pad
      -
        name: pd-id
        type: u32
      -
        name: flags
        type: u64
      -
        name: cpus
        type: string
  -
    name: pd-table
    attributes:
      -
        name: pd-id
        type: u32
      -
        name: ps
        type: nest
        nested-attributes: ps
        multi-attr: true
  -
    name: ps
    attributes:
      -
        name: pad
        type: pad
      -
        name: performance
        type: u64
      -
        name: frequency
        type: u64
      -
        name: power
        type: u64
      -
        name: cost
        type: u64
      -
        name: flags
        type: u64

operations:
  list:
    -
      name: get-pds
      attribute-set: pds
      doc: Get the list of information for all performance domains.
      do:
        reply:
          attributes:
            - pd
    -
      name: get-pd-table
      attribute-set: pd-table
      doc: Get the energy model table of a performance domain.
      do:
        request:
          attributes:
            - pd-id
        reply:
          attributes:
            - pd-id
            - ps
    -
      name: pd-created
      doc: A performance domain is created.
      notify: get-pd-table
      mcgrp: event
    -
      name: pd-updated
      doc: A performance domain is updated.
      notify: get-pd-table
      mcgrp: event
    -
      name: pd-deleted
      doc: A performance domain is deleted.
      attribute-set: pd-table
      event:
        attributes:
            - pd-id
      mcgrp: event

mcast-groups:
  list:
    -
      name: event
