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)17uint32_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)25uint32_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