26 Apr, 2019

1 commit

  • This patch introduces the Generic Counter interface for supporting
    counter devices.

    In the context of the Generic Counter interface, a counter is defined as
    a device that reports one or more "counts" based on the state changes of
    one or more "signals" as evaluated by a defined "count function."

    Driver callbacks should be provided to communicate with the device: to
    read and write various Signals and Counts, and to set and get the
    "action mode" and "count function" for various Synapses and Counts
    respectively.

    To support a counter device, a driver must first allocate the available
    Counter Signals via counter_signal structures. These Signals should
    be stored as an array and set to the signals array member of an
    allocated counter_device structure before the Counter is registered to
    the system.

    Counter Counts may be allocated via counter_count structures, and
    respective Counter Signal associations (Synapses) made via
    counter_synapse structures. Associated counter_synapse structures are
    stored as an array and set to the the synapses array member of the
    respective counter_count structure. These counter_count structures are
    set to the counts array member of an allocated counter_device structure
    before the Counter is registered to the system.

    A counter device is registered to the system by passing the respective
    initialized counter_device structure to the counter_register function;
    similarly, the counter_unregister function unregisters the respective
    Counter. The devm_counter_register and devm_counter_unregister functions
    serve as device memory-managed versions of the counter_register and
    counter_unregister functions respectively.

    Reviewed-by: Jonathan Cameron
    Signed-off-by: William Breathitt Gray
    Signed-off-by: Greg Kroah-Hartman

    William Breathitt Gray