1 /* 2 * Copyright (c) 2024 Renesas Electronics Corporation 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_RENESAS_RZG_CLOCK_H_ 8 #define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_RENESAS_RZG_CLOCK_H_ 9 10 /** RZ clock configuration values */ 11 #define RZ_IP_MASK 0xFF000000UL 12 #define RZ_IP_SHIFT 24UL 13 #define RZ_IP_CH_MASK 0xFF0000UL 14 #define RZ_IP_CH_SHIFT 16UL 15 #define RZ_CLOCK_MASK 0xFF00UL 16 #define RZ_CLOCK_SHIFT 8UL 17 #define RZ_CLOCK_DIV_MASK 0xFFUL 18 #define RZ_CLOCK_DIV_SHIFT 0UL 19 20 #define RZ_IP_GTM 0UL /* General Timer */ 21 #define RZ_IP_GPT 1UL /* General PWM Timer */ 22 #define RZ_IP_SCIF 2UL /* Serial Communications Interface with FIFO */ 23 #define RZ_IP_RIIC 3UL /* I2C Bus Interface */ 24 #define RZ_IP_RSPI 4UL /* Renesas Serial Peripheral Interface */ 25 #define RZ_IP_MHU 5UL /* Message Handling Unit */ 26 #define RZ_IP_DMAC 6UL /* Direct Memory Access Controller */ 27 #define RZ_IP_CANFD 7UL /* CANFD Interface (RS-CANFD) */ 28 #define RZ_IP_ADC 8UL /* A/D Converter */ 29 30 #define RZ_CLOCK_ICLK 0UL /* Cortex-A55 Clock */ 31 #define RZ_CLOCK_I2CLK 1UL /* Cortex-M33 Clock */ 32 #define RZ_CLOCK_I3CLK 2UL /* Cortex-M33 FPU Clock */ 33 #define RZ_CLOCK_S0CLK 3UL /* DDR-PHY Clock */ 34 #define RZ_CLOCK_OC0CLK 4UL /* OCTA0 Clock */ 35 #define RZ_CLOCK_OC1CLK 5UL /* OCTA1 Clock */ 36 #define RZ_CLOCK_SPI0CLK 6UL /* SPI0 Clock */ 37 #define RZ_CLOCK_SPI1CLK 7UL /* SPI1 Clock */ 38 #define RZ_CLOCK_SD0CLK 8UL /* SDH0 Clock */ 39 #define RZ_CLOCK_SD1CLK 9UL /* SDH1 Clock */ 40 #define RZ_CLOCK_SD2CLK 10UL /* SDH2 Clock */ 41 #define RZ_CLOCK_M0CLK 11UL /* VCP LCDC Clock */ 42 #define RZ_CLOCK_HPCLK 12UL /* Ethernet Clock */ 43 #define RZ_CLOCK_TSUCLK 13UL /* TSU Clock */ 44 #define RZ_CLOCK_ZTCLK 14UL /* JAUTH Clock */ 45 #define RZ_CLOCK_P0CLK 15UL /* APB-BUS Clock */ 46 #define RZ_CLOCK_P1CLK 16UL /* AXI-BUS Clock */ 47 #define RZ_CLOCK_P2CLK 17UL /* P2CLK */ 48 #define RZ_CLOCK_P3CLK 18UL /* P3CLK */ 49 #define RZ_CLOCK_P4CLK 19UL /* P4CLK */ 50 #define RZ_CLOCK_P5CLK 20UL /* P5CLK */ 51 #define RZ_CLOCK_ATCLK 21UL /* ATCLK */ 52 #define RZ_CLOCK_OSCCLK 22UL /* OSC Clock */ 53 #define RZ_CLOCK_OSCCLK2 23UL /* OSC2 Clock */ 54 55 #define RZ_CLOCK(IP, ch, clk, div) \ 56 ((RZ_IP_##IP << RZ_IP_SHIFT) | ((ch) << RZ_IP_CH_SHIFT) | ((clk) << RZ_CLOCK_SHIFT) | \ 57 ((div) << RZ_CLOCK_DIV_SHIFT)) 58 59 /** 60 * Pack clock configurations in a 32-bit value 61 * as expected for the Device Tree `clocks` property on Renesas RZ/G. 62 * 63 * @param ch Peripheral channel/unit 64 */ 65 66 /* SCIF */ 67 #define RZ_CLOCK_SCIF(ch) RZ_CLOCK(SCIF, ch, RZ_CLOCK_P0CLK, 1) 68 69 /* GPT */ 70 #define RZ_CLOCK_GPT(ch) RZ_CLOCK(GPT, ch, RZ_CLOCK_P0CLK, 1) 71 72 /* MHU */ 73 #define RZ_CLOCK_MHU(ch) RZ_CLOCK(MHU, ch, RZ_CLOCK_P1CLK, 2) 74 75 /* ADC */ 76 #define RZ_CLOCK_ADC(ch) RZ_CLOCK(ADC, ch, RZ_CLOCK_TSUCLK, 1) 77 78 /* RIIC */ 79 #define RZ_CLOCK_RIIC(ch) RZ_CLOCK(RIIC, ch, RZ_CLOCK_P0CLK, 1) 80 81 /* GTM */ 82 #define RZ_CLOCK_GTM(ch) RZ_CLOCK(GTM, ch, RZ_CLOCK_P0CLK, 1) 83 84 /* CAN */ 85 #define RZ_CLOCK_CANFD(ch) RZ_CLOCK(CANFD, ch, RZ_CLOCK_P4CLK, 2) 86 87 /* RSPI */ 88 #define RZ_CLOCK_RSPI(ch) RZ_CLOCK(RSPI, ch, RZ_CLOCK_P0CLK, 1) 89 90 /* DMAC */ 91 #define RZ_CLOCK_DMAC(ch) RZ_CLOCK(DMAC, ch, RZ_CLOCK_P3CLK, 1) 92 93 #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_RENESAS_RZG_CLOCK_H_ */ 94