Hello Alex,
On Fri, Jan 26, 2024 at 08:56:33AM -0600, Alex Elder wrote:
On 1/25/24 6:09 AM, Uwe Kleine-König wrote:
This function allocates a struct pwm_chip and driver data. Compared to the status quo the split into pwm_chip and driver data is new, otherwise it doesn't change anything relevant (yet).
The intention is that after all drivers are switched to use this allocation function, its possible to add a struct device to struct pwm_chip to properly track the latter's lifetime without touching all drivers again. Proper lifetime tracking is a necessary precondition to introduce character device support for PWMs (that implements atomic setting and doesn't suffer from the sysfs overhead of the /sys/class/pwm userspace support).
The new function pwmchip_priv() (obviously?) only works for chips allocated with devm_pwmchip_alloc().
I think this looks good. Two questions:
- Should you explicitly align the private data? Or do you believe the default alignment (currently pointer size aligned) is adequate?
I'm not aware of a requirement for a higher order alignment (but I might well miss something). I did my tests on arm, nothing exploded there. Maybe the conservative approach of asserting the same alignment as kmalloc would be a good idea. I'll think and research about that.
iio uses ARCH_DMA_MINALIGN, net uses 32 (NETDEV_ALIGN).
- Is there a non-devres version of the allocation function?
Patch #109 introduces a non-devres variant. As it's not used it's a static function though. Can easily be changed is a use case pops up.
Best regards Uwe