2 * Copyright (c) 2012, 2013 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include "mtp_usb_driver.h"
20 static const mtp_usb_driver_t *usb_driver;
25 mtp_bool _transport_init_usb_device(void)
27 if (access(MTP_DRIVER_PATH, F_OK) == 0) {
28 usb_driver = &mtp_usb_driver_slp;
29 } else if (access(MTP_EP0_PATH, F_OK) == 0) {
30 usb_driver = &mtp_usb_driver_ffs;
32 ERR("No suport for USB gadgets in kernel");
36 return usb_driver->transport_init_usb_device();
39 void _transport_deinit_usb_device(void)
41 usb_driver->transport_deinit_usb_device();
44 mtp_uint32 _get_tx_pkt_size(void)
46 return usb_driver->get_rx_pkt_size();
49 mtp_uint32 _get_rx_pkt_size(void)
51 return usb_driver->get_rx_pkt_size();
55 * static mtp_int32 _transport_mq_init()
56 * This function create a message queue for MTP,
57 * A created message queue will be used to help data transfer between
58 * MTP module and usb buffer.
59 * @return This function returns TRUE on success or
60 * returns FALSE on failure.
62 mtp_int32 _transport_mq_init(msgq_id_t *rx_mqid, msgq_id_t *tx_mqid)
64 return usb_driver->transport_mq_init(rx_mqid, tx_mqid);
67 void *_transport_thread_usb_write(void *arg)
69 return usb_driver->transport_thread_usb_write(arg);
72 void *_transport_thread_usb_read(void *arg)
74 return usb_driver->transport_thread_usb_read(arg);
77 void *_transport_thread_usb_control(void *arg)
79 return usb_driver->transport_thread_usb_control(arg);
83 * mtp_bool __transport_mq_deinit()
84 * This function destroy a message queue for MTP,
85 * @return This function returns TRUE on success or
86 * returns FALSE on failure.
88 mtp_bool _transport_mq_deinit(msgq_id_t *rx_mqid, msgq_id_t *tx_mqid)
90 return usb_driver->transport_mq_deinit(rx_mqid, tx_mqid);
93 mtp_uint32 _transport_get_usb_packet_len(void)
95 return usb_driver->transport_get_usb_packet_len();
98 mtp_transport_type_t _transport_get_type(void)
100 if (usb_driver == &mtp_usb_driver_slp)
101 return MTP_TRANSPORT_SLP;
103 if (usb_driver == &mtp_usb_driver_ffs)
104 return MTP_TRANSPORT_FFS;
106 return MTP_TRANSPORT_UNKNOWN;