2012-09-27 18:26:09 +04:00
/*
Copyright ( c ) 2011 , 2012 Intel Corp .
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License version 2 and
only version 2 as published by the Free Software Foundation .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
*/
# ifndef __AMP_H
# define __AMP_H
2012-09-27 18:26:12 +04:00
struct amp_ctrl {
struct list_head list ;
struct kref kref ;
__u8 id ;
__u16 assoc_len_so_far ;
__u16 assoc_rem_len ;
__u16 assoc_len ;
__u8 * assoc ;
} ;
int amp_ctrl_put ( struct amp_ctrl * ctrl ) ;
2012-09-27 18:26:24 +04:00
void amp_ctrl_get ( struct amp_ctrl * ctrl ) ;
2012-10-05 17:56:55 +04:00
struct amp_ctrl * amp_ctrl_add ( struct amp_mgr * mgr , u8 id ) ;
2012-09-27 18:26:12 +04:00
struct amp_ctrl * amp_ctrl_lookup ( struct amp_mgr * mgr , u8 id ) ;
void amp_ctrl_list_flush ( struct amp_mgr * mgr ) ;
2012-09-27 18:26:11 +04:00
struct hci_conn * phylink_add ( struct hci_dev * hdev , struct amp_mgr * mgr ,
2012-10-05 17:56:56 +04:00
u8 remote_id , bool out ) ;
2012-09-27 18:26:11 +04:00
2012-09-27 18:26:18 +04:00
int phylink_gen_key ( struct hci_conn * hcon , u8 * data , u8 * len , u8 * type ) ;
2012-09-27 18:26:09 +04:00
void amp_read_loc_info ( struct hci_dev * hdev , struct amp_mgr * mgr ) ;
void amp_read_loc_assoc_frag ( struct hci_dev * hdev , u8 phy_handle ) ;
void amp_read_loc_assoc ( struct hci_dev * hdev , struct amp_mgr * mgr ) ;
2012-09-27 18:26:22 +04:00
void amp_read_loc_assoc_final_data ( struct hci_dev * hdev ,
struct hci_conn * hcon ) ;
2012-09-27 18:26:19 +04:00
void amp_create_phylink ( struct hci_dev * hdev , struct amp_mgr * mgr ,
struct hci_conn * hcon ) ;
2012-09-27 18:26:23 +04:00
void amp_accept_phylink ( struct hci_dev * hdev , struct amp_mgr * mgr ,
struct hci_conn * hcon ) ;
2015-07-24 12:12:55 +03:00
# if IS_ENABLED(CONFIG_BT_HS)
void amp_create_logical_link ( struct l2cap_chan * chan ) ;
void amp_disconnect_logical_link ( struct hci_chan * hchan ) ;
# else
static inline void amp_create_logical_link ( struct l2cap_chan * chan )
{
}
static inline void amp_disconnect_logical_link ( struct hci_chan * hchan )
{
}
# endif
2012-09-27 18:26:20 +04:00
void amp_write_remote_assoc ( struct hci_dev * hdev , u8 handle ) ;
void amp_write_rem_assoc_continue ( struct hci_dev * hdev , u8 handle ) ;
2012-10-31 17:46:36 +04:00
void amp_physical_cfm ( struct hci_conn * bredr_hcon , struct hci_conn * hs_hcon ) ;
2012-10-31 17:46:30 +04:00
void amp_create_logical_link ( struct l2cap_chan * chan ) ;
2012-10-31 17:46:34 +04:00
void amp_disconnect_logical_link ( struct hci_chan * hchan ) ;
2012-10-31 17:46:31 +04:00
void amp_destroy_logical_link ( struct hci_chan * hchan , u8 reason ) ;
2012-09-27 18:26:09 +04:00
# endif /* __AMP_H */