/*
 * Copyright (c) 2021 Linaro Limited
 * Copyright (c) 2023 STMicroelectronics
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/*
 * Warning: This overlay performs configuration from clean sheet.
 * It is assumed that it is applied after clear_clocks.overlay file.
 */

/*
 * Warning: HSE frequency differs on available boards, hence:
 *          This configuration is only available stm32h573 disco kit
 */

&clk_hse {
	clock-frequency = <DT_FREQ_M(25)>;
	hse-bypass; /* X3 is a 25MHz oscillator on PH0 */
	status = "okay";
};

&rcc {
	clocks = <&clk_hse>;
	clock-frequency = <DT_FREQ_M(25)>;
	ahb-prescaler = <1>;
	apb1-prescaler = <1>;
	apb2-prescaler = <1>;
	apb3-prescaler = <1>;
};
