Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/arm/altera Use device_compatible_entry / of_search_...
details: https://anonhg.NetBSD.org/src/rev/0bf00e80a521
branches: trunk
changeset: 950176:0bf00e80a521
user: thorpej <thorpej%NetBSD.org@localhost>
date: Tue Jan 19 03:25:50 2021 +0000
description:
Use device_compatible_entry / of_search_compatible() to match the clock
type rather than calling of_compatible() on different sets of compatible
strings.
diffstat:
sys/arch/arm/altera/cycv_clkmgr.c | 40 +++++++++++++++++++++++---------------
1 files changed, 24 insertions(+), 16 deletions(-)
diffs (91 lines):
diff -r 19f9dd6a4d67 -r 0bf00e80a521 sys/arch/arm/altera/cycv_clkmgr.c
--- a/sys/arch/arm/altera/cycv_clkmgr.c Tue Jan 19 03:20:13 2021 +0000
+++ b/sys/arch/arm/altera/cycv_clkmgr.c Tue Jan 19 03:25:50 2021 +0000
@@ -1,9 +1,9 @@
-/* $NetBSD: cycv_clkmgr.c,v 1.4 2019/10/18 06:50:08 skrll Exp $ */
+/* $NetBSD: cycv_clkmgr.c,v 1.5 2021/01/19 03:25:50 thorpej Exp $ */
/* This file is in the public domain. */
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cycv_clkmgr.c,v 1.4 2019/10/18 06:50:08 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cycv_clkmgr.c,v 1.5 2021/01/19 03:25:50 thorpej Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -64,6 +64,7 @@
int parent_id;
int type;
+#define CYCV_CLK_TYPE_PERIP 0xffff /* pseudo-type */
#define CYCV_CLK_TYPE_PLL 0x0001
#define CYCV_CLK_TYPE_FIXED 0x0002
#define CYCV_CLK_TYPE_FIXED_DIV 0x0003
@@ -110,13 +111,17 @@
CFATTACH_DECL_NEW(cycvclkmgr, sizeof (struct cycv_clkmgr_softc),
cycv_clkmgr_match, cycv_clkmgr_attach, NULL, NULL);
+static const struct device_compatible_entry compat_data[] = {
+ { .compat = "altr,clk-mgr" },
+ { 0 }
+};
+
static int
cycv_clkmgr_match(device_t parent, cfdata_t cf, void *aux)
{
- const char *compatible[] = { "altr,clk-mgr", NULL };
struct fdt_attach_args *faa = aux;
- return of_match_compatible(faa->faa_phandle, compatible);
+ return of_match_compat_data(faa->faa_phandle, compat_data);
}
static void
@@ -208,13 +213,12 @@
{ "nand_clk", { "nand_x_clk" }, 1, 0, 0 },
};
-static const char * const cycv_clkmgr_compat_fixed[] = { "fixed-clock", NULL };
-static const char * const cycv_clkmgr_compat_pll[] = { "altr,socfpga-pll-clock",
- NULL };
-static const char * const cycv_clkmgr_compat_perip[] = {
- "altr,socfpga-perip-clk",
- "altr,socfpga-gate-clk",
- NULL
+static const struct device_compatible_entry clock_types[] = {
+ { .compat = "fixed-clock", .value = CYCV_CLK_TYPE_FIXED },
+ { .compat = "altr,socfpga-pll-clock", .value = CYCV_CLK_TYPE_PLL },
+ { .compat = "altr,socfpga-perip-clk", .value = CYCV_CLK_TYPE_PERIP },
+ { .compat = "altr,socfpga-gate-clk", .value = CYCV_CLK_TYPE_PERIP },
+ { 0 }
};
static void
@@ -234,18 +238,22 @@
clk->parent_id = 0;
clk->refcnt = 0;
- if (of_compatible(handle, cycv_clkmgr_compat_fixed) != -1) {
- clk->type = CYCV_CLK_TYPE_FIXED;
+ const struct device_compatible_entry * const dce =
+ of_search_compatible(handle, clock_types);
+ if (dce == NULL)
+ goto err;
+ clk->type = dce->value;
+
+ if (clk->type == CYCV_CLK_TYPE_FIXED) {
if (of_getprop_uint32(handle, "clock-frequency",
&clk->u.fixed_freq) == 0) {
flags |= CYCV_CLK_FLAG_IS_AVAIL;
}
- } else if (of_compatible(handle, cycv_clkmgr_compat_pll) != -1) {
+ } else if (clk->type == CYCV_CLK_TYPE_PLL) {
if (fdtbus_get_reg(handle, 0, &clk->u.pll_addr, NULL) != 0)
goto err;
- clk->type = CYCV_CLK_TYPE_PLL;
flags |= CYCV_CLK_FLAG_IS_AVAIL;
- } else if (of_compatible(handle, cycv_clkmgr_compat_perip) != -1) {
+ } else if (clk->type == CYCV_CLK_TYPE_PERIP) {
if (of_getprop_uint32(handle, "fixed-divider",
&clk->u.fixed_div) == 0) {
clk->type = CYCV_CLK_TYPE_FIXED_DIV;
Home |
Main Index |
Thread Index |
Old Index