• Even Xu's avatar
    HID: Intel-ish-hid: Ishtp: Add helper functions for client connection · a3a44d2d
    Even Xu authored
    For every ishtp client driver during initialization state, the flow is:
    1 - Allocate an ISHTP client instance
    2 - Reserve a host id and link the client instance
    3 - Search a firmware client using UUID and get related
        client information
    4 - Bind firmware client id to the ISHTP client instance
    5 - Set the state the ISHTP client instance to CONNECTING
    6 - Send connect request to firmware
    7 - Register event callback for messages from the firmware
    
    During deinitizalization state, the flow is:
    9 - Set the state the ISHTP client instance to ISHTP_CL_DISCONNECTING
    10 - Issue disconnect request to firmware
    11 - Unlike the client instance
    12 - Flush message queue
    13 - Free ISHTP client instance
    
    Step 2-7 are identical to the steps of client driver initialization
    and driver reset flow, but reallocation of the RX/TX ring buffers
    can be avoided in reset flow.
    
    Also for step 9-12, they are identical to the steps of client driver
    failure handling after connect request, driver reset flow and
    driver removing.
    
    So, add two helper functions to simplify client driver code.
    ishtp_cl_establish_connection()
    ishtp_cl_destroy_connection()
    
    No functional changes are expected.
    Signed-off-by: default avatarEven Xu <even.xu@intel.com>
    Acked-by: default avatarSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.com>
    a3a44d2d
client.c 32.8 KB