On Aug 10, 2023, at 1:12 AM, Krzysztof Kozlowski [off-list ref] wrote:
On 09/08/2023 20:02, James Ogletree wrote:
quoted
quoted
quoted
+ 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@cirrus.com>");
+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