Skip to content

Commit 035fd5a

Browse files
committed
drivers: misc: add NXP i.MX93 Video PLL driver support
Added nxp_imx93_video_pll driver to support display function Signed-off-by: Ruoshan Shi <[email protected]>
1 parent bf0e0b3 commit 035fd5a

File tree

6 files changed

+122
-0
lines changed

6 files changed

+122
-0
lines changed

drivers/misc/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ add_subdirectory_ifdef(CONFIG_FT800 ft8xx)
55
add_subdirectory_ifdef(CONFIG_GROVE_LCD_RGB grove_lcd_rgb)
66
add_subdirectory_ifdef(CONFIG_PIO_RPI_PICO pio_rpi_pico)
77
add_subdirectory_ifdef(CONFIG_NXP_FLEXRAM nxp_flexram)
8+
add_subdirectory_ifdef(CONFIG_NXP_IMX93_VIDEO_PLL nxp_imx93_video_pll)
89
add_subdirectory_ifdef(CONFIG_NXP_MEDIAMIX_BLK_CTRL nxp_imx93_mediamix)
910
add_subdirectory_ifdef(CONFIG_NXP_S32_EMIOS nxp_s32_emios)
1011
add_subdirectory_ifdef(CONFIG_TIMEAWARE_GPIO timeaware_gpio)

drivers/misc/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,6 @@ source "drivers/misc/nxp_rtxxx_dsp_ctrl/Kconfig"
2323
source "drivers/misc/stm32n6_axisram/Kconfig"
2424
source "drivers/misc/nxp_inputmux/Kconfig"
2525
source "drivers/misc/nxp_imx93_mediamix/Kconfig"
26+
source "drivers/misc/nxp_imx93_video_pll/Kconfig"
2627

2728
endmenu
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Copyright 2025 NXP
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
zephyr_library()
5+
6+
zephyr_library_sources(nxp_video_pll_ctrl.c)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Copyright 2025 NXP
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config NXP_IMX93_VIDEO_PLL
5+
bool "Initialize NXP iMX93 VIDEO PLL"
6+
default y
7+
help
8+
Enable initialization of VIDEO PLL using device tree configuration.
9+
10+
if NXP_IMX93_VIDEO_PLL
11+
12+
module = VIDEO_PLL
13+
module-str = video pll
14+
source "subsys/logging/Kconfig.template.log_config"
15+
16+
config IMX93_VIDEO_PLL_INIT_PRIORITY
17+
int "i.MX93 video pll initialization priority"
18+
default 30
19+
20+
endif # NXP_IMX93_VIDEO_PLL
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/*
2+
* Copyright 2025 NXP
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#define DT_DRV_COMPAT nxp_imx93_video_pll
8+
#include <zephyr/device.h>
9+
#include <zephyr/init.h>
10+
#include <zephyr/kernel.h>
11+
#include <zephyr/logging/log.h>
12+
LOG_MODULE_REGISTER(video_pll, CONFIG_MEDIAMIX_LOG_LEVEL);
13+
#include <fsl_common.h>
14+
15+
struct video_pll_config {
16+
uint32_t rdiv;
17+
uint32_t mfi;
18+
uint32_t mfn;
19+
uint32_t mfd;
20+
uint32_t odiv;
21+
uint32_t freq;
22+
};
23+
24+
#define VIDEO_PLL_INIT(inst) \
25+
static int video_pll_init_##inst(const struct device *dev) \
26+
{ \
27+
const struct video_pll_config *cfg = dev->config; \
28+
const fracn_pll_init_t pll_cfg = { \
29+
.rdiv = cfg->rdiv, \
30+
.mfi = cfg->mfi, \
31+
.mfn = cfg->mfn, \
32+
.mfd = cfg->mfd, \
33+
.odiv = cfg->odiv, \
34+
}; \
35+
CLOCK_PllInit(VIDEOPLL, &pll_cfg); \
36+
g_clockSourceFreq[kCLOCK_VideoPll1] = cfg->freq; \
37+
g_clockSourceFreq[kCLOCK_VideoPll1Out] = cfg->freq; \
38+
printk("Initialized VIDEO PLL to %d Hz\n", cfg->freq); \
39+
return 0; \
40+
}; \
41+
static const struct video_pll_config video_pll_cfg_##inst = { \
42+
.rdiv = DT_INST_PROP(inst, rdiv), \
43+
.mfi = DT_INST_PROP(inst, mfi), \
44+
.mfn = DT_INST_PROP(inst, mfn), \
45+
.mfd = DT_INST_PROP(inst, mfd), \
46+
.odiv = DT_INST_PROP(inst, odiv), \
47+
.freq = DT_INST_PROP(inst, pll_frequency), \
48+
}; \
49+
DEVICE_DT_INST_DEFINE(inst, video_pll_init_##inst, NULL, NULL, &video_pll_cfg_##inst, \
50+
PRE_KERNEL_1, CONFIG_IMX93_VIDEO_PLL_INIT_PRIORITY, NULL);
51+
52+
DT_INST_FOREACH_STATUS_OKAY(VIDEO_PLL_INIT)
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#
2+
# Copyright 2025 NXP
3+
#
4+
# SPDX-License-Identifier: Apache-2.0
5+
#
6+
7+
description: NXP i.MX93 Video PLL controller
8+
9+
compatible: "nxp,imx93-video-pll"
10+
11+
include: base.yaml
12+
13+
properties:
14+
rdiv:
15+
type: int
16+
required: true
17+
description: Reference divider value.
18+
19+
mfi:
20+
type: int
21+
required: true
22+
description: Integer multiplier factor.
23+
24+
mfn:
25+
type: int
26+
required: true
27+
description: Fractional numerator.
28+
29+
mfd:
30+
type: int
31+
required: true
32+
description: Fractional denominator.
33+
34+
odiv:
35+
type: int
36+
required: true
37+
description: Output divider value.
38+
39+
pll-frequency:
40+
type: int
41+
required: true
42+
description: Target PLL output frequency in Hz.

0 commit comments

Comments
 (0)