Quoting Sugaya, Taichi (2018-12-25 17:35:27) > Hi > > On 2018/11/30 17:31, Stephen Boyd wrote: > >> + init.num_parents = parents; > >> + init.parent_names = parent_names; > >> + > >> + mcm->cname = clk_name; > >> + mcm->parent = 0; > >> + mcm->hw.init = &init; > >> + > >> + clk = clk_register(NULL, &mcm->hw); > >> + if (IS_ERR(clk)) > >> + goto err_clk; > >> + > >> + of_clk_add_provider(node, of_clk_src_simple_get, clk); > >> + return; > >> + > >> +err_clk: > >> + kfree(mcm); > >> +err_mcm: > >> + kfree(parent_names); > >> +} > >> +CLK_OF_DECLARE(m10v_clk_mux, "socionext,milbeaut-m10v-clk-mux", > >> + m10v_clk_mux_setup); > > > > Any chance you can use a platform driver? > > > > Excuse me to re-ask you. > Why do you recommend to use a platform driver? Is that current fad? Not exactly a fad. We've been doing it for some time now. From an older email on the list: Reasons (in no particular order): 1. We get a dev pointer to use with clk_hw_register() 2. We can handle probe defer if some resource is not available 3. Using device model gets us a hook into power management frameworks like runtime PM and system PM for things like suspend and hibernate 4. It encourages a single DT node clk controller style binding instead of a single node per clk style binding 5. We can use non-DT specific functions like devm_ioremap_resource() to map registers and acquire other resources, leading to more portable and generic code 6. We may be able to make the device driver a module, which will make distros happy if we don't have to compile in all these clk drivers to the resulting vmlinux