diff options
author | Yulia Garbovich <yulia.garbovich@arm.com> | 2021-11-23 20:00:04 +0200 |
---|---|---|
committer | Yulia Garbovich <yulia.garbovich@arm.com> | 2021-12-14 11:43:57 +0200 |
commit | e9cdc6374dc730dc61d2a8a81beabe563ad7fe88 (patch) | |
tree | e56813c3fb447cf0bb9200157f802971d6f40be8 /drivers/mhu_juno/include/mhu_juno.hpp | |
parent | 29467e04fbc15f53001c0c95227db34160b776e7 (diff) | |
download | ethos-u-core-platform-e9cdc6374dc730dc61d2a8a81beabe563ad7fe88.tar.gz |
Add mpu driver and remove interface library
from drivers
Add mpu driver for upstreaming
After removing of interface library,targets and applications
will list explicitly which libraries to link
Change-Id: Icfa449a2981093161f283e45b4d52ca6199371b8
Diffstat (limited to 'drivers/mhu_juno/include/mhu_juno.hpp')
-rw-r--r-- | drivers/mhu_juno/include/mhu_juno.hpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/drivers/mhu_juno/include/mhu_juno.hpp b/drivers/mhu_juno/include/mhu_juno.hpp new file mode 100644 index 0000000..6b36512 --- /dev/null +++ b/drivers/mhu_juno/include/mhu_juno.hpp @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2020-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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 + * + * 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 MHU_JUNO_HPP +#define MHU_JUNO_HPP + +#include <mailbox.hpp> + +#include <cstddef> +#include <cstdint> + +namespace Mailbox { + +// Doorbell implementation only +class MHUJuno : public Mailbox { +public: + MHUJuno(const uint32_t baseAddress); + virtual ~MHUJuno(); + virtual bool sendMessage() final; + virtual void handleMessage() final; + virtual bool verifyHardware() final; + +private: + /* Offsets */ + static constexpr uint32_t CPU0_INTR_STAT = 0x00; + static constexpr uint32_t CPU0_INTR_SET = 0x04; + static constexpr uint32_t CPU0_INTR_CLR = 0x08; + static constexpr uint32_t CPU1_INTR_STAT = 0x10; + static constexpr uint32_t CPU1_INTR_SET = 0x14; + static constexpr uint32_t CPU1_INTR_CLR = 0x18; + static constexpr uint32_t OFFSET = 0x10; + static constexpr uint32_t PIDR0 = 0xfe0; + static constexpr uint32_t PIDR1 = 0xfe4; + static constexpr uint32_t PIDR2 = 0xfe8; + static constexpr uint32_t PIDR3 = 0xfec; + static constexpr uint32_t PIDR4 = 0xfd0; + static constexpr uint32_t CIDR0 = 0xff0; + static constexpr uint32_t CIDR1 = 0xff4; + static constexpr uint32_t CIDR2 = 0xff8; + static constexpr uint32_t CIDR3 = 0xffc; + + volatile uint32_t *baseAddr; + + void clearMessage(); + void write(uint32_t offset, uint32_t val); + uint32_t read(uint32_t offset); +}; + +} // namespace Mailbox + +#endif /* #ifndef MHU_JUNO_HPP */ |