Deepa Dinamani | ab9c2b9 | 2013-09-12 11:30:58 -0700 | [diff] [blame] | 1 | /* Copyright (c) 2013, The Linux Foundation. All rights reserved.
|
| 2 | *
|
| 3 | * Redistribution and use in source and binary forms, with or without
|
| 4 | * modification, are permitted provided that the following conditions are
|
| 5 | * met:
|
| 6 | * * Redistributions of source code must retain the above copyright
|
| 7 | * notice, this list of conditions and the following disclaimer.
|
| 8 | * * Redistributions in binary form must reproduce the above
|
| 9 | * copyright notice, this list of conditions and the following
|
| 10 | * disclaimer in the documentation and/or other materials provided
|
| 11 | * with the distribution.
|
| 12 | * * Neither the name of The Linux Foundation nor the names of its
|
| 13 | * contributors may be used to endorse or promote products derived
|
| 14 | * from this software without specific prior written permission.
|
| 15 | *
|
| 16 | * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
| 17 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
| 18 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
| 19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
| 20 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
| 21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
| 22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
| 23 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
| 24 | * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
| 25 | * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
| 26 | * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| 27 | */
|
| 28 |
|
| 29 | #ifndef _UFS_HCI_H
|
| 30 | #define _UFS_HCI_H_
|
| 31 |
|
| 32 | #include <kernel/mutex.h>
|
| 33 | #include <kernel/event.h>
|
| 34 | #include <list.h>
|
| 35 | #include <ufs.h>
|
| 36 |
|
| 37 | #define UFS_HCE_TIMEOUT 100000
|
| 38 |
|
| 39 | struct ufs_req_irq_type
|
| 40 | {
|
| 41 | struct list_node *list;
|
| 42 | uint32_t irq_handled;
|
| 43 | uint32_t door_bell_reg;
|
| 44 | };
|
| 45 |
|
| 46 | int ufs_reg_target_val_timeout_loop(uint32_t reg_addr, uint32_t target_val, uint32_t timeout);
|
| 47 | enum handler_return ufs_irq_handler(void* data);
|
| 48 | void ufs_irq_enable(struct ufs_dev *dev, uint32_t irq);
|
| 49 | int ufs_enable_hci(struct ufs_dev *dev);
|
| 50 | uint64_t ufs_alloc_trans_req_list();
|
| 51 | uint64_t ufs_alloc_task_mgmt_req_list();
|
| 52 |
|
| 53 | #endif
|