• Svetlin Ankov's avatar
    greybus: audio: Add Audio Manager · 8db00736
    Svetlin Ankov authored
    This is a simple module that keeps a list of connected GB audio
    modules.
    
    Whenever a device is attached, an appropriate uevent is sent to
    userspace:
    
        UDEV  [4941.803215] add      /kernel/gb_audio_manager/0 (gb_audio_manager)
        ACTION=add
        CPORT=99
        DEVICES=0x10
        DEVPATH=/kernel/gb_audio_manager/0
        NAME=naim
        PID=64
        SEQNUM=1828
        SLOT=2
        SUBSYSTEM=gb_audio_manager
        USEC_INITIALIZED=802416
        VID=128
    
    And whenever removed:
    
        UDEV  [4941.836588] remove   /kernel/gb_audio_manager/0 (gb_audio_manager)
        ACTION=remove
        DEVPATH=/kernel/gb_audio_manager/0
        SEQNUM=1833
        SUBSYSTEM=gb_audio_manager
        USEC_INITIALIZED=835681
    
    The API consists of functions for adding, removing and inspecting
    added device module descriptions (struct gb_audio_module):
    
        int                         gb_audio_manager_add(struct gb_audio_module_descriptor *desc);
        int                         gb_audio_manager_remove(int id);
        int                         gb_audio_manager_remove_all(void);
        struct  gb_audio_module*    gb_audio_manager_get_module(int id);
        void                        gb_audio_manager_put_module(struct gb_audio_module *module);
        int                         gb_audio_manager_dump_module(int id);
        void                        gb_audio_manager_dump_all(void);
    
    Devices can be inspected through sysfs in /sys/kernel/gb_audio_manager/{id}/*
    
    If GB_AUDIO_MANAGER_SYSFS is exported as 'true', managing devices can be done
    via the SYSFS as well. For instance:
    
        echo name=naim slot=2 vid=128 pid=64 cport=99 devices=0x10 > /sys/kernel/gb_audio_manager/add
        echo all > /sys/kernel/gb_audio_manager/dump
        echo 2 > /sys/kernel/gb_audio_manager/dump
        echo 2 > /sys/kernel/gb_audio_manager/remove
    Signed-off-by: default avatarSvetlin Ankov <ankov_svetlin@projectara.com>
    Signed-off-by: default avatarMark Greer <mgreer@animalcreek.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
    8db00736
audio_manager.h 1.91 KB