drivers: virtio: Add virtio-mmio-blk

Summary:
- This commit adds virtio-mmio-blk driver

Impact:
- None

Testing:
- Tested with rv-virt:netnsh which will be updated later

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
This commit is contained in:
Masayuki Ishikawa
2023-05-12 11:21:24 +09:00
committed by Xiang Xiao
parent 1d6a61c034
commit 498a75a58b
5 changed files with 617 additions and 0 deletions
+12
View File
@@ -38,5 +38,17 @@ config DRIVERS_VIRTIO_NET_QUEUE_LEN
default 16
endif
menuconfig DRIVERS_VIRTIO_BLK
bool "Virtio block support"
default n
depends on DRIVERS_VIRTIO_MMIO_NUM > 0
endif
if DRIVERS_VIRTIO_BLK
config DRIVERS_VIRTIO_BLK_QUEUE_LEN
int "Queue length"
default 16
endif
+4
View File
@@ -28,6 +28,10 @@ ifeq ($(CONFIG_DRIVERS_VIRTIO_NET),y)
CSRCS += virtio-mmio-net.c
endif
ifeq ($(CONFIG_DRIVERS_VIRTIO_BLK),y)
CSRCS += virtio-mmio-blk.c
endif
# Include build support
DEPPATH += --dep-path virtio
File diff suppressed because it is too large Load Diff
+68
View File
@@ -0,0 +1,68 @@
/****************************************************************************
* drivers/virtio/virtio-mmio-blk.h
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
#ifndef __DRIVERS_VIRTIO_VIRTIO_MMIO_BLK_H
#define __DRIVERS_VIRTIO_VIRTIO_MMIO_BLK_H
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#ifdef CONFIG_DRIVERS_VIRTIO_BLK
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/****************************************************************************
* Public Data
****************************************************************************/
#ifdef __cplusplus
#define EXTERN extern "C"
extern "C"
{
#else
#define EXTERN extern
#endif
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
/****************************************************************************
* Name: virtio_mmio_blk_init
*
* Description:
* Called from virtio-mmio.c to initialize virtblk
*
****************************************************************************/
int virtio_mmio_blk_init(FAR struct virtio_mmio_regs *regs, uint32_t intid);
#undef EXTERN
#ifdef __cplusplus
}
#endif
#endif /* CONFIG_DRIVERS_VIRTIO_BLK */
#endif /* __DRIVERS_VIRTIO_VIRTIO_MMIO_BLK_H */
+9
View File
@@ -36,6 +36,10 @@
# include "virtio-mmio-net.h"
#endif
#ifdef CONFIG_DRIVERS_VIRTIO_BLK
# include "virtio-mmio-blk.h"
#endif
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
@@ -145,6 +149,11 @@ static int virtio_dev_init(uintptr_t virt, uint32_t irq)
case VIRTIO_DEV_NET:
ret = virtio_mmio_net_init(regs, irq);
break;
#endif
#ifdef CONFIG_DRIVERS_VIRTIO_BLK
case VIRTIO_DEV_BLK:
ret = virtio_mmio_blk_init(regs, irq);
break;
#endif
default:
vrtwarn("unsupported device_id 0x%" PRIx32 "\n", val);