/* * realview_clk_init() - set up the RealView clock tree */ void __init realview_clk_init(void *sysbase, bool is_pb1176) { struct clk *clk; /* APB clock dummy */ clk = clk_register_fixed_rate(NULL, "apb_pclk", NULL, CLK_IS_ROOT, 0); clk_register_clkdev(clk, "apb_pclk", NULL); /* 24 MHz clock */ clk = clk_register_fixed_rate(NULL, "clk24mhz", NULL, CLK_IS_ROOT, 24000000); clk_register_clkdev(clk, NULL, "dev:uart0"); clk_register_clkdev(clk, NULL, "dev:uart1"); clk_register_clkdev(clk, NULL, "dev:uart2"); clk_register_clkdev(clk, NULL, "fpga:kmi0"); clk_register_clkdev(clk, NULL, "fpga:kmi1"); clk_register_clkdev(clk, NULL, "fpga:mmc0"); clk_register_clkdev(clk, NULL, "dev:ssp0"); if (is_pb1176) { /* * UART3 is on the dev chip in PB1176 * UART4 only exists in PB1176 */ clk_register_clkdev(clk, NULL, "dev:uart3"); clk_register_clkdev(clk, NULL, "dev:uart4"); } else clk_register_clkdev(clk, NULL, "fpga:uart3"); /* FIXME: Dummy clocks to force match with device tree node names */ clk_register_clkdev(clk, NULL, "kmi0"); clk_register_clkdev(clk, NULL, "kmi1"); /* 1 MHz clock */ clk = clk_register_fixed_rate(NULL, "clk1mhz", NULL, CLK_IS_ROOT, 1000000); clk_register_clkdev(clk, NULL, "sp804"); /* ICST VCO clock */ if (is_pb1176) clk = icst_clk_register(NULL, &realview_osc0_desc, sysbase); else clk = icst_clk_register(NULL, &realview_osc4_desc, sysbase); clk_register_clkdev(clk, NULL, "dev:clcd"); clk_register_clkdev(clk, NULL, "issp:clcd"); /* FIXME: Dummy clocks to force match with device tree node names */ clk_register_clkdev(clk, NULL, "clcd"); }
static void __init cm_osc_setup(struct device_node *np, const struct clk_icst_desc *desc) { struct clk *clk = ERR_PTR(-EINVAL); const char *clk_name = np->name; const char *parent_name; if (!cm_base) { /* Remap the core module base if not done yet */ struct device_node *parent; parent = of_get_parent(np); if (!np) { pr_err("no parent on core module clock\n"); return; } cm_base = of_iomap(parent, 0); if (!cm_base) { pr_err("could not remap core module base\n"); return; } } parent_name = of_clk_get_parent_name(np, 0); clk = icst_clk_register(NULL, desc, clk_name, parent_name, cm_base); if (!IS_ERR(clk)) of_clk_add_provider(np, of_clk_src_simple_get, clk); }
/* * integrator_clk_init() - set up the integrator clock tree * @is_cp: pass true if it's the Integrator/CP else AP is assumed */ void __init integrator_clk_init(bool is_cp) { struct clk *clk; /* APB clock dummy */ clk = clk_register_fixed_rate(NULL, "apb_pclk", NULL, CLK_IS_ROOT, 0); clk_register_clkdev(clk, "apb_pclk", NULL); /* UART reference clock */ clk = clk_register_fixed_rate(NULL, "uartclk", NULL, CLK_IS_ROOT, 14745600); clk_register_clkdev(clk, NULL, "uart0"); clk_register_clkdev(clk, NULL, "uart1"); if (is_cp) clk_register_clkdev(clk, NULL, "mmci"); /* 24 MHz clock */ clk = clk_register_fixed_rate(NULL, "clk24mhz", NULL, CLK_IS_ROOT, 24000000); clk_register_clkdev(clk, NULL, "kmi0"); clk_register_clkdev(clk, NULL, "kmi1"); if (!is_cp) clk_register_clkdev(clk, NULL, "ap_timer"); if (!is_cp) return; /* 1 MHz clock */ clk = clk_register_fixed_rate(NULL, "clk1mhz", NULL, CLK_IS_ROOT, 1000000); clk_register_clkdev(clk, NULL, "sp804"); /* ICST VCO clock used on the Integrator/CP CLCD */ clk = icst_clk_register(NULL, &cp_icst_desc, "icst", __io_address(INTEGRATOR_HDR_BASE)); clk_register_clkdev(clk, NULL, "clcd"); }