1 /* 2 * SPDX-FileCopyrightText: 2020-2022 Espressif Systems (Shanghai) CO LTD 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #pragma once 8 9 #include <stdint.h> 10 11 #include "soc/soc_caps.h" 12 13 #include "xt_instr_macros.h" 14 #include "xtensa/config/specreg.h" 15 #include "xtensa/config/extreg.h" 16 #include "esp_bit_defs.h" 17 #include "esp_attr.h" 18 #include "xtensa/config/core.h" 19 20 #ifdef __cplusplus 21 extern "C" { 22 #endif 23 24 __attribute__((always_inline)) dedic_gpio_cpu_ll_read_in(void)25static inline uint32_t dedic_gpio_cpu_ll_read_in(void) 26 { 27 uint32_t value = 0; 28 asm volatile("ee.get_gpio_in %0" : "=r"(value) : :); 29 return value; 30 } 31 32 __attribute__((always_inline)) dedic_gpio_cpu_ll_read_out(void)33static inline uint32_t dedic_gpio_cpu_ll_read_out(void) 34 { 35 uint32_t value = 0; 36 asm volatile("rur.gpio_out %0" : "=r"(value) : :); 37 return value; 38 } 39 40 __attribute__((always_inline)) dedic_gpio_cpu_ll_write_all(uint32_t value)41static inline void dedic_gpio_cpu_ll_write_all(uint32_t value) 42 { 43 asm volatile("wur.gpio_out %0"::"r"(value):); 44 } 45 46 __attribute__((always_inline)) dedic_gpio_cpu_ll_write_mask(uint32_t mask,uint32_t value)47static inline void dedic_gpio_cpu_ll_write_mask(uint32_t mask, uint32_t value) 48 { 49 asm volatile("ee.wr_mask_gpio_out %0, %1" : : "r"(value), "r"(mask):); 50 } 51 52 #ifdef __cplusplus 53 } 54 #endif 55