blob: ffbc07e228cb8bb1c86694b72d2225183a21b199 [file] [log] [blame]
Minkyu Kang008a3512011-01-24 15:22:23 +09001/*
2 * (C) Copyright 2010 Samsung Electronics
3 * Minkyu Kang <mk7.kang@samsung.com>
4 *
Wolfgang Denk1a459662013-07-08 09:37:19 +02005 * SPDX-License-Identifier: GPL-2.0+
Minkyu Kang008a3512011-01-24 15:22:23 +09006 */
7
8#ifndef __ASM_ARM_ARCH_CLK_H_
9#define __ASM_ARM_ARCH_CLK_H_
10
11#define APLL 0
12#define MPLL 1
13#define EPLL 2
14#define HPLL 3
15#define VPLL 4
Rajeshwari Shinde10bc1a72012-07-03 20:02:58 +000016#define BPLL 5
Rajeshwari Birje060c2272013-12-26 09:44:21 +053017#define RPLL 6
Minkyu Kang008a3512011-01-24 15:22:23 +090018
Jaehoon Chung39c49752014-05-16 13:59:50 +090019#define MASK_PRE_RATIO(x) (0xff << ((x << 4) + 8))
20#define MASK_RATIO(x) (0xf << (x << 4))
21#define SET_PRE_RATIO(x, y) ((y & 0xff) << ((x << 4) + 8))
22#define SET_RATIO(x, y) ((y & 0xf) << (x << 4))
23
Padmavathi Venna12a46a32013-03-28 04:32:21 +000024enum pll_src_bit {
25 EXYNOS_SRC_MPLL = 6,
26 EXYNOS_SRC_EPLL,
27 EXYNOS_SRC_VPLL,
28};
29
Minkyu Kang008a3512011-01-24 15:22:23 +090030unsigned long get_pll_clk(int pllreg);
31unsigned long get_arm_clk(void);
Rajeshwari Shinde989feb82012-07-23 21:23:48 +000032unsigned long get_i2c_clk(void);
Minkyu Kang008a3512011-01-24 15:22:23 +090033unsigned long get_pwm_clk(void);
34unsigned long get_uart_clk(int dev_index);
Jaehoon Chungc39e9692012-12-27 22:30:32 +000035unsigned long get_mmc_clk(int dev_index);
Jaehoon Chung68a8cbf2011-05-17 21:19:17 +000036void set_mmc_clk(int dev_index, unsigned int div);
Donghwa Lee37835d42012-04-05 19:36:12 +000037unsigned long get_lcd_clk(void);
38void set_lcd_clk(void);
39void set_mipi_clk(void);
Dani Krishna Mohan3dd22a32013-09-11 16:38:48 +053040int set_i2s_clk_source(unsigned int i2s_id);
41int set_i2s_clk_prescaler(unsigned int src_frq, unsigned int dst_frq,
42 unsigned int i2s_id);
Rajeshwari Shinde2e206ca2012-10-25 19:49:29 +000043int set_epll_clk(unsigned long rate);
Hatim RVb56b3042012-11-02 01:15:34 +000044int set_spi_clk(int periph_id, unsigned int rate);
Minkyu Kang008a3512011-01-24 15:22:23 +090045
Padmavathi Venna12a46a32013-03-28 04:32:21 +000046/**
47 * get the clk frequency of the required peripheral
48 *
49 * @param peripheral Peripheral id
50 *
51 * @return frequency of the peripheral clk
52 */
53unsigned long clock_get_periph_rate(int peripheral);
54
Minkyu Kang008a3512011-01-24 15:22:23 +090055#endif