/* * Copyright 2012-2016 Freescale Semiconductor, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef __ASM_ARCH_MXC_BUSFREQ_H__ #define __ASM_ARCH_MXC_BUSFREQ_H__ #include #include /* * This enumerates busfreq low power mode entry and exit. */ enum busfreq_event { LOW_BUSFREQ_ENTER, LOW_BUSFREQ_EXIT, }; /* * This enumerates the system bus and ddr frequencies in various modes. * BUS_FREQ_HIGH - DDR @ 528MHz, AHB @ 132MHz. * BUS_FREQ_MED - DDR @ 400MHz, AHB @ 132MHz * BUS_FREQ_AUDIO - DDR @ 50MHz/100MHz, AHB @ 24MHz. * BUS_FREQ_LOW - DDR @ 24MHz, AHB @ 24MHz. * BUS_FREQ_ULTRA_LOW - DDR @ 1MHz, AHB - 3MHz. * * Drivers need to request/release the bus/ddr frequencies based on * their performance requirements. Drivers cannot request/release * BUS_FREQ_ULTRA_LOW mode as this mode is automatically entered from * either BUS_FREQ_AUDIO or BUS_FREQ_LOW * modes. */ enum bus_freq_mode { BUS_FREQ_HIGH, BUS_FREQ_MED, BUS_FREQ_AUDIO, BUS_FREQ_LOW, BUS_FREQ_ULTRA_LOW, }; #if defined(CONFIG_CPU_FREQ) && !defined(CONFIG_ARM64) extern struct regulator *arm_reg; extern struct regulator *soc_reg; void request_bus_freq(enum bus_freq_mode mode); void release_bus_freq(enum bus_freq_mode mode); int register_busfreq_notifier(struct notifier_block *nb); int unregister_busfreq_notifier(struct notifier_block *nb); int get_bus_freq_mode(void); #elif defined(CONFIG_ARCH_FSL_IMX8MQ) void request_bus_freq(enum bus_freq_mode mode); void release_bus_freq(enum bus_freq_mode mode); int get_bus_freq_mode(void); #else static inline void request_bus_freq(enum bus_freq_mode mode) { } static inline void release_bus_freq(enum bus_freq_mode mode) { } static inline int register_busfreq_notifier(struct notifier_block *nb) { return 0; } static inline int unregister_busfreq_notifier(struct notifier_block *nb) { return 0; } static inline int get_bus_freq_mode(void) { return BUS_FREQ_HIGH; } #endif #endif