1 // SPDX-License-Identifier: GPL-2.0+
3 * Copyright (C) 2017, STMicroelectronics - All Rights Reserved
4 * Author(s): Patrice Chotard, <patrice.chotard@foss.st.com> for STMicroelectronics.
7 #define LOG_CATEGORY UCLASS_NOP
12 #include <stm32_rcc.h>
13 #include <dm/device-internal.h>
14 #include <dm/device_compat.h>
17 struct stm32_rcc_clk stm32_rcc_clk_f42x
= {
18 .drv_name
= "stm32fx_rcc_clock",
22 struct stm32_rcc_clk stm32_rcc_clk_f469
= {
23 .drv_name
= "stm32fx_rcc_clock",
27 struct stm32_rcc_clk stm32_rcc_clk_f7
= {
28 .drv_name
= "stm32fx_rcc_clock",
32 struct stm32_rcc_clk stm32_rcc_clk_h7
= {
33 .drv_name
= "stm32h7_rcc_clock",
36 struct stm32_rcc_clk stm32_rcc_clk_mp1
= {
37 .drv_name
= "stm32mp1_clk",
41 struct stm32_rcc_clk stm32_rcc_clk_mp13
= {
42 .drv_name
= "stm32mp13_clk",
46 static int stm32_rcc_bind(struct udevice
*dev
)
48 struct udevice
*child
;
50 struct stm32_rcc_clk
*rcc_clk
=
51 (struct stm32_rcc_clk
*)dev_get_driver_data(dev
);
54 dev_dbg(dev
, "RCC bind\n");
55 drv
= lists_driver_lookup_name(rcc_clk
->drv_name
);
57 dev_err(dev
, "Cannot find driver '%s'\n", rcc_clk
->drv_name
);
61 ret
= device_bind_with_driver_data(dev
, drv
, dev
->name
,
63 dev_ofnode(dev
), &child
);
68 drv
= lists_driver_lookup_name("stm32_rcc_reset");
70 dev_err(dev
, "Cannot find driver stm32_rcc_reset'\n");
74 return device_bind_with_driver_data(dev
, drv
, dev
->name
,
76 dev_ofnode(dev
), &child
);
79 static const struct udevice_id stm32_rcc_ids
[] = {
80 {.compatible
= "st,stm32f42xx-rcc", .data
= (ulong
)&stm32_rcc_clk_f42x
},
81 {.compatible
= "st,stm32f469-rcc", .data
= (ulong
)&stm32_rcc_clk_f469
},
82 {.compatible
= "st,stm32f746-rcc", .data
= (ulong
)&stm32_rcc_clk_f7
},
83 {.compatible
= "st,stm32h743-rcc", .data
= (ulong
)&stm32_rcc_clk_h7
},
84 {.compatible
= "st,stm32mp1-rcc", .data
= (ulong
)&stm32_rcc_clk_mp1
},
85 {.compatible
= "st,stm32mp1-rcc-secure", .data
= (ulong
)&stm32_rcc_clk_mp1
},
86 {.compatible
= "st,stm32mp13-rcc", .data
= (ulong
)&stm32_rcc_clk_mp13
},
90 U_BOOT_DRIVER(stm32_rcc
) = {
93 .of_match
= stm32_rcc_ids
,
94 .bind
= stm32_rcc_bind
,