bc4e68d362
Universal Flash Storage (UFS) is a high-performance mass storage device with a serial interface. It is primarily used as a high-performance data storage device for embedded applications. This commit contains code for UFS device to be recognized as a UFS PCI device. Patches to handle UFS logical unit and Transfer Request will follow. Signed-off-by: Jeuk Kim <jeuk20.kim@samsung.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-id: 10232660d462ee5cd10cf673f1a9a1205fc8276c.1693980783.git.jeuk20.kim@gmail.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
43 lines
879 B
C
43 lines
879 B
C
/*
|
|
* QEMU UFS
|
|
*
|
|
* Copyright (c) 2023 Samsung Electronics Co., Ltd. All rights reserved.
|
|
*
|
|
* Written by Jeuk Kim <jeuk20.kim@samsung.com>
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
*/
|
|
|
|
#ifndef HW_UFS_UFS_H
|
|
#define HW_UFS_UFS_H
|
|
|
|
#include "hw/pci/pci_device.h"
|
|
#include "hw/scsi/scsi.h"
|
|
#include "block/ufs.h"
|
|
|
|
#define UFS_MAX_LUS 32
|
|
#define UFS_BLOCK_SIZE 4096
|
|
|
|
typedef struct UfsParams {
|
|
char *serial;
|
|
uint8_t nutrs; /* Number of UTP Transfer Request Slots */
|
|
uint8_t nutmrs; /* Number of UTP Task Management Request Slots */
|
|
} UfsParams;
|
|
|
|
typedef struct UfsHc {
|
|
PCIDevice parent_obj;
|
|
MemoryRegion iomem;
|
|
UfsReg reg;
|
|
UfsParams params;
|
|
uint32_t reg_size;
|
|
|
|
qemu_irq irq;
|
|
QEMUBH *doorbell_bh;
|
|
QEMUBH *complete_bh;
|
|
} UfsHc;
|
|
|
|
#define TYPE_UFS "ufs"
|
|
#define UFS(obj) OBJECT_CHECK(UfsHc, (obj), TYPE_UFS)
|
|
|
|
#endif /* HW_UFS_UFS_H */
|