Re: [PATCH 2/2] Input: cs40l50 - Initial support for Cirrus Logic CS40L50

From: James Ogletree
Date: Mon Aug 14 2023 - 17:46:11 EST




> On Aug 10, 2023, at 1:12 AM, Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx> wrote:
>
> On 09/08/2023 20:02, James Ogletree wrote:
>>>> + if (cs40l50->vibe_workqueue) {
>>>> + flush_workqueue(cs40l50->vibe_workqueue);
>>>> + destroy_workqueue(cs40l50->vibe_workqueue);
>>>> + }
>>>> +
>>>> + gpiod_set_value_cansleep(cs40l50->reset_gpio, 1);
>>>> + regulator_bulk_disable(ARRAY_SIZE(cs40l50_supplies), cs40l50_supplies);
>>>> +
>>>> + return 0;
>>>> +}
>>>> +EXPORT_SYMBOL_GPL(cs40l50_remove);
>>>> +
>>>> +MODULE_DESCRIPTION("CS40L50 Advanced Haptic Driver");
>>>> +MODULE_AUTHOR("James Ogletree, Cirrus Logic Inc. <james.ogletree@xxxxxxxxxx>");
>>>> +MODULE_LICENSE("GPL");
>>>
>>> I don't think this is a module.
>>
>> It can be compiled as a module with CONFIG_INPUT_CS40L50=m. However, there is a
>> typo in the Kconfig entry description: the module will be called “cs40l50” not “cs40l50-core”.
>> That will be fixed.
>
> Really, *this* unit file can be compiled as module? Where is the
> module_xxx_driver() then?
>

As I understand it, the “module_XXX_driver()” has nothing to do with whether or not the file is built as a module, rather it just provides code to attach the driver to a bus. But this is a bus-agnostic, separate module (not a driver in itself) that provides implementation to cs40l26-i2c or cs40l26-spi drivers, which do contain that macro as they should. This doesn’t appear to be an uncommon pattern.

Regards,

James