1 /*
2  * Copyright (c) 2024, Arm Limited. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 /**
9  * \file    gpio_pl061_drv.c
10  * \brief   Driver for ARM Primecell GPIO Element
11  *          As described in DDI0190
12  *          https://developer.arm.com/documentation/ddi0190/latest/
13  */
14 
15 #include "gpio_pl061_drv.h"
16 
pl061_get_perifid(pl061_regblk_t * pdev)17 uint32_t pl061_get_perifid(pl061_regblk_t * pdev)
18 {
19     return ((pdev->gpioperiphid[0] & UINT8_MAX) << 0u |
20             (pdev->gpioperiphid[1] & UINT8_MAX) << 8u |
21             (pdev->gpioperiphid[2] & UINT8_MAX) << 16u |
22             (pdev->gpioperiphid[3] & UINT8_MAX) << 24u);
23 }
24 
pl061_get_cellid(pl061_regblk_t * pdev)25 uint32_t pl061_get_cellid(pl061_regblk_t * pdev)
26 {
27     return ((pdev->gpiocellid[0] & UINT8_MAX) << 0u |
28             (pdev->gpiocellid[1] & UINT8_MAX) << 8u |
29             (pdev->gpiocellid[2] & UINT8_MAX) << 16u |
30             (pdev->gpiocellid[3] & UINT8_MAX) << 24u);
31 }
32