drivers/clk/uniphier/clk-uniphier-mio.c
Source file repositories/reference/linux-study-clean/drivers/clk/uniphier/clk-uniphier-mio.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/clk/uniphier/clk-uniphier-mio.c- Extension
.c- Size
- 2478 bytes
- Lines
- 90
- Domain
- Driver Families
- Bucket
- drivers/clk
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/stddef.hclk-uniphier.h
Detected Declarations
- No top-level syscall, struct, function, initcall, or export declaration detected by the generator.
Annotated Snippet
// SPDX-License-Identifier: GPL-2.0-or-later
/*
* Copyright (C) 2016 Socionext Inc.
* Author: Masahiro Yamada <yamada.masahiro@socionext.com>
*/
#include <linux/stddef.h>
#include "clk-uniphier.h"
#define UNIPHIER_MIO_CLK_SD_FIXED \
UNIPHIER_CLK_FACTOR("sd-44m", -1, "sd-133m", 1, 3), \
UNIPHIER_CLK_FACTOR("sd-33m", -1, "sd-200m", 1, 6), \
UNIPHIER_CLK_FACTOR("sd-50m", -1, "sd-200m", 1, 4), \
UNIPHIER_CLK_FACTOR("sd-67m", -1, "sd-200m", 1, 3), \
UNIPHIER_CLK_FACTOR("sd-100m", -1, "sd-200m", 1, 2), \
UNIPHIER_CLK_FACTOR("sd-40m", -1, "sd-200m", 1, 5), \
UNIPHIER_CLK_FACTOR("sd-25m", -1, "sd-200m", 1, 8), \
UNIPHIER_CLK_FACTOR("sd-22m", -1, "sd-133m", 1, 6)
#define UNIPHIER_MIO_CLK_SD(_idx, ch) \
{ \
.name = "sd" #ch "-sel", \
.type = UNIPHIER_CLK_TYPE_MUX, \
.idx = -1, \
.data.mux = { \
.parent_names = { \
"sd-44m", \
"sd-33m", \
"sd-50m", \
"sd-67m", \
"sd-100m", \
"sd-40m", \
"sd-25m", \
"sd-22m", \
}, \
.num_parents = 8, \
.reg = 0x30 + 0x200 * (ch), \
.masks = { \
0x00031000, \
0x00031000, \
0x00031000, \
0x00031000, \
0x00001300, \
0x00001300, \
0x00001300, \
0x00001300, \
}, \
.vals = { \
0x00000000, \
0x00010000, \
0x00020000, \
0x00030000, \
0x00001000, \
0x00001100, \
0x00001200, \
0x00001300, \
}, \
}, \
}, \
UNIPHIER_CLK_GATE("sd" #ch, (_idx), "sd" #ch "-sel", 0x20 + 0x200 * (ch), 8)
#define UNIPHIER_MIO_CLK_USB2(idx, ch) \
UNIPHIER_CLK_GATE("usb2" #ch, (idx), "usb2", 0x20 + 0x200 * (ch), 28)
#define UNIPHIER_MIO_CLK_USB2_PHY(idx, ch) \
UNIPHIER_CLK_GATE("usb2" #ch "-phy", (idx), "usb2", 0x20 + 0x200 * (ch), 29)
const struct uniphier_clk_data uniphier_ld4_mio_clk_data[] = {
UNIPHIER_MIO_CLK_SD_FIXED,
UNIPHIER_MIO_CLK_SD(0, 0),
UNIPHIER_MIO_CLK_SD(1, 1),
UNIPHIER_MIO_CLK_SD(2, 2),
UNIPHIER_CLK_GATE("miodmac", 7, NULL, 0x20, 25),
UNIPHIER_MIO_CLK_USB2(8, 0),
UNIPHIER_MIO_CLK_USB2(9, 1),
UNIPHIER_MIO_CLK_USB2(10, 2),
UNIPHIER_MIO_CLK_USB2_PHY(12, 0),
UNIPHIER_MIO_CLK_USB2_PHY(13, 1),
UNIPHIER_MIO_CLK_USB2_PHY(14, 2),
{ /* sentinel */ }
};
const struct uniphier_clk_data uniphier_pro5_sd_clk_data[] = {
UNIPHIER_MIO_CLK_SD_FIXED,
UNIPHIER_MIO_CLK_SD(0, 0),
UNIPHIER_MIO_CLK_SD(1, 1),
{ /* sentinel */ }
};
Annotation
- Immediate include surface: `linux/stddef.h`, `clk-uniphier.h`.
- Atlas domain: Driver Families / drivers/clk.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.