1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * TSA management
4  *
5  * Copyright 2022 CS GROUP France
6  *
7  * Author: Herve Codina <herve.codina@bootlin.com>
8  */
9 #ifndef __SOC_FSL_TSA_H__
10 #define __SOC_FSL_TSA_H__
11 
12 #include <linux/types.h>
13 
14 struct device_node;
15 struct device;
16 struct tsa_serial;
17 
18 struct tsa_serial *tsa_serial_get_byphandle(struct device_node *np,
19 					    const char *phandle_name);
20 void tsa_serial_put(struct tsa_serial *tsa_serial);
21 struct tsa_serial *devm_tsa_serial_get_byphandle(struct device *dev,
22 						 struct device_node *np,
23 						 const char *phandle_name);
24 
25 /* Connect and disconnect the TSA serial */
26 int tsa_serial_connect(struct tsa_serial *tsa_serial);
27 int tsa_serial_disconnect(struct tsa_serial *tsa_serial);
28 
29 /* Cell information */
30 struct tsa_serial_info {
31 	unsigned long rx_fs_rate;
32 	unsigned long rx_bit_rate;
33 	u8 nb_rx_ts;
34 	unsigned long tx_fs_rate;
35 	unsigned long tx_bit_rate;
36 	u8 nb_tx_ts;
37 };
38 
39 /* Get information */
40 int tsa_serial_get_info(struct tsa_serial *tsa_serial, struct tsa_serial_info *info);
41 
42 #endif /* __SOC_FSL_TSA_H__ */
43