mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 08:13:54 -06:00
hw/ufs: minor bug fixes related to ufs-test
Minor bugs and errors related to ufs-test are resolved. Some permissions and code implementations that are not synchronized with the ufs spec are edited. Signed-off-by: Yoochan Jeong <yc01.jeong@samsung.com> Reviewed-by: Jeuk Kim <jeuk20.kim@samsung.com> Signed-off-by: Jeuk Kim <jeuk20.kim@samsung.com>
This commit is contained in:
parent
de2cc40782
commit
7c85332a2b
3 changed files with 27 additions and 9 deletions
|
@ -119,6 +119,7 @@ static void ufs_send_nop_out(QUfs *ufs, uint8_t slot,
|
|||
|
||||
static void ufs_send_query(QUfs *ufs, uint8_t slot, uint8_t query_function,
|
||||
uint8_t query_opcode, uint8_t idn, uint8_t index,
|
||||
uint8_t selector, uint32_t attr_value,
|
||||
UtpTransferReqDesc *utrd_out, UtpUpiuRsp *rsp_out)
|
||||
{
|
||||
/* Build up utp transfer request descriptor */
|
||||
|
@ -136,13 +137,16 @@ static void ufs_send_query(QUfs *ufs, uint8_t slot, uint8_t query_function,
|
|||
req_upiu.header.query_func = query_function;
|
||||
req_upiu.header.task_tag = slot;
|
||||
/*
|
||||
* QEMU UFS does not currently support Write descriptor and Write attribute,
|
||||
* QEMU UFS does not currently support Write descriptor,
|
||||
* so the value of data_segment_length is always 0.
|
||||
*/
|
||||
req_upiu.header.data_segment_length = 0;
|
||||
req_upiu.qr.opcode = query_opcode;
|
||||
req_upiu.qr.idn = idn;
|
||||
req_upiu.qr.index = index;
|
||||
req_upiu.qr.selector = selector;
|
||||
req_upiu.qr.value = attr_value;
|
||||
req_upiu.qr.length = UFS_QUERY_DESC_MAX_SIZE;
|
||||
qtest_memwrite(ufs->dev.bus->qts, req_upiu_addr, &req_upiu,
|
||||
sizeof(req_upiu));
|
||||
|
||||
|
@ -344,7 +348,7 @@ static void ufs_init(QUfs *ufs, QGuestAllocator *alloc)
|
|||
/* Set fDeviceInit flag via query request */
|
||||
ufs_send_query(ufs, 0, UFS_UPIU_QUERY_FUNC_STANDARD_WRITE_REQUEST,
|
||||
UFS_UPIU_QUERY_OPCODE_SET_FLAG,
|
||||
UFS_QUERY_FLAG_IDN_FDEVICEINIT, 0, &utrd, &rsp_upiu);
|
||||
UFS_QUERY_FLAG_IDN_FDEVICEINIT, 0, 0, 0, &utrd, &rsp_upiu);
|
||||
g_assert_cmpuint(le32_to_cpu(utrd.header.dword_2), ==, UFS_OCS_SUCCESS);
|
||||
|
||||
/* Wait for device to reset */
|
||||
|
@ -353,7 +357,8 @@ static void ufs_init(QUfs *ufs, QGuestAllocator *alloc)
|
|||
qtest_clock_step(ufs->dev.bus->qts, 100);
|
||||
ufs_send_query(ufs, 0, UFS_UPIU_QUERY_FUNC_STANDARD_READ_REQUEST,
|
||||
UFS_UPIU_QUERY_OPCODE_READ_FLAG,
|
||||
UFS_QUERY_FLAG_IDN_FDEVICEINIT, 0, &utrd, &rsp_upiu);
|
||||
UFS_QUERY_FLAG_IDN_FDEVICEINIT, 0, 0, 0, &utrd,
|
||||
&rsp_upiu);
|
||||
} while (be32_to_cpu(rsp_upiu.qr.value) != 0 &&
|
||||
g_get_monotonic_time() < end_time);
|
||||
g_assert_cmpuint(be32_to_cpu(rsp_upiu.qr.value), ==, 0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue