/*
 * (C) COPYRIGHT 2020 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
 */
 
 /* Example for mailbox driver dts entries */

/{
       ethosu_mailbox: mhu@6ca00000 {
               compatible = "arm,mini_mhu", "arm,primecell";
               reg = <0x0 0x6ca00000 0x0 0x1000>;
               interrupts = <0 168 4>;
               interrupt-names = "mhu_npu_rx";
               #mbox-cells = <1>;
               clocks = <&soc_refclk100mhz>;
               clock-names = "apb_pclk";
       };

       mailbox_test {
               compatible      = "mailbox-test";
               reg             = <0x0 0x84000000 0x0 0x10000>, <0x0 0x84010000 0x0 0x10000>;
               mboxes          = <&ethosu_mailbox 0>, <&ethosu_mailbox 0>;
               mbox-names      = "tx", "rx";
       };
};
