What's the proper use of con_id in clkdev
Michael and Stephen,
Can you help me to understand "#define MAX_CON_ID 16" in clkdev.c? I am trying to use clk_get() to acquire the clock with its name. This fails when the clock name is more than 15 characters. I traced it to this macro.
The reason of using clk_get() is I don't have device tree for my platform until device tree overlay is officially supported. So I use clkdev_add() in the clock driver.
So my issue is with the MAX_CON_ID. Is there a reason to limit it to 16? Wouldn't it be better to use kstrdup() in vclkdev_alloc()?
York
Quoted 6 lines · York Sun
Michael and Stephen,
Can you help me to understand "#define
MAX_CON_ID16" inclkdev.c? I am trying to useclk_get()to acquire the clock with its name. This fails when the clock name is more than 15 characters. I traced it to this macro.
Quoted 7 lines
The reason of using
clk_get()is I don't have device tree for my platform until device tree overlay is officially supported. So I useclkdev_add()in the clock driver.So my issue is with the
MAX_CON_ID. Is there a reason to limit it to 16? Wouldn't it be better to usekstrdup()invclkdev_alloc()?
Mike and I are not the maintainers of clkdev. The maintainer of clkdev is Russell King.
I believe we can't use kstrdup() in vclkdev_alloc() because we don't know if vclkdev_alloc() is called before the slab allocators are up and running (this is why we have a __clkdev_alloc() function). The simplest solution is to use shorter names, can you do that?
Signature · 2 lines
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
Quoted 15 lines · Stephen Boyd
Quoted 6 lines · York Sun
Michael and Stephen,
Can you help me to understand "#define
MAX_CON_ID16" inclkdev.c? I am trying to useclk_get()to acquire the clock with its name. This fails when the clock name is more than 15 characters. I traced it to this macro.Quoted 7 lines
The reason of using
clk_get()is I don't have device tree for my platform until device tree overlay is officially supported. So I useclkdev_add()in the clock driver.So my issue is with the
MAX_CON_ID. Is there a reason to limit it to 16? Wouldn't it be better to usekstrdup()invclkdev_alloc()?
Quoted 8 lines
Mike and I are not the maintainers of clkdev. The maintainer of clkdev is Russell King.
I believe we can't use
kstrdup()invclkdev_alloc()because we don't know ifvclkdev_alloc()is called before the slab allocators are up and running (this is why we have a__clkdev_alloc()function). The simplest solution is to use shorter names, can you do that?
Why does anyone need a _connection_ _id_ longer than 15 characters anyway?
It's not a system clock name - it's supposed to be a device _specific_ clock _input_ name. This statement comes from many years experience, where people have repeatedly passed clk_get(NULL, "global clock name") and eventually run into great problems, ending up having to pass clk connection names through platform data, or clk pointers through platform data. Both are abhorrent.
Use the API as it was designed to be used: always use clk_get(device, "device-input-name") or clk_get_sys("device-name", "device-input-name") and not clk_get(NULL, "global-clock-name").
Signature · 2 lines
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up according to speedtest.net.
Quoted 35 lines · Russell King - ARM Linux
Quoted 15 lines · Stephen Boyd
Quoted 6 lines · York Sun
Michael and Stephen,
Can you help me to understand "#define
MAX_CON_ID16" inclkdev.c? I am trying to useclk_get()to acquire the clock with its name. This fails when the clock name is more than 15 characters. I traced it to this macro.Quoted 7 lines
The reason of using
clk_get()is I don't have device tree for my platform until device tree overlay is officially supported. So I useclkdev_add()in the clock driver.So my issue is with the
MAX_CON_ID. Is there a reason to limit it to 16? Wouldn't it be better to usekstrdup()invclkdev_alloc()?Quoted 8 lines
Mike and I are not the maintainers of clkdev. The maintainer of clkdev is Russell King.
I believe we can't use
kstrdup()invclkdev_alloc()because we don't know ifvclkdev_alloc()is called before the slab allocators are up and running (this is why we have a__clkdev_alloc()function). The simplest solution is to use shorter names, can you do that?Why does anyone need a _connection_ _id_ longer than 15 characters anyway?
It's not a system clock name - it's supposed to be a device _specific_ clock _input_ name. This statement comes from many years experience, where people have repeatedly passed
clk_get(NULL, "global clock name")and eventually run into great problems, ending up having to pass clk connection names through platform data, or clk pointers through platform data. Both are abhorrent.
Quoted 4 lines
Use the API as it was designed to be used: always use
clk_get(device, "device-input-name")orclk_get_sys("device-name", "device-input-name")and notclk_get(NULL, "global-clock-name").
Thanks to all for the guidance.
York