fwupd/plugins/logitech-hidpp/fu-plugin-logitech-hidpp.c
Richard Hughes d3d7cfa816 Add plugin quirk keys earlier in the startup process
This allows creating the silo when starting the engine with custom
plugin keys such as WacomI2cFlashBaseAddr.

If we move the plugin initialization earlier then we don't get the
HwID matches, so we really do have to split this into a 4-stage startup,
e.g. ->load(), ->init(), ->startup() and ->coldplug().
2022-05-09 11:13:52 +01:00

58 lines
1.6 KiB
C

/*
* Copyright (C) 2016 Richard Hughes <richard@hughsie.com>
*
* SPDX-License-Identifier: LGPL-2.1+
*/
#include "config.h"
#include <fwupdplugin.h>
#include "fu-logitech-hidpp-bootloader-nordic.h"
#include "fu-logitech-hidpp-bootloader-texas.h"
#include "fu-logitech-hidpp-common.h"
#include "fu-logitech-hidpp-device.h"
#include "fu-logitech-hidpp-runtime-bolt.h"
#include "fu-logitech-hidpp-runtime-unifying.h"
static gboolean
fu_plugin_logitech_hidpp_startup(FuPlugin *plugin, GError **error)
{
/* check the kernel has CONFIG_HIDRAW */
if (!g_file_test("/sys/class/hidraw", G_FILE_TEST_IS_DIR)) {
g_set_error_literal(error,
FWUPD_ERROR,
FWUPD_ERROR_NOT_SUPPORTED,
"no kernel support for CONFIG_HIDRAW");
return FALSE;
}
return TRUE;
}
static void
fu_plugin_logitech_hidpp_init(FuPlugin *plugin)
{
fu_plugin_add_udev_subsystem(plugin, "hidraw");
fu_plugin_add_rule(plugin, FU_PLUGIN_RULE_CONFLICTS, "unifying");
fu_plugin_add_device_gtype(plugin, FU_TYPE_UNIFYING_BOOTLOADER_NORDIC);
fu_plugin_add_device_gtype(plugin, FU_TYPE_UNIFYING_BOOTLOADER_TEXAS);
fu_plugin_add_device_gtype(plugin, FU_TYPE_HIDPP_RUNTIME_UNIFYING);
fu_plugin_add_device_gtype(plugin, FU_TYPE_HIDPP_DEVICE);
fu_plugin_add_device_gtype(plugin, FU_TYPE_HIDPP_RUNTIME_BOLT);
}
static void
fu_plugin_logitech_hidpp_load(FuContext *ctx)
{
fu_context_add_quirk_key(ctx, "LogitechHidppModelId");
}
void
fu_plugin_init_vfuncs(FuPluginVfuncs *vfuncs)
{
vfuncs->build_hash = FU_BUILD_HASH;
vfuncs->load = fu_plugin_logitech_hidpp_load;
vfuncs->init = fu_plugin_logitech_hidpp_init;
vfuncs->startup = fu_plugin_logitech_hidpp_startup;
}