mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-25 14:10:43 +00:00
clk: sunxi: Add support for I2C gates/resets
Currently, the I2C clocks are configured in the sunxi board code. Add the I2C clocks to the DM clock driver so they can be enabled from the DM I2C driver using the normal uclass methods. Signed-off-by: Samuel Holland <samuel@sholland.org> Reviewed-by: Andre Przywara <andre.przywara@arm.com> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
This commit is contained in:
parent
8fe8ff3411
commit
c61897bf02
12 changed files with 86 additions and 0 deletions
|
@ -31,6 +31,11 @@ static struct ccu_clk_gate a10_gates[] = {
|
|||
|
||||
[CLK_AHB_GMAC] = GATE(0x064, BIT(17)),
|
||||
|
||||
[CLK_APB1_I2C0] = GATE(0x06c, BIT(0)),
|
||||
[CLK_APB1_I2C1] = GATE(0x06c, BIT(1)),
|
||||
[CLK_APB1_I2C2] = GATE(0x06c, BIT(2)),
|
||||
[CLK_APB1_I2C3] = GATE(0x06c, BIT(3)),
|
||||
[CLK_APB1_I2C4] = GATE(0x06c, BIT(15)),
|
||||
[CLK_APB1_UART0] = GATE(0x06c, BIT(16)),
|
||||
[CLK_APB1_UART1] = GATE(0x06c, BIT(17)),
|
||||
[CLK_APB1_UART2] = GATE(0x06c, BIT(18)),
|
||||
|
|
|
@ -25,6 +25,9 @@ static struct ccu_clk_gate a10s_gates[] = {
|
|||
[CLK_AHB_SPI1] = GATE(0x060, BIT(21)),
|
||||
[CLK_AHB_SPI2] = GATE(0x060, BIT(22)),
|
||||
|
||||
[CLK_APB1_I2C0] = GATE(0x06c, BIT(0)),
|
||||
[CLK_APB1_I2C1] = GATE(0x06c, BIT(1)),
|
||||
[CLK_APB1_I2C2] = GATE(0x06c, BIT(2)),
|
||||
[CLK_APB1_UART0] = GATE(0x06c, BIT(16)),
|
||||
[CLK_APB1_UART1] = GATE(0x06c, BIT(17)),
|
||||
[CLK_APB1_UART2] = GATE(0x06c, BIT(18)),
|
||||
|
|
|
@ -23,6 +23,9 @@ static struct ccu_clk_gate a23_gates[] = {
|
|||
[CLK_BUS_EHCI] = GATE(0x060, BIT(26)),
|
||||
[CLK_BUS_OHCI] = GATE(0x060, BIT(29)),
|
||||
|
||||
[CLK_BUS_I2C0] = GATE(0x06c, BIT(0)),
|
||||
[CLK_BUS_I2C1] = GATE(0x06c, BIT(1)),
|
||||
[CLK_BUS_I2C2] = GATE(0x06c, BIT(2)),
|
||||
[CLK_BUS_UART0] = GATE(0x06c, BIT(16)),
|
||||
[CLK_BUS_UART1] = GATE(0x06c, BIT(17)),
|
||||
[CLK_BUS_UART2] = GATE(0x06c, BIT(18)),
|
||||
|
@ -53,6 +56,9 @@ static struct ccu_reset a23_resets[] = {
|
|||
[RST_BUS_EHCI] = RESET(0x2c0, BIT(26)),
|
||||
[RST_BUS_OHCI] = RESET(0x2c0, BIT(29)),
|
||||
|
||||
[RST_BUS_I2C0] = RESET(0x2d8, BIT(0)),
|
||||
[RST_BUS_I2C1] = RESET(0x2d8, BIT(1)),
|
||||
[RST_BUS_I2C2] = RESET(0x2d8, BIT(2)),
|
||||
[RST_BUS_UART0] = RESET(0x2d8, BIT(16)),
|
||||
[RST_BUS_UART1] = RESET(0x2d8, BIT(17)),
|
||||
[RST_BUS_UART2] = RESET(0x2d8, BIT(18)),
|
||||
|
|
|
@ -30,6 +30,10 @@ static struct ccu_clk_gate a31_gates[] = {
|
|||
[CLK_AHB1_OHCI1] = GATE(0x060, BIT(30)),
|
||||
[CLK_AHB1_OHCI2] = GATE(0x060, BIT(31)),
|
||||
|
||||
[CLK_APB2_I2C0] = GATE(0x06c, BIT(0)),
|
||||
[CLK_APB2_I2C1] = GATE(0x06c, BIT(1)),
|
||||
[CLK_APB2_I2C2] = GATE(0x06c, BIT(2)),
|
||||
[CLK_APB2_I2C3] = GATE(0x06c, BIT(3)),
|
||||
[CLK_APB2_UART0] = GATE(0x06c, BIT(16)),
|
||||
[CLK_APB2_UART1] = GATE(0x06c, BIT(17)),
|
||||
[CLK_APB2_UART2] = GATE(0x06c, BIT(18)),
|
||||
|
@ -71,6 +75,10 @@ static struct ccu_reset a31_resets[] = {
|
|||
[RST_AHB1_OHCI1] = RESET(0x2c0, BIT(30)),
|
||||
[RST_AHB1_OHCI2] = RESET(0x2c0, BIT(31)),
|
||||
|
||||
[RST_APB2_I2C0] = RESET(0x2d8, BIT(0)),
|
||||
[RST_APB2_I2C1] = RESET(0x2d8, BIT(1)),
|
||||
[RST_APB2_I2C2] = RESET(0x2d8, BIT(2)),
|
||||
[RST_APB2_I2C3] = RESET(0x2d8, BIT(3)),
|
||||
[RST_APB2_UART0] = RESET(0x2d8, BIT(16)),
|
||||
[RST_APB2_UART1] = RESET(0x2d8, BIT(17)),
|
||||
[RST_APB2_UART2] = RESET(0x2d8, BIT(18)),
|
||||
|
|
|
@ -26,6 +26,9 @@ static const struct ccu_clk_gate a64_gates[] = {
|
|||
[CLK_BUS_OHCI0] = GATE(0x060, BIT(28)),
|
||||
[CLK_BUS_OHCI1] = GATE(0x060, BIT(29)),
|
||||
|
||||
[CLK_BUS_I2C0] = GATE(0x06c, BIT(0)),
|
||||
[CLK_BUS_I2C1] = GATE(0x06c, BIT(1)),
|
||||
[CLK_BUS_I2C2] = GATE(0x06c, BIT(2)),
|
||||
[CLK_BUS_UART0] = GATE(0x06c, BIT(16)),
|
||||
[CLK_BUS_UART1] = GATE(0x06c, BIT(17)),
|
||||
[CLK_BUS_UART2] = GATE(0x06c, BIT(18)),
|
||||
|
@ -60,6 +63,9 @@ static const struct ccu_reset a64_resets[] = {
|
|||
[RST_BUS_OHCI0] = RESET(0x2c0, BIT(28)),
|
||||
[RST_BUS_OHCI1] = RESET(0x2c0, BIT(29)),
|
||||
|
||||
[RST_BUS_I2C0] = RESET(0x2d8, BIT(0)),
|
||||
[RST_BUS_I2C1] = RESET(0x2d8, BIT(1)),
|
||||
[RST_BUS_I2C2] = RESET(0x2d8, BIT(2)),
|
||||
[RST_BUS_UART0] = RESET(0x2d8, BIT(16)),
|
||||
[RST_BUS_UART1] = RESET(0x2d8, BIT(17)),
|
||||
[RST_BUS_UART2] = RESET(0x2d8, BIT(18)),
|
||||
|
|
|
@ -25,6 +25,11 @@ static const struct ccu_clk_gate a80_gates[] = {
|
|||
[CLK_BUS_SPI2] = GATE(0x580, BIT(22)),
|
||||
[CLK_BUS_SPI3] = GATE(0x580, BIT(23)),
|
||||
|
||||
[CLK_BUS_I2C0] = GATE(0x594, BIT(0)),
|
||||
[CLK_BUS_I2C1] = GATE(0x594, BIT(1)),
|
||||
[CLK_BUS_I2C2] = GATE(0x594, BIT(2)),
|
||||
[CLK_BUS_I2C3] = GATE(0x594, BIT(3)),
|
||||
[CLK_BUS_I2C4] = GATE(0x594, BIT(4)),
|
||||
[CLK_BUS_UART0] = GATE(0x594, BIT(16)),
|
||||
[CLK_BUS_UART1] = GATE(0x594, BIT(17)),
|
||||
[CLK_BUS_UART2] = GATE(0x594, BIT(18)),
|
||||
|
@ -40,6 +45,11 @@ static const struct ccu_reset a80_resets[] = {
|
|||
[RST_BUS_SPI2] = RESET(0x5a0, BIT(22)),
|
||||
[RST_BUS_SPI3] = RESET(0x5a0, BIT(23)),
|
||||
|
||||
[RST_BUS_I2C0] = RESET(0x5b4, BIT(0)),
|
||||
[RST_BUS_I2C1] = RESET(0x5b4, BIT(1)),
|
||||
[RST_BUS_I2C2] = RESET(0x5b4, BIT(2)),
|
||||
[RST_BUS_I2C3] = RESET(0x5b4, BIT(3)),
|
||||
[RST_BUS_I2C4] = RESET(0x5b4, BIT(4)),
|
||||
[RST_BUS_UART0] = RESET(0x5b4, BIT(16)),
|
||||
[RST_BUS_UART1] = RESET(0x5b4, BIT(17)),
|
||||
[RST_BUS_UART2] = RESET(0x5b4, BIT(18)),
|
||||
|
|
|
@ -25,6 +25,9 @@ static struct ccu_clk_gate a83t_gates[] = {
|
|||
[CLK_BUS_EHCI1] = GATE(0x060, BIT(27)),
|
||||
[CLK_BUS_OHCI0] = GATE(0x060, BIT(29)),
|
||||
|
||||
[CLK_BUS_I2C0] = GATE(0x06c, BIT(0)),
|
||||
[CLK_BUS_I2C1] = GATE(0x06c, BIT(1)),
|
||||
[CLK_BUS_I2C2] = GATE(0x06c, BIT(2)),
|
||||
[CLK_BUS_UART0] = GATE(0x06c, BIT(16)),
|
||||
[CLK_BUS_UART1] = GATE(0x06c, BIT(17)),
|
||||
[CLK_BUS_UART2] = GATE(0x06c, BIT(18)),
|
||||
|
@ -57,6 +60,9 @@ static struct ccu_reset a83t_resets[] = {
|
|||
[RST_BUS_EHCI1] = RESET(0x2c0, BIT(27)),
|
||||
[RST_BUS_OHCI0] = RESET(0x2c0, BIT(29)),
|
||||
|
||||
[RST_BUS_I2C0] = RESET(0x2d8, BIT(0)),
|
||||
[RST_BUS_I2C1] = RESET(0x2d8, BIT(1)),
|
||||
[RST_BUS_I2C2] = RESET(0x2d8, BIT(2)),
|
||||
[RST_BUS_UART0] = RESET(0x2d8, BIT(16)),
|
||||
[RST_BUS_UART1] = RESET(0x2d8, BIT(17)),
|
||||
[RST_BUS_UART2] = RESET(0x2d8, BIT(18)),
|
||||
|
|
|
@ -30,6 +30,9 @@ static struct ccu_clk_gate h3_gates[] = {
|
|||
[CLK_BUS_OHCI2] = GATE(0x060, BIT(30)),
|
||||
[CLK_BUS_OHCI3] = GATE(0x060, BIT(31)),
|
||||
|
||||
[CLK_BUS_I2C0] = GATE(0x06c, BIT(0)),
|
||||
[CLK_BUS_I2C1] = GATE(0x06c, BIT(1)),
|
||||
[CLK_BUS_I2C2] = GATE(0x06c, BIT(2)),
|
||||
[CLK_BUS_UART0] = GATE(0x06c, BIT(16)),
|
||||
[CLK_BUS_UART1] = GATE(0x06c, BIT(17)),
|
||||
[CLK_BUS_UART2] = GATE(0x06c, BIT(18)),
|
||||
|
@ -74,6 +77,9 @@ static struct ccu_reset h3_resets[] = {
|
|||
|
||||
[RST_BUS_EPHY] = RESET(0x2c8, BIT(2)),
|
||||
|
||||
[RST_BUS_I2C0] = RESET(0x2d8, BIT(0)),
|
||||
[RST_BUS_I2C1] = RESET(0x2d8, BIT(1)),
|
||||
[RST_BUS_I2C2] = RESET(0x2d8, BIT(2)),
|
||||
[RST_BUS_UART0] = RESET(0x2d8, BIT(16)),
|
||||
[RST_BUS_UART1] = RESET(0x2d8, BIT(17)),
|
||||
[RST_BUS_UART2] = RESET(0x2d8, BIT(18)),
|
||||
|
|
|
@ -22,6 +22,11 @@ static struct ccu_clk_gate h6_gates[] = {
|
|||
[CLK_BUS_UART2] = GATE(0x90c, BIT(2)),
|
||||
[CLK_BUS_UART3] = GATE(0x90c, BIT(3)),
|
||||
|
||||
[CLK_BUS_I2C0] = GATE(0x91c, BIT(0)),
|
||||
[CLK_BUS_I2C1] = GATE(0x91c, BIT(1)),
|
||||
[CLK_BUS_I2C2] = GATE(0x91c, BIT(2)),
|
||||
[CLK_BUS_I2C3] = GATE(0x91c, BIT(3)),
|
||||
|
||||
[CLK_SPI0] = GATE(0x940, BIT(31)),
|
||||
[CLK_SPI1] = GATE(0x944, BIT(31)),
|
||||
|
||||
|
@ -57,6 +62,11 @@ static struct ccu_reset h6_resets[] = {
|
|||
[RST_BUS_UART2] = RESET(0x90c, BIT(18)),
|
||||
[RST_BUS_UART3] = RESET(0x90c, BIT(19)),
|
||||
|
||||
[RST_BUS_I2C0] = RESET(0x91c, BIT(16)),
|
||||
[RST_BUS_I2C1] = RESET(0x91c, BIT(17)),
|
||||
[RST_BUS_I2C2] = RESET(0x91c, BIT(18)),
|
||||
[RST_BUS_I2C3] = RESET(0x91c, BIT(19)),
|
||||
|
||||
[RST_BUS_SPI0] = RESET(0x96c, BIT(16)),
|
||||
[RST_BUS_SPI1] = RESET(0x96c, BIT(17)),
|
||||
|
||||
|
|
|
@ -24,6 +24,12 @@ static struct ccu_clk_gate h616_gates[] = {
|
|||
[CLK_BUS_UART4] = GATE(0x90c, BIT(4)),
|
||||
[CLK_BUS_UART5] = GATE(0x90c, BIT(5)),
|
||||
|
||||
[CLK_BUS_I2C0] = GATE(0x91c, BIT(0)),
|
||||
[CLK_BUS_I2C1] = GATE(0x91c, BIT(1)),
|
||||
[CLK_BUS_I2C2] = GATE(0x91c, BIT(2)),
|
||||
[CLK_BUS_I2C3] = GATE(0x91c, BIT(3)),
|
||||
[CLK_BUS_I2C4] = GATE(0x91c, BIT(4)),
|
||||
|
||||
[CLK_SPI0] = GATE(0x940, BIT(31)),
|
||||
[CLK_SPI1] = GATE(0x944, BIT(31)),
|
||||
|
||||
|
@ -68,6 +74,12 @@ static struct ccu_reset h616_resets[] = {
|
|||
[RST_BUS_UART4] = RESET(0x90c, BIT(20)),
|
||||
[RST_BUS_UART5] = RESET(0x90c, BIT(21)),
|
||||
|
||||
[RST_BUS_I2C0] = RESET(0x91c, BIT(16)),
|
||||
[RST_BUS_I2C1] = RESET(0x91c, BIT(17)),
|
||||
[RST_BUS_I2C2] = RESET(0x91c, BIT(18)),
|
||||
[RST_BUS_I2C3] = RESET(0x91c, BIT(19)),
|
||||
[RST_BUS_I2C4] = RESET(0x91c, BIT(20)),
|
||||
|
||||
[RST_BUS_SPI0] = RESET(0x96c, BIT(16)),
|
||||
[RST_BUS_SPI1] = RESET(0x96c, BIT(17)),
|
||||
|
||||
|
|
|
@ -32,6 +32,11 @@ static struct ccu_clk_gate r40_gates[] = {
|
|||
|
||||
[CLK_BUS_GMAC] = GATE(0x064, BIT(17)),
|
||||
|
||||
[CLK_BUS_I2C0] = GATE(0x06c, BIT(0)),
|
||||
[CLK_BUS_I2C1] = GATE(0x06c, BIT(1)),
|
||||
[CLK_BUS_I2C2] = GATE(0x06c, BIT(2)),
|
||||
[CLK_BUS_I2C3] = GATE(0x06c, BIT(3)),
|
||||
[CLK_BUS_I2C4] = GATE(0x06c, BIT(15)),
|
||||
[CLK_BUS_UART0] = GATE(0x06c, BIT(16)),
|
||||
[CLK_BUS_UART1] = GATE(0x06c, BIT(17)),
|
||||
[CLK_BUS_UART2] = GATE(0x06c, BIT(18)),
|
||||
|
@ -77,6 +82,11 @@ static struct ccu_reset r40_resets[] = {
|
|||
|
||||
[RST_BUS_GMAC] = RESET(0x2c4, BIT(17)),
|
||||
|
||||
[RST_BUS_I2C0] = RESET(0x2d8, BIT(0)),
|
||||
[RST_BUS_I2C1] = RESET(0x2d8, BIT(1)),
|
||||
[RST_BUS_I2C2] = RESET(0x2d8, BIT(2)),
|
||||
[RST_BUS_I2C3] = RESET(0x2d8, BIT(3)),
|
||||
[RST_BUS_I2C4] = RESET(0x2d8, BIT(15)),
|
||||
[RST_BUS_UART0] = RESET(0x2d8, BIT(16)),
|
||||
[RST_BUS_UART1] = RESET(0x2d8, BIT(17)),
|
||||
[RST_BUS_UART2] = RESET(0x2d8, BIT(18)),
|
||||
|
|
|
@ -20,6 +20,8 @@ static struct ccu_clk_gate v3s_gates[] = {
|
|||
[CLK_BUS_SPI0] = GATE(0x060, BIT(20)),
|
||||
[CLK_BUS_OTG] = GATE(0x060, BIT(24)),
|
||||
|
||||
[CLK_BUS_I2C0] = GATE(0x06c, BIT(0)),
|
||||
[CLK_BUS_I2C1] = GATE(0x06c, BIT(1)),
|
||||
[CLK_BUS_UART0] = GATE(0x06c, BIT(16)),
|
||||
[CLK_BUS_UART1] = GATE(0x06c, BIT(17)),
|
||||
[CLK_BUS_UART2] = GATE(0x06c, BIT(18)),
|
||||
|
@ -38,6 +40,8 @@ static struct ccu_reset v3s_resets[] = {
|
|||
[RST_BUS_SPI0] = RESET(0x2c0, BIT(20)),
|
||||
[RST_BUS_OTG] = RESET(0x2c0, BIT(24)),
|
||||
|
||||
[RST_BUS_I2C0] = RESET(0x2d8, BIT(0)),
|
||||
[RST_BUS_I2C1] = RESET(0x2d8, BIT(1)),
|
||||
[RST_BUS_UART0] = RESET(0x2d8, BIT(16)),
|
||||
[RST_BUS_UART1] = RESET(0x2d8, BIT(17)),
|
||||
[RST_BUS_UART2] = RESET(0x2d8, BIT(18)),
|
||||
|
|
Loading…
Reference in a new issue