1 /* 2 * Copyright (c) 2023 Gerson Fernando Budke <nandojve@gmail.com 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef ZEPHYR_INCLUDE_DRIVERS_CLOCK_CONTROL_ATMEL_SAM_PMC_H_ 8 #define ZEPHYR_INCLUDE_DRIVERS_CLOCK_CONTROL_ATMEL_SAM_PMC_H_ 9 10 #include <zephyr/drivers/clock_control.h> 11 #include <zephyr/dt-bindings/clock/atmel_sam_pmc.h> 12 13 #define SAM_DT_PMC_CONTROLLER DEVICE_DT_GET(DT_NODELABEL(pmc)) 14 15 struct atmel_sam_pmc_config { 16 uint32_t clock_type; 17 uint32_t peripheral_id; 18 }; 19 20 #define SAM_DT_CLOCK_PMC_CFG(clock_id, node_id) \ 21 { \ 22 .clock_type = DT_CLOCKS_CELL_BY_IDX(node_id, clock_id, clock_type), \ 23 .peripheral_id = DT_CLOCKS_CELL_BY_IDX(node_id, clock_id, peripheral_id)\ 24 } 25 26 #define SAM_DT_INST_CLOCK_PMC_CFG(inst) SAM_DT_CLOCK_PMC_CFG(0, DT_DRV_INST(inst)) 27 28 #define SAM_DT_CLOCKS_PMC_CFG(node_id) \ 29 { \ 30 LISTIFY(DT_NUM_CLOCKS(node_id), \ 31 SAM_DT_CLOCK_PMC_CFG, (,), node_id) \ 32 } 33 34 #define SAM_DT_INST_CLOCKS_PMC_CFG(inst) \ 35 SAM_DT_CLOCKS_PMC_CFG(DT_DRV_INST(inst)) 36 37 #endif /* ZEPHYR_INCLUDE_DRIVERS_CLOCK_CONTROL_ATMEL_SAM_PMC_H_ */ 38