enum pm_clock clock;
enum pm_node_id node;
} pm_clock_node_map[] = {
- PM_CLOCK2NODE(PM_CLOCK_RPLL, PM_DEV_DP),
- PM_CLOCK2NODE(PM_CLOCK_VPLL, PM_DEV_DP),
- PM_CLOCK2NODE(PM_CLOCK_RPLL_TO_FPD, PM_DEV_DP),
- PM_CLOCK2NODE(PM_CLOCK_VPLL_TO_LPD, PM_DEV_DP),
- PM_CLOCK2NODE(PM_CLOCK_DP_VIDEO_REF, PM_DEV_DP),
- PM_CLOCK2NODE(PM_CLOCK_DP_AUDIO_REF, PM_DEV_DP),
- PM_CLOCK2NODE(PM_CLOCK_DP_STC_REF, PM_DEV_DP),
- PM_CLOCK2NODE(PM_CLOCK_GDMA_REF, PM_DEV_GDMA),
- PM_CLOCK2NODE(PM_CLOCK_DPDMA_REF, PM_DEV_DP),
- PM_CLOCK2NODE(PM_CLOCK_SATA_REF, PM_DEV_SATA),
- PM_CLOCK2NODE(PM_CLOCK_PCIE_REF, PM_DEV_PCIE),
- PM_CLOCK2NODE(PM_CLOCK_GPU_REF, PM_DEV_GPU),
- PM_CLOCK2NODE(PM_CLOCK_GPU_PP0_REF, PM_DEV_GPU),
- PM_CLOCK2NODE(PM_CLOCK_GPU_PP1_REF, PM_DEV_GPU),
- PM_CLOCK2NODE(PM_CLOCK_TOPSW_LSBUS, PM_DEV_DDR),
- PM_CLOCK2NODE(PM_CLOCK_LPD_LSBUS, PM_DEV_TTC_0),
- PM_CLOCK2NODE(PM_CLOCK_LPD_LSBUS, PM_DEV_TTC_1),
- PM_CLOCK2NODE(PM_CLOCK_LPD_LSBUS, PM_DEV_TTC_2),
- PM_CLOCK2NODE(PM_CLOCK_LPD_LSBUS, PM_DEV_TTC_3),
- PM_CLOCK2NODE(PM_CLOCK_USB0_BUS_REF, PM_DEV_USB_0),
- PM_CLOCK2NODE(PM_CLOCK_USB1_BUS_REF, PM_DEV_USB_1),
- PM_CLOCK2NODE(PM_CLOCK_USB3_DUAL_REF, PM_DEV_USB_0),
- PM_CLOCK2NODE(PM_CLOCK_USB3_DUAL_REF, PM_DEV_USB_1),
- PM_CLOCK2NODE(PM_CLOCK_CPU_R5, PM_DEV_RPU),
- PM_CLOCK2NODE(PM_CLOCK_CPU_R5_CORE, PM_DEV_RPU),
- PM_CLOCK2NODE(PM_CLOCK_CSU_PLL, PM_DEV_PCAP),
- PM_CLOCK2NODE(PM_CLOCK_PCAP, PM_DEV_PCAP),
- PM_CLOCK2NODE(PM_CLOCK_GEM_TSU_REF, PM_DEV_ETH_0),
- PM_CLOCK2NODE(PM_CLOCK_GEM_TSU_REF, PM_DEV_ETH_1),
- PM_CLOCK2NODE(PM_CLOCK_GEM_TSU_REF, PM_DEV_ETH_2),
- PM_CLOCK2NODE(PM_CLOCK_GEM_TSU_REF, PM_DEV_ETH_3),
- PM_CLOCK2NODE(PM_CLOCK_GEM_TSU, PM_DEV_ETH_0),
- PM_CLOCK2NODE(PM_CLOCK_GEM_TSU, PM_DEV_ETH_1),
- PM_CLOCK2NODE(PM_CLOCK_GEM_TSU, PM_DEV_ETH_2),
- PM_CLOCK2NODE(PM_CLOCK_GEM_TSU, PM_DEV_ETH_3),
- PM_CLOCK2NODE(PM_CLOCK_GEM0_TX, PM_DEV_ETH_0),
- PM_CLOCK2NODE(PM_CLOCK_GEM1_TX, PM_DEV_ETH_1),
- PM_CLOCK2NODE(PM_CLOCK_GEM2_TX, PM_DEV_ETH_2),
- PM_CLOCK2NODE(PM_CLOCK_GEM3_TX, PM_DEV_ETH_3),
- PM_CLOCK2NODE(PM_CLOCK_GEM0_RX, PM_DEV_ETH_0),
- PM_CLOCK2NODE(PM_CLOCK_GEM1_RX, PM_DEV_ETH_1),
- PM_CLOCK2NODE(PM_CLOCK_GEM2_RX, PM_DEV_ETH_2),
- PM_CLOCK2NODE(PM_CLOCK_GEM3_RX, PM_DEV_ETH_3),
- PM_CLOCK2NODE(PM_CLOCK_QSPI_REF, PM_DEV_QSPI),
- PM_CLOCK2NODE(PM_CLOCK_SDIO0_REF, PM_DEV_SD_0),
- PM_CLOCK2NODE(PM_CLOCK_SDIO1_REF, PM_DEV_SD_1),
- PM_CLOCK2NODE(PM_CLOCK_UART0_REF, PM_DEV_UART_0),
- PM_CLOCK2NODE(PM_CLOCK_UART1_REF, PM_DEV_UART_1),
- PM_CLOCK2NODE(PM_CLOCK_SPI0_REF, PM_DEV_SPI_0),
- PM_CLOCK2NODE(PM_CLOCK_SPI1_REF, PM_DEV_SPI_1),
- PM_CLOCK2NODE(PM_CLOCK_NAND_REF, PM_DEV_NAND),
- PM_CLOCK2NODE(PM_CLOCK_I2C0_REF, PM_DEV_I2C_0),
- PM_CLOCK2NODE(PM_CLOCK_I2C1_REF, PM_DEV_I2C_1),
- PM_CLOCK2NODE(PM_CLOCK_CAN0_REF, PM_DEV_CAN_0),
- PM_CLOCK2NODE(PM_CLOCK_CAN1_REF, PM_DEV_CAN_1),
- PM_CLOCK2NODE(PM_CLOCK_CAN0, PM_DEV_CAN_0),
- PM_CLOCK2NODE(PM_CLOCK_CAN1, PM_DEV_CAN_1),
- PM_CLOCK2NODE(PM_CLOCK_DLL_REF, PM_DEV_SD_0),
- PM_CLOCK2NODE(PM_CLOCK_DLL_REF, PM_DEV_SD_1),
- PM_CLOCK2NODE(PM_CLOCK_ADMA_REF, PM_DEV_ADMA),
- PM_CLOCK2NODE(PM_CLOCK_AMS_REF, PM_DEV_LPD),
- PM_CLOCK2NODE(PM_CLOCK_PL0_REF, PM_DEV_PL),
- PM_CLOCK2NODE(PM_CLOCK_PL1_REF, PM_DEV_PL),
- PM_CLOCK2NODE(PM_CLOCK_PL2_REF, PM_DEV_PL),
- PM_CLOCK2NODE(PM_CLOCK_PL3_REF, PM_DEV_PL),
- PM_CLOCK2NODE(PM_CLOCK_RPLL_INT, PM_DEV_DP),
- PM_CLOCK2NODE(PM_CLOCK_RPLL_PRE_SRC, PM_DEV_DP),
- PM_CLOCK2NODE(PM_CLOCK_RPLL_INT_MUX, PM_DEV_DP),
- PM_CLOCK2NODE(PM_CLOCK_RPLL_POST_SRC, PM_DEV_DP),
- PM_CLOCK2NODE(PM_CLOCK_VPLL_INT, PM_DEV_DP),
- PM_CLOCK2NODE(PM_CLOCK_VPLL_PRE_SRC, PM_DEV_DP),
- PM_CLOCK2NODE(PM_CLOCK_VPLL_INT_MUX, PM_DEV_DP),
- PM_CLOCK2NODE(PM_CLOCK_VPLL_POST_SRC, PM_DEV_DP),
- PM_CLOCK2NODE(PM_CLOCK_CAN0_MIO, PM_DEV_CAN_0),
- PM_CLOCK2NODE(PM_CLOCK_CAN1_MIO, PM_DEV_CAN_1),
- PM_CLOCK2NODE(PM_CLOCK_GEM0_REF, PM_DEV_ETH_0),
- PM_CLOCK2NODE(PM_CLOCK_GEM1_REF, PM_DEV_ETH_1),
- PM_CLOCK2NODE(PM_CLOCK_GEM2_REF, PM_DEV_ETH_2),
- PM_CLOCK2NODE(PM_CLOCK_GEM3_REF, PM_DEV_ETH_3),
- PM_CLOCK2NODE(PM_CLOCK_GEM0_REF_UNGATED, PM_DEV_ETH_0),
- PM_CLOCK2NODE(PM_CLOCK_GEM1_REF_UNGATED, PM_DEV_ETH_1),
- PM_CLOCK2NODE(PM_CLOCK_GEM2_REF_UNGATED, PM_DEV_ETH_2),
- PM_CLOCK2NODE(PM_CLOCK_GEM3_REF_UNGATED, PM_DEV_ETH_3),
+ PM_CLOCK2NODE(PM_CLK_RPLL, PM_DEV_DP),
+ PM_CLOCK2NODE(PM_CLK_VPLL, PM_DEV_DP),
+ PM_CLOCK2NODE(PM_CLK_RPLL_TO_FPD, PM_DEV_DP),
+ PM_CLOCK2NODE(PM_CLK_VPLL_TO_LPD, PM_DEV_DP),
+ PM_CLOCK2NODE(PM_CLK_DP_VIDEO_REF, PM_DEV_DP),
+ PM_CLOCK2NODE(PM_CLK_DP_AUDIO_REF, PM_DEV_DP),
+ PM_CLOCK2NODE(PM_CLK_DP_STC_REF, PM_DEV_DP),
+ PM_CLOCK2NODE(PM_CLK_GDMA_REF, PM_DEV_GDMA),
+ PM_CLOCK2NODE(PM_CLK_DPDMA_REF, PM_DEV_DP),
+ PM_CLOCK2NODE(PM_CLK_SATA_REF, PM_DEV_SATA),
+ PM_CLOCK2NODE(PM_CLK_PCIE_REF, PM_DEV_PCIE),
+ PM_CLOCK2NODE(PM_CLK_GPU_REF, PM_DEV_GPU),
+ PM_CLOCK2NODE(PM_CLK_GPU_PP0_REF, PM_DEV_GPU),
+ PM_CLOCK2NODE(PM_CLK_GPU_PP1_REF, PM_DEV_GPU),
+ PM_CLOCK2NODE(PM_CLK_TOPSW_LSBUS, PM_DEV_DDR),
+ PM_CLOCK2NODE(PM_CLK_LPD_LSBUS, PM_DEV_TTC_0),
+ PM_CLOCK2NODE(PM_CLK_LPD_LSBUS, PM_DEV_TTC_1),
+ PM_CLOCK2NODE(PM_CLK_LPD_LSBUS, PM_DEV_TTC_2),
+ PM_CLOCK2NODE(PM_CLK_LPD_LSBUS, PM_DEV_TTC_3),
+ PM_CLOCK2NODE(PM_CLK_USB0_BUS_REF, PM_DEV_USB_0),
+ PM_CLOCK2NODE(PM_CLK_USB1_BUS_REF, PM_DEV_USB_1),
+ PM_CLOCK2NODE(PM_CLK_USB3_DUAL_REF, PM_DEV_USB_0),
+ PM_CLOCK2NODE(PM_CLK_USB3_DUAL_REF, PM_DEV_USB_1),
+ PM_CLOCK2NODE(PM_CLK_CPU_R5, PM_DEV_RPU),
+ PM_CLOCK2NODE(PM_CLK_CPU_R5_CORE, PM_DEV_RPU),
+ PM_CLOCK2NODE(PM_CLK_CSU_PLL, PM_DEV_PCAP),
+ PM_CLOCK2NODE(PM_CLK_PCAP, PM_DEV_PCAP),
+ PM_CLOCK2NODE(PM_CLK_GEM_TSU_REF, PM_DEV_ETH_0),
+ PM_CLOCK2NODE(PM_CLK_GEM_TSU_REF, PM_DEV_ETH_1),
+ PM_CLOCK2NODE(PM_CLK_GEM_TSU_REF, PM_DEV_ETH_2),
+ PM_CLOCK2NODE(PM_CLK_GEM_TSU_REF, PM_DEV_ETH_3),
+ PM_CLOCK2NODE(PM_CLK_GEM_TSU, PM_DEV_ETH_0),
+ PM_CLOCK2NODE(PM_CLK_GEM_TSU, PM_DEV_ETH_1),
+ PM_CLOCK2NODE(PM_CLK_GEM_TSU, PM_DEV_ETH_2),
+ PM_CLOCK2NODE(PM_CLK_GEM_TSU, PM_DEV_ETH_3),
+ PM_CLOCK2NODE(PM_CLK_GEM0_TX, PM_DEV_ETH_0),
+ PM_CLOCK2NODE(PM_CLK_GEM1_TX, PM_DEV_ETH_1),
+ PM_CLOCK2NODE(PM_CLK_GEM2_TX, PM_DEV_ETH_2),
+ PM_CLOCK2NODE(PM_CLK_GEM3_TX, PM_DEV_ETH_3),
+ PM_CLOCK2NODE(PM_CLK_GEM0_RX, PM_DEV_ETH_0),
+ PM_CLOCK2NODE(PM_CLK_GEM1_RX, PM_DEV_ETH_1),
+ PM_CLOCK2NODE(PM_CLK_GEM2_RX, PM_DEV_ETH_2),
+ PM_CLOCK2NODE(PM_CLK_GEM3_RX, PM_DEV_ETH_3),
+ PM_CLOCK2NODE(PM_CLK_QSPI_REF, PM_DEV_QSPI),
+ PM_CLOCK2NODE(PM_CLK_SDIO0_REF, PM_DEV_SD_0),
+ PM_CLOCK2NODE(PM_CLK_SDIO1_REF, PM_DEV_SD_1),
+ PM_CLOCK2NODE(PM_CLK_UART0_REF, PM_DEV_UART_0),
+ PM_CLOCK2NODE(PM_CLK_UART1_REF, PM_DEV_UART_1),
+ PM_CLOCK2NODE(PM_CLK_SPI0_REF, PM_DEV_SPI_0),
+ PM_CLOCK2NODE(PM_CLK_SPI1_REF, PM_DEV_SPI_1),
+ PM_CLOCK2NODE(PM_CLK_NAND_REF, PM_DEV_NAND),
+ PM_CLOCK2NODE(PM_CLK_I2C0_REF, PM_DEV_I2C_0),
+ PM_CLOCK2NODE(PM_CLK_I2C1_REF, PM_DEV_I2C_1),
+ PM_CLOCK2NODE(PM_CLK_CAN0_REF, PM_DEV_CAN_0),
+ PM_CLOCK2NODE(PM_CLK_CAN1_REF, PM_DEV_CAN_1),
+ PM_CLOCK2NODE(PM_CLK_CAN0, PM_DEV_CAN_0),
+ PM_CLOCK2NODE(PM_CLK_CAN1, PM_DEV_CAN_1),
+ PM_CLOCK2NODE(PM_CLK_DLL_REF, PM_DEV_SD_0),
+ PM_CLOCK2NODE(PM_CLK_DLL_REF, PM_DEV_SD_1),
+ PM_CLOCK2NODE(PM_CLK_ADMA_REF, PM_DEV_ADMA),
+ PM_CLOCK2NODE(PM_CLK_AMS_REF, PM_DEV_LPD),
+ PM_CLOCK2NODE(PM_CLK_PL0_REF, PM_DEV_PL),
+ PM_CLOCK2NODE(PM_CLK_PL1_REF, PM_DEV_PL),
+ PM_CLOCK2NODE(PM_CLK_PL2_REF, PM_DEV_PL),
+ PM_CLOCK2NODE(PM_CLK_PL3_REF, PM_DEV_PL),
+ PM_CLOCK2NODE(PM_CLK_RPLL_INT, PM_DEV_DP),
+ PM_CLOCK2NODE(PM_CLK_RPLL_PRE_SRC, PM_DEV_DP),
+ PM_CLOCK2NODE(PM_CLK_RPLL_INT_MUX, PM_DEV_DP),
+ PM_CLOCK2NODE(PM_CLK_RPLL_POST_SRC, PM_DEV_DP),
+ PM_CLOCK2NODE(PM_CLK_VPLL_INT, PM_DEV_DP),
+ PM_CLOCK2NODE(PM_CLK_VPLL_PRE_SRC, PM_DEV_DP),
+ PM_CLOCK2NODE(PM_CLK_VPLL_INT_MUX, PM_DEV_DP),
+ PM_CLOCK2NODE(PM_CLK_VPLL_POST_SRC, PM_DEV_DP),
+ PM_CLOCK2NODE(PM_CLK_CAN0_MIO, PM_DEV_CAN_0),
+ PM_CLOCK2NODE(PM_CLK_CAN1_MIO, PM_DEV_CAN_1),
+ PM_CLOCK2NODE(PM_CLK_GEM0_REF, PM_DEV_ETH_0),
+ PM_CLOCK2NODE(PM_CLK_GEM1_REF, PM_DEV_ETH_1),
+ PM_CLOCK2NODE(PM_CLK_GEM2_REF, PM_DEV_ETH_2),
+ PM_CLOCK2NODE(PM_CLK_GEM3_REF, PM_DEV_ETH_3),
+ PM_CLOCK2NODE(PM_CLK_GEM0_REF_UNGATED, PM_DEV_ETH_0),
+ PM_CLOCK2NODE(PM_CLK_GEM1_REF_UNGATED, PM_DEV_ETH_1),
+ PM_CLOCK2NODE(PM_CLK_GEM2_REF_UNGATED, PM_DEV_ETH_2),
+ PM_CLOCK2NODE(PM_CLK_GEM3_REF_UNGATED, PM_DEV_ETH_3),
};
static bool pm_check_access(const struct pm_access *acl, struct domain *d, int idx)
/* Check if a clock id is valid */
static bool clock_id_is_valid(enum pm_clock clk_id)
{
- if ( clk_id < 0 || clk_id >= PM_CLOCK_END )
+ if ( clk_id < 0 || clk_id >= PM_CLK_END )
return false;
return true;