#
# Copyright (c) 2020-2022 Arm Limited. All rights reserved.
#
# This program is free software and is provided to you under the terms of the
# GNU General Public License version 2 as published by the Free Software
# Foundation, and any use by you of this program is subject to the terms
# of such GNU licence.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, you can access it online at
# http://www.gnu.org/licenses/gpl-2.0.html.
#
# SPDX-License-Identifier: GPL-2.0-only
#

config ARM_JUNO_FPGA_RESET
	tristate "Arm Juno FPGA Reset"
	depends on RESET_CONTROLLER
        help
          Say Y here if you want to build the Arm Juno FPGA reset controller
          reference module for controlling the reset of Juno FPGA.

config ARM_ETHOSU_RPROC
	tristate "Arm Ethos-U remoteproc"
	depends on REMOTEPROC
        help
          Say Y here if you want to build the Arm Ethos-U remoteproc
          reference module for controlling the Cortex-M CPU on the Ethos-U
          subsystem.

config ARM_CORSTONE1000_ES_RESET
	tristate "Arm Corstone1000 External System reset"
	depends on REMOTEPROC
        help
          Say Y here if you want to build the reset driver for the external
          systems on Corstone1000.
