Hi Dhu,
On 3/18/22 2:24 AM, [email protected] wrote:
Dear all,
I am tying to port u-boot to new soc, now i am rewrite my clk driver to use
"CCF" clk driver.
I would recommend against that
https://lore.kernel.org/u-boot/[email protected]/
I have find this api:
- - - - - - - - - - -
struct clk *clk_register_divider(struct device *dev, const char *name,
const char *parent_name, unsigned long flags,
void __iomem *reg, u8 shift, u8 width,
u8 clk_divider_flags)
- - - - - - - - - - -
it seems don't have a agument to pass a divider table(struct clk_div_table),
and it calls a "static" function below and pass a "NULL" pointer to argument
`table'.
(while this function is static, I should not call it in my driver to pass a
divider table.)
- - - - - - - - - - -
static struct clk *_register_divider(struct device *dev, const char *name,
const char *parent_name, unsigned long flags,
void __iomem *reg, u8 shift, u8 width,
u8 clk_divider_flags, const struct clk_div_table *table)
- - - - - - - - - - -
I also grep-ed the `clk_register_divider', there only `drivers/clk/ti/clk-k3.c'
used it.
Also used by drivers/clk/imx/clk.h, but it does not use the divider table
either.
my question is, what is the proper way to register a divider using ccf in
u-boot.
Write it yourself. It's effectively as simple as a for loop over the table. You
can
also send a patch to extend the existing divider code, but I would only
recommend
doing that if you are porting a CCF clock from Linux.
--Sean