Files
nuttx/openamp/open-amp.defs
T
Bowen Wang 6b13940797 openamp: add patch for VIRTIO_RPMSG_F_BUFADDR buffer address support
Add open-amp patch 0019 to extend fw_rsc_config with h2r_buf_addr
and r2h_buf_addr fields, allowing the host and remote sides to
specify buffer physical addresses through the resource table.
This enables splitting the shared memory pool into separate regions.

Also update open-amp.defs and open-amp.cmake to apply the new patch
during the open-amp build process.

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2026-03-05 12:39:13 +08:00

111 lines
4.4 KiB
Plaintext

############################################################################
# openamp/open-amp.defs
#
# SPDX-License-Identifier: Apache-2.0
#
# 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.
#
############################################################################
ifeq ($(CONFIG_OPENAMP),y)
ifeq ($(CONFIG_OPENAMP_CACHE),y)
CFLAGS += -DVIRTIO_USE_DCACHE
endif
ifeq ($(CONFIG_OPENAMP_DEBUG),y)
CFLAGS += -DRPMSG_DEBUG -DVQUEUE_DEBUG
endif
CFLAGS += -Delf_load=remoteproc_elf_load
ifeq ($(CONFIG_OPENAMP_VIRTIO_DEVICE_SUPPORT),y)
CFLAGS += -DVIRTIO_DEVICE_SUPPORT=1
else
CFLAGS += -DVIRTIO_DEVICE_SUPPORT=0
endif
ifeq ($(CONFIG_OPENAMP_VIRTIO_DRIVER_SUPPORT),y)
CFLAGS += -DVIRTIO_DRIVER_SUPPORT=1
else
CFLAGS += -DVIRTIO_DRIVER_SUPPORT=0
endif
CFLAGS += -DVQ_RX_EMPTY_NOTIFY=1
CFLAGS += -Iopen-amp/lib/include
# avoid multiple definitions in other file
CFLAGS += -Dsafe_strcpy=openamp_safe_strcpy
CSRCS += open-amp/lib/remoteproc/elf_loader.c
CSRCS += open-amp/lib/remoteproc/remoteproc.c
CSRCS += open-amp/lib/remoteproc/remoteproc_virtio.c
CSRCS += open-amp/lib/remoteproc/rsc_table_parser.c
CSRCS += open-amp/lib/rpmsg/rpmsg.c
CSRCS += open-amp/lib/rpmsg/rpmsg_virtio.c
CSRCS += open-amp/lib/utils/utilities.c
CSRCS += open-amp/lib/virtio/virtio.c
CSRCS += open-amp/lib/virtio/virtqueue.c
# Download and unpack tarball if no git repo found
ifeq ($(wildcard open-amp/.git),)
open-amp.zip:
$(call DOWNLOAD,https://github.com/OpenAMP/open-amp/archive,v$(OPENAMP_VERSION).zip,open-amp.zip)
$(Q) unzip -o open-amp.zip
mv open-amp-$(OPENAMP_VERSION) open-amp
$(Q) patch -p0 < 0001-ns-acknowledge-the-received-creation-message.patch
$(Q) patch -p0 < 0002-Negotiate-individual-buffer-size-dynamically.patch
$(Q) patch -p0 < 0003-rpmsg-notify-the-user-when-the-remote-address-is-rec.patch
$(Q) patch -p0 < 0004-rpmsg-wait-ept-ready-in-rpmsg_send.patch
$(Q) patch -p0 < 0005-openamp-add-VIRTIO_RING_F_MUST_NOTIFY-event.patch
$(Q) patch -p0 < 0006-rpmsg_virtio-don-t-need-check-status-when-get_tx_pay.patch
$(Q) patch -p0 < 0007-virtqueue-move-virtqueue_nused-and-virtqueue_navail-.patch
$(Q) patch -p0 < 0008-lib-rpmsg-rpmsg_virtio-add-last-buffer-check-to-fix-.patch
$(Q) patch -p0 < 0009-virtio-change-feature-to-64-bit-in-all-virtio_dispat.patch
$(Q) patch -p0 < 0010-openamp-add-assert-when-get-tx-buffer-failed.patch
$(Q) patch -p0 < 0011-remoteproc_virtio-add-shm_io-for-remoteproc-virtio-a.patch
$(Q) patch -p0 < 0012-remoteproc-sync-the-virtio-rpmsg-config-with-linux-s.patch
$(Q) patch -p0 < 0013-virtio.h-add-mm_priv-to-struct-virtio_deivce.patch
$(Q) patch -p0 < 0014-lib-rpmsg_virtio-use-virtio_alloc_buf-to-alloc-share.patch
$(Q) patch -p0 < 0015-lib-remoteproc_virtio-optimize-virtqueue_notificatio.patch
$(Q) patch -p0 < 0016-lib-rpmsg_virtio-support-release-the-name-service-me.patch
$(Q) patch -p0 < 0017-lib-virtio-virtqueue-change-the-virtqueue-dump-log-l.patch
$(Q) patch -p0 < 0018-lib-rpmsg-add-priority-support-for-rpmsg-endpoint.patch
$(Q) patch -p0 < 0019-rpmsg-Add-VIRTIO_RPMSG_F_BUFADDR-to-support-specify-.patch
.openamp_headers: open-amp.zip
else
.openamp_headers:
endif
$(eval headers := $(wildcard open-amp/lib/include/openamp/*.h))
$(eval headers += open-amp/lib/remoteproc/rsc_table_parser.h)
$(eval headers += open-amp/lib/rpmsg/rpmsg_internal.h)
$(shell mkdir -p $(TOPDIR)$(DELIM)include$(DELIM)openamp$(DELIM))
$(foreach header,$(headers),$(shell cp -rf $(header) $(TOPDIR)$(DELIM)include$(DELIM)openamp$(DELIM)))
touch $@
context:: .openamp_headers
distclean::
$(call DELDIR, $(TOPDIR)$(DELIM)include$(DELIM)openamp$(DELIM))
ifeq ($(wildcard open-amp/.git),)
$(call DELDIR, open-amp)
$(call DELFILE, open-amp.zip)
endif
$(call DELFILE, .openamp_headers)
endif