/*
 * Copyright (C) 2016 Chen-Yu Tsai <wens@csie.org>
 *
 * This file is dual-licensed: you can use it either under the terms
 * of the GPL or the X11 license, at your option. Note that this dual
 * licensing only applies to this file, and not this project as a
 * whole.
 *
 *  a) This file is free software; you can redistribute it and/or
 *     modify it under the terms of the GNU General Public License as
 *     published by the Free Software Foundation; either version 2 of the
 *     License, or (at your option) any later version.
 *
 *     This file is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 * Or, alternatively,
 *
 *  b) Permission is hereby granted, free of charge, to any person
 *     obtaining a copy of this software and associated documentation
 *     files (the "Software"), to deal in the Software without
 *     restriction, including without limitation the rights to use,
 *     copy, modify, merge, publish, distribute, sublicense, and/or
 *     sell copies of the Software, and to permit persons to whom the
 *     Software is furnished to do so, subject to the following
 *     conditions:
 *
 *     The above copyright notice and this permission notice shall be
 *     included in all copies or substantial portions of the Software.
 *
 *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 *     OTHER DEALINGS IN THE SOFTWARE.
 */

#ifndef _DT_BINDINGS_CLK_SUN6I_A31_H_
#define _DT_BINDINGS_CLK_SUN6I_A31_H_

#define CLK_PLL_VIDEO0_2X	7

#define CLK_PLL_PERIPH		10

#define CLK_PLL_VIDEO1_2X	13

#define CLK_PLL_MIPI		15

#define CLK_CPU			18

#define CLK_AHB1_MIPIDSI	23
#define CLK_AHB1_SS		24
#define CLK_AHB1_DMA		25
#define CLK_AHB1_MMC0		26
#define CLK_AHB1_MMC1		27
#define CLK_AHB1_MMC2		28
#define CLK_AHB1_MMC3		29
#define CLK_AHB1_NAND1		30
#define CLK_AHB1_NAND0		31
#define CLK_AHB1_SDRAM		32
#define CLK_AHB1_EMAC		33
#define CLK_AHB1_TS		34
#define CLK_AHB1_HSTIMER	35
#define CLK_AHB1_SPI0		36
#define CLK_AHB1_SPI1		37
#define CLK_AHB1_SPI2		38
#define CLK_AHB1_SPI3		39
#define CLK_AHB1_OTG		40
#define CLK_AHB1_EHCI0		41
#define CLK_AHB1_EHCI1		42
#define CLK_AHB1_OHCI0		43
#define CLK_AHB1_OHCI1		44
#define CLK_AHB1_OHCI2		45
#define CLK_AHB1_VE		46
#define CLK_AHB1_LCD0		47
#define CLK_AHB1_LCD1		48
#define CLK_AHB1_CSI		49
#define CLK_AHB1_HDMI		50
#define CLK_AHB1_BE0		51
#define CLK_AHB1_BE1		52
#define CLK_AHB1_FE0		53
#define CLK_AHB1_FE1		54
#define CLK_AHB1_MP		55
#define CLK_AHB1_GPU		56
#define CLK_AHB1_DEU0		57
#define CLK_AHB1_DEU1		58
#define CLK_AHB1_DRC0		59
#define CLK_AHB1_DRC1		60

#define CLK_APB1_CODEC		61
#define CLK_APB1_SPDIF		62
#define CLK_APB1_DIGITAL_MIC	63
#define CLK_APB1_PIO		64
#define CLK_APB1_DAUDIO0	65
#define CLK_APB1_DAUDIO1	66

#define CLK_APB2_I2C0		67
#define CLK_APB2_I2C1		68
#define CLK_APB2_I2C2		69
#define CLK_APB2_I2C3		70
#define CLK_APB2_UART0		71
#define CLK_APB2_UART1		72
#define CLK_APB2_UART2		73
#define CLK_APB2_UART3		74
#define CLK_APB2_UART4		75
#define CLK_APB2_UART5		76

#define CLK_NAND0		77
#define CLK_NAND1		78
#define CLK_MMC0		79
#define CLK_MMC0_SAMPLE		80
#define CLK_MMC0_OUTPUT		81
#define CLK_MMC1		82
#define CLK_MMC1_SAMPLE		83
#define CLK_MMC1_OUTPUT		84
#define CLK_MMC2		85
#define CLK_MMC2_SAMPLE		86
#define CLK_MMC2_OUTPUT		87
#define CLK_MMC3		88
#define CLK_MMC3_SAMPLE		89
#define CLK_MMC3_OUTPUT		90
#define CLK_TS			91
#define CLK_SS			92
#define CLK_SPI0		93
#define CLK_SPI1		94
#define CLK_SPI2		95
#define CLK_SPI3		96
#define CLK_DAUDIO0		97
#define CLK_DAUDIO1		98
#define CLK_SPDIF		99
#define CLK_USB_PHY0		100
#define CLK_USB_PHY1		101
#define CLK_USB_PHY2		102
#define CLK_USB_OHCI0		103
#define CLK_USB_OHCI1		104
#define CLK_USB_OHCI2		105

#define CLK_DRAM_VE		110
#define CLK_DRAM_CSI_ISP	111
#define CLK_DRAM_TS		112
#define CLK_DRAM_DRC0		113
#define CLK_DRAM_DRC1		114
#define CLK_DRAM_DEU0		115
#define CLK_DRAM_DEU1		116
#define CLK_DRAM_FE0		117
#define CLK_DRAM_FE1		118
#define CLK_DRAM_BE0		119
#define CLK_DRAM_BE1		120
#define CLK_DRAM_MP		121

#define CLK_BE0			122
#define CLK_BE1			123
#define CLK_FE0			124
#define CLK_FE1			125
#define CLK_MP			126
#define CLK_LCD0_CH0		127
#define CLK_LCD1_CH0		128
#define CLK_LCD0_CH1		129
#define CLK_LCD1_CH1		130
#define CLK_CSI0_SCLK		131
#define CLK_CSI0_MCLK		132
#define CLK_CSI1_MCLK		133
#define CLK_VE			134
#define CLK_CODEC		135
#define CLK_AVS			136
#define CLK_DIGITAL_MIC		137
#define CLK_HDMI		138
#define CLK_HDMI_DDC		139
#define CLK_PS			140

#define CLK_MIPI_DSI		143
#define CLK_MIPI_DSI_DPHY	144
#define CLK_MIPI_CSI_DPHY	145
#define CLK_IEP_DRC0		146
#define CLK_IEP_DRC1		147
#define CLK_IEP_DEU0		148
#define CLK_IEP_DEU1		149
#define CLK_GPU_CORE		150
#define CLK_GPU_MEMORY		151
#define CLK_GPU_HYD		152
#define CLK_ATS			153
#define CLK_TRACE		154

#define CLK_OUT_A		155
#define CLK_OUT_B		156
#define CLK_OUT_C		157

#endif /* _DT_BINDINGS_CLK_SUN6I_A31_H_ */
