Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only
0002  *
0003  * Copyright (C) 2020-21 Intel Corporation.
0004  */
0005 
0006 #ifndef IOSM_IPC_PORT_H
0007 #define IOSM_IPC_PORT_H
0008 
0009 #include <linux/wwan.h>
0010 
0011 #include "iosm_ipc_imem_ops.h"
0012 
0013 /**
0014  * struct iosm_cdev - State of the char driver layer.
0015  * @iosm_port:      Pointer of type wwan_port
0016  * @ipc_imem:       imem instance
0017  * @dev:        Pointer to device struct
0018  * @pcie:       PCIe component
0019  * @port_type:      WWAN port type
0020  * @channel:        Channel instance
0021  * @chl_id:     Channel Indentifier
0022  */
0023 struct iosm_cdev {
0024     struct wwan_port *iosm_port;
0025     struct iosm_imem *ipc_imem;
0026     struct device *dev;
0027     struct iosm_pcie *pcie;
0028     enum wwan_port_type port_type;
0029     struct ipc_mem_channel *channel;
0030     enum ipc_channel_id chl_id;
0031 };
0032 
0033 /**
0034  * ipc_port_init - Allocate IPC port & register to wwan subsystem for AT/MBIM
0035  *         communication.
0036  * @ipc_imem:       Pointer to iosm_imem structure
0037  * @ipc_port_cfg:   IPC Port Config
0038  *
0039  * Returns: 0 on success & NULL on failure
0040  */
0041 struct iosm_cdev *ipc_port_init(struct iosm_imem *ipc_imem,
0042                 struct ipc_chnl_cfg ipc_port_cfg);
0043 
0044 /**
0045  * ipc_port_deinit - Free IPC port & unregister port with wwan subsystem.
0046  * @ipc_port:   Array of pointer to the ipc port data-struct
0047  */
0048 void ipc_port_deinit(struct iosm_cdev *ipc_port[]);
0049 
0050 #endif