diff options
Diffstat (limited to 'plat/marvell/common/mss')
-rw-r--r-- | plat/marvell/common/mss/mss_common.mk | 32 | ||||
-rw-r--r-- | plat/marvell/common/mss/mss_ipc_drv.c | 82 | ||||
-rw-r--r-- | plat/marvell/common/mss/mss_ipc_drv.h | 22 | ||||
-rw-r--r-- | plat/marvell/common/mss/mss_mem.h | 37 | ||||
-rw-r--r-- | plat/marvell/common/mss/mss_scp_bl2_format.h | 40 | ||||
-rw-r--r-- | plat/marvell/common/mss/mss_scp_bootloader.c | 64 | ||||
-rw-r--r-- | plat/marvell/common/mss/mss_scp_bootloader.h | 33 |
7 files changed, 85 insertions, 225 deletions
diff --git a/plat/marvell/common/mss/mss_common.mk b/plat/marvell/common/mss/mss_common.mk index 83fe32c0..898b6dcc 100644 --- a/plat/marvell/common/mss/mss_common.mk +++ b/plat/marvell/common/mss/mss_common.mk @@ -1,35 +1,11 @@ # -# *************************************************************************** -# Copyright (C) 2016 Marvell International Ltd. -# *************************************************************************** +# Copyright (C) 2018 Marvell International Ltd. # -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# Neither the name of Marvell nor the names of its contributors may be used -# to endorse or promote products derived from this software without specific -# prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, -# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. +# SPDX-License-Identifier: BSD-3-Clause +# https://spdx.org/licenses # + PLAT_MARVELL := plat/marvell MSS_SOURCE := $(PLAT_MARVELL)/common/mss diff --git a/plat/marvell/common/mss/mss_ipc_drv.c b/plat/marvell/common/mss/mss_ipc_drv.c index 5fde9243..731c315b 100644 --- a/plat/marvell/common/mss/mss_ipc_drv.c +++ b/plat/marvell/common/mss/mss_ipc_drv.c @@ -1,35 +1,8 @@ /* - * *************************************************************************** - * Copyright (C) 2016 Marvell International Ltd. - * *************************************************************************** + * Copyright (C) 2018 Marvell International Ltd. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * Neither the name of Marvell nor the names of its contributors may be used - * to endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - *************************************************************************** + * SPDX-License-Identifier: BSD-3-Clause + * https://spdx.org/licenses */ #include <plat_marvell.h> @@ -46,10 +19,10 @@ unsigned long mv_pm_ipc_msg_base; unsigned int mv_pm_ipc_queue_size; -unsigned int msg_sync = 0; +unsigned int msg_sync; int msg_index = IPC_CH_MSG_IDX; -/******************************************************************************* +/****************************************************************************** * mss_pm_ipc_init * * DESCRIPTION: Initialize PM IPC infrastructure @@ -61,17 +34,19 @@ int mv_pm_ipc_init(unsigned long ipc_control_addr) (struct mss_pm_ipc_ctrl *)ipc_control_addr; /* Initialize PM IPC control block */ - mv_pm_ipc_msg_base = ipc_control->msg_base_address | IPC_MSG_BASE_MASK; + mv_pm_ipc_msg_base = ipc_control->msg_base_address | + IPC_MSG_BASE_MASK; mv_pm_ipc_queue_size = ipc_control->queue_size; return 0; } -/******************************************************************************* -* mv_pm_ipc_queue_addr_get -* -* DESCRIPTION: Returns the IPC queue address -*******************************************************************************/ +/****************************************************************************** + * mv_pm_ipc_queue_addr_get + * + * DESCRIPTION: Returns the IPC queue address + ****************************************************************************** + */ unsigned int mv_pm_ipc_queue_addr_get(void) { unsigned int addr; @@ -81,31 +56,35 @@ unsigned int mv_pm_ipc_queue_addr_get(void) if (msg_index >= IPC_CH_NUM_OF_MSG) msg_index = 0; - addr = (unsigned int)(mv_pm_ipc_msg_base + (msg_index * mv_pm_ipc_queue_size)); + addr = (unsigned int)(mv_pm_ipc_msg_base + + (msg_index * mv_pm_ipc_queue_size)); flush_dcache_range((uint64_t)&msg_index, sizeof(msg_index)); return addr; } -/******************************************************************************* -* mv_pm_ipc_msg_rx -* -* DESCRIPTION: Retrieve message from IPC channel -*******************************************************************************/ +/****************************************************************************** + * mv_pm_ipc_msg_rx + * + * DESCRIPTION: Retrieve message from IPC channel + ****************************************************************************** + */ int mv_pm_ipc_msg_rx(unsigned int channel_id, struct mss_pm_ipc_msg *msg) { unsigned int addr = mv_pm_ipc_queue_addr_get(); + msg->msg_reply = mmio_read_32(addr + IPC_MSG_REPLY_LOC); return 0; } -/******************************************************************************* -* mv_pm_ipc_msg_tx -* -* DESCRIPTION: Send message via IPC channel -*******************************************************************************/ +/****************************************************************************** + * mv_pm_ipc_msg_tx + * + * DESCRIPTION: Send message via IPC channel + ****************************************************************************** + */ int mv_pm_ipc_msg_tx(unsigned int channel_id, unsigned int msg_id, unsigned int cluster_power_state) { @@ -120,11 +99,12 @@ int mv_pm_ipc_msg_tx(unsigned int channel_id, unsigned int msg_id, mmio_write_32(addr + IPC_MSG_SYNC_ID_LOC, msg_sync); mmio_write_32(addr + IPC_MSG_ID_LOC, msg_id); mmio_write_32(addr + IPC_MSG_CPU_ID_LOC, channel_id); - mmio_write_32(addr + IPC_MSG_POWER_STATE_LOC, cluster_power_state); + mmio_write_32(addr + IPC_MSG_POWER_STATE_LOC, + cluster_power_state); mmio_write_32(addr + IPC_MSG_STATE_LOC, IPC_MSG_OCCUPY); } else { - printf("mv_pm_ipc_msg_tx failed!!!\n"); + ERROR("%s: FAILED\n", __func__); } return 0; diff --git a/plat/marvell/common/mss/mss_ipc_drv.h b/plat/marvell/common/mss/mss_ipc_drv.h index ff8508ac..28eb907e 100644 --- a/plat/marvell/common/mss/mss_ipc_drv.h +++ b/plat/marvell/common/mss/mss_ipc_drv.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2016 - 2018 Marvell International Ltd. + * Copyright (C) 2018 Marvell International Ltd. * * SPDX-License-Identifier: BSD-3-Clause * https://spdx.org/licenses @@ -101,19 +101,19 @@ struct mss_pm_ipc_ch { int mv_pm_ipc_init(unsigned long ipc_control_addr); /***************************************************************************** -* mv_pm_ipc_msg_rx -* -* DESCRIPTION: Retrieve message from IPC channel -****************************************************************************** -*/ + * mv_pm_ipc_msg_rx + * + * DESCRIPTION: Retrieve message from IPC channel + ***************************************************************************** + */ int mv_pm_ipc_msg_rx(unsigned int channel_id, struct mss_pm_ipc_msg *msg); /***************************************************************************** -* mv_pm_ipc_msg_tx -* -* DESCRIPTION: Send message via IPC channel -****************************************************************************** -*/ + * mv_pm_ipc_msg_tx + * + * DESCRIPTION: Send message via IPC channel + ***************************************************************************** + */ int mv_pm_ipc_msg_tx(unsigned int channel_id, unsigned int msg_id, unsigned int cluster_power_state); diff --git a/plat/marvell/common/mss/mss_mem.h b/plat/marvell/common/mss/mss_mem.h index bed5584c..efff59e6 100644 --- a/plat/marvell/common/mss/mss_mem.h +++ b/plat/marvell/common/mss/mss_mem.h @@ -1,35 +1,8 @@ /* - * *************************************************************************** - * Copyright (C) 2016 Marvell International Ltd. - * *************************************************************************** + * Copyright (C) 2018 Marvell International Ltd. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * Neither the name of Marvell nor the names of its contributors may be used - * to endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - *************************************************************************** + * SPDX-License-Identifier: BSD-3-Clause + * https://spdx.org/licenses */ #ifndef __MSS_PM_MEM_H @@ -41,8 +14,8 @@ enum mss_pm_ctrl_handshake { MSS_UN_INITIALIZED = 0, MSS_COMPATIBILITY_ERROR = 1, - MSS_ACKNOWLEDGEMENT = 2, - HOST_ACKNOWLEDGEMENT = 3 + MSS_ACKNOWLEDGMENT = 2, + HOST_ACKNOWLEDGMENT = 3 }; enum mss_pm_ctrl_rtos_env { diff --git a/plat/marvell/common/mss/mss_scp_bl2_format.h b/plat/marvell/common/mss/mss_scp_bl2_format.h index 4db3a336..c04df727 100644 --- a/plat/marvell/common/mss/mss_scp_bl2_format.h +++ b/plat/marvell/common/mss/mss_scp_bl2_format.h @@ -1,35 +1,8 @@ /* - * *************************************************************************** - * Copyright (C) 2017 Marvell International Ltd. - * *************************************************************************** + * Copyright (C) 2018 Marvell International Ltd. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * Neither the name of Marvell nor the names of its contributors may be used - * to endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - *************************************************************************** + * SPDX-License-Identifier: BSD-3-Clause + * https://spdx.org/licenses */ #ifndef __MSS_SCP_BL2_FORMAT_H @@ -44,7 +17,8 @@ /* Types definitions */ typedef struct file_header { - uint32_t magic; /* Magic specific for concatenated file (used for validation) */ + /* Magic specific for concatenated file (used for validation) */ + uint32_t magic; uint32_t nr_of_imgs; /* Number of images concatenated */ } file_header_t; @@ -62,7 +36,9 @@ enum cm3_t { typedef struct img_header { uint32_t type; /* CM3 type, can be one of cm3_t */ uint32_t length; /* Image length */ - uint32_t version; /* For sanity checks and future extended functionality */ + uint32_t version; /* For sanity checks and future + * extended functionality + */ } img_header_t; #endif /* __MSS_SCP_BL2_FORMAT_H */ diff --git a/plat/marvell/common/mss/mss_scp_bootloader.c b/plat/marvell/common/mss/mss_scp_bootloader.c index b395a393..ff8f26c8 100644 --- a/plat/marvell/common/mss/mss_scp_bootloader.c +++ b/plat/marvell/common/mss/mss_scp_bootloader.c @@ -1,35 +1,8 @@ /* - * *************************************************************************** - * Copyright (C) 2016 Marvell International Ltd. - * *************************************************************************** + * Copyright (C) 2018 Marvell International Ltd. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * Neither the name of Marvell nor the names of its contributors may be used - * to endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - *************************************************************************** + * SPDX-License-Identifier: BSD-3-Clause + * https://spdx.org/licenses */ #include <assert.h> @@ -76,14 +49,14 @@ static int mss_check_image_ready(volatile struct mss_pm_ctrl_block *mss_pm_crtl) int timeout = MSS_HANDSHAKE_TIMEOUT; /* Wait for SCP to signal it's ready */ - while ((mss_pm_crtl->handshake != MSS_ACKNOWLEDGEMENT) && + while ((mss_pm_crtl->handshake != MSS_ACKNOWLEDGMENT) && (timeout-- > 0)) mdelay(1); - if (mss_pm_crtl->handshake != MSS_ACKNOWLEDGEMENT) + if (mss_pm_crtl->handshake != MSS_ACKNOWLEDGMENT) return -1; - mss_pm_crtl->handshake = HOST_ACKNOWLEDGEMENT; + mss_pm_crtl->handshake = HOST_ACKNOWLEDGMENT; return 0; } @@ -98,7 +71,7 @@ static int mss_image_load(uint32_t src_addr, uint32_t size, uintptr_t mss_regs) return 1; } - NOTICE("Loading MSS image from address 0x%x Size 0x%x to MSS at 0x%lx\n", + NOTICE("Loading MSS image from addr. 0x%x Size 0x%x to MSS at 0x%lx\n", src_addr, size, mss_regs); /* load image to MSS RAM using DMA */ loop_num = (size / DMA_SIZE) + (((size & (DMA_SIZE - 1)) == 0) ? 0 : 1); @@ -153,7 +126,8 @@ static int mss_image_load(uint32_t src_addr, uint32_t size, uintptr_t mss_regs) * firmware for AP is dedicated for PM and therefore some additional PM * initialization is required */ -static int mss_ap_load_image(uintptr_t single_img, uint32_t image_size, uint32_t ap_idx) +static int mss_ap_load_image(uintptr_t single_img, + uint32_t image_size, uint32_t ap_idx) { volatile struct mss_pm_ctrl_block *mss_pm_crtl; int ret; @@ -188,7 +162,8 @@ static int mss_ap_load_image(uintptr_t single_img, uint32_t image_size, uint32_t /* TODO: add checksum to image */ VERBOSE("Send info about the SCP_BL2 image to be transferred to SCP\n"); - ret = mss_image_load(single_img, image_size, bl2_plat_get_ap_mss_regs(ap_idx)); + ret = mss_image_load(single_img, image_size, + bl2_plat_get_ap_mss_regs(ap_idx)); if (ret != 0) { ERROR("SCP Image load failed\n"); return -1; @@ -203,7 +178,8 @@ static int mss_ap_load_image(uintptr_t single_img, uint32_t image_size, uint32_t } /* Load CM3 image (single_img) to CM3 pointed by cm3_type */ -static int load_img_to_cm3(enum cm3_t cm3_type, uintptr_t single_img, uint32_t image_size) +static int load_img_to_cm3(enum cm3_t cm3_type, + uintptr_t single_img, uint32_t image_size) { int ret, ap_idx, cp_index; uint32_t ap_count = bl2_plat_get_ap_count(); @@ -230,14 +206,20 @@ static int load_img_to_cm3(enum cm3_t cm3_type, uintptr_t single_img, uint32_t i */ cp_index = cm3_type - 1; for (ap_idx = 0; ap_idx < ap_count; ap_idx++) { - /* Check if we should load this image according to number of CPs */ + /* Check if we should load this image + * according to number of CPs + */ if (bl2_plat_get_cp_count(ap_idx) <= cp_index) { - NOTICE("Skipping MSS CP%d related image\n", cp_index); + NOTICE("Skipping MSS CP%d related image\n", + cp_index); break; } - NOTICE("Load image to CP%d MSS AP%d\n", cp_index, ap_idx); - ret = mss_image_load(single_img, image_size, bl2_plat_get_cp_mss_regs(ap_idx, cp_index)); + NOTICE("Load image to CP%d MSS AP%d\n", + cp_index, ap_idx); + ret = mss_image_load(single_img, image_size, + bl2_plat_get_cp_mss_regs( + ap_idx, cp_index)); if (ret != 0) { ERROR("SCP Image load failed\n"); return -1; diff --git a/plat/marvell/common/mss/mss_scp_bootloader.h b/plat/marvell/common/mss/mss_scp_bootloader.h index 762bb020..67c387a0 100644 --- a/plat/marvell/common/mss/mss_scp_bootloader.h +++ b/plat/marvell/common/mss/mss_scp_bootloader.h @@ -1,35 +1,8 @@ /* - * *************************************************************************** - * Copyright (C) 2016 Marvell International Ltd. - * *************************************************************************** + * Copyright (C) 2018 Marvell International Ltd. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * Neither the name of Marvell nor the names of its contributors may be used - * to endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - *************************************************************************** + * SPDX-License-Identifier: BSD-3-Clause + * https://spdx.org/licenses */ #ifndef __MSS_SCP_BOOTLOADER_H__ |