u-boot/drivers/clk/sunxi/clk_a523_r.c
Andre Przywara d508d995d1 clk: sunxi: Add support for the A523 -R CCU
Add a clock driver for the PRCM clock controller on the Allwinner A523
family of SoCs, often also used with an "r" prefix or suffix.
This just describes the clock gates and reset lines for the few devices
that we would need, most prominently the R_I2C device for the PMIC.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
2025-07-27 22:57:35 +01:00

40 lines
1.2 KiB
C

// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (C) 2024 Arm Ltd.
*/
#include <clk-uclass.h>
#include <dm.h>
#include <clk/sunxi.h>
#include <dt-bindings/clock/sun55i-a523-r-ccu.h>
#include <dt-bindings/reset/sun55i-a523-r-ccu.h>
#include <linux/bitops.h>
static struct ccu_clk_gate a523_r_gates[] = {
[CLK_R_AHB] = GATE_DUMMY,
[CLK_R_APB0] = GATE_DUMMY,
[CLK_R_APB1] = GATE_DUMMY,
[CLK_BUS_R_TWD] = GATE(0x12c, BIT(0)),
[CLK_BUS_R_I2C0] = GATE(0x19c, BIT(0)),
[CLK_BUS_R_I2C1] = GATE(0x19c, BIT(1)),
[CLK_BUS_R_I2C2] = GATE(0x19c, BIT(2)),
[CLK_BUS_R_RTC] = GATE(0x20c, BIT(0)),
};
static struct ccu_reset a523_r_resets[] = {
[RST_BUS_R_TWD] = RESET(0x12c, BIT(16)),
[RST_BUS_R_UART0] = RESET(0x18c, BIT(16)),
[RST_BUS_R_I2C0] = RESET(0x19c, BIT(16)),
[RST_BUS_R_I2C1] = RESET(0x19c, BIT(17)),
[RST_BUS_R_I2C2] = RESET(0x19c, BIT(18)),
[RST_BUS_R_PPU1] = RESET(0x1ac, BIT(17)),
[RST_BUS_R_RTC] = RESET(0x20c, BIT(16)),
};
const struct ccu_desc a523_r_ccu_desc = {
.gates = a523_r_gates,
.resets = a523_r_resets,
.num_gates = ARRAY_SIZE(a523_r_gates),
.num_resets = ARRAY_SIZE(a523_r_resets),
};