Lines Matching defs:fdt
2077 static int clk_stm32_parse_oscillator_fdt(void *fdt, int node, const char *name,
2085 fdt_for_each_subnode(subnode, fdt, node) {
2090 cchar = fdt_get_name(fdt, subnode, &ret);
2100 cuint = fdt_getprop(fdt, subnode, "clock-frequency", &ret);
2107 if (fdt_getprop(fdt, subnode, "st,bypass", NULL) != NULL) {
2111 if (fdt_getprop(fdt, subnode, "st,digbypass", NULL) != NULL) {
2115 if (fdt_getprop(fdt, subnode, "st,css", NULL) != NULL) {
2119 osci->drive = fdt_read_uint32_default(fdt, subnode, "st,drive", LSEDRV_MEDIUM_HIGH);
2127 static int stm32_clk_parse_fdt_all_oscillator(void *fdt, struct stm32_clk_platdata *pdata)
2133 node = fdt_path_offset(fdt, "/clocks");
2146 fdt_err = clk_stm32_parse_oscillator_fdt(fdt, node, name, &pdata->osci[i]);
2157 static int clk_stm32_load_vco_config(void *fdt, int subnode, struct stm32_pll_vco *vco)
2161 err = fdt_read_uint32_array(fdt, subnode, "divmn", (int)PLL_DIV_MN_NB, vco->div_mn);
2166 err = fdt_read_uint32_array(fdt, subnode, "csg", (int)PLL_CSG_NB, vco->csg);
2180 vco->frac = fdt_read_uint32_default(fdt, subnode, "frac", 0);
2182 vco->src = fdt_read_uint32_default(fdt, subnode, "src", UINT32_MAX);
2187 static int clk_stm32_load_output_config(void *fdt, int subnode, struct stm32_pll_output *output)
2191 err = fdt_read_uint32_array(fdt, subnode, "st,pll_div_pqr", (int)PLL_DIV_PQR_NB,
2200 static int clk_stm32_parse_pll_fdt(void *fdt, int subnode, struct stm32_pll_dt_cfg *pll)
2207 cuint = fdt_getprop(fdt, subnode, "st,pll", NULL);
2212 subnode_pll = fdt_node_offset_by_phandle(fdt, fdt32_to_cpu(*cuint));
2217 cuint = fdt_getprop(fdt, subnode_pll, "st,pll_vco", NULL);
2222 subnode_vco = fdt_node_offset_by_phandle(fdt, fdt32_to_cpu(*cuint));
2227 err = clk_stm32_load_vco_config(fdt, subnode_vco, &pll->vco);
2232 err = clk_stm32_load_output_config(fdt, subnode_pll, &pll->output);
2240 static int stm32_clk_parse_fdt_all_pll(void *fdt, int node, struct stm32_clk_platdata *pdata)
2252 subnode = fdt_subnode_offset(fdt, node, name);
2257 err = clk_stm32_parse_pll_fdt(fdt, subnode, pll);
2268 void *fdt = NULL;
2272 if (fdt_get_address(&fdt) == 0) {
2276 node = fdt_node_offset_by_compatible(fdt, -1, DT_RCC_CLK_COMPAT);
2281 err = stm32_clk_parse_fdt_all_oscillator(fdt, pdata);
2286 err = stm32_clk_parse_fdt_all_pll(fdt, node, pdata);
2291 err = stm32_clk_parse_fdt_by_name(fdt, node, "st,clkdiv", pdata->clkdiv, &pdata->nclkdiv);
2296 err = stm32_clk_parse_fdt_by_name(fdt, node, "st,clksrc", pdata->clksrc, &pdata->nclksrc);