// SPDX-License-Identifier: GPL-2.0
/*
 * Mitwell RSQ10 platform driver
 *
 * Copyright (c) TTTECH Industrial AUtomation AG, 2024
 *
 * Author: Helmut Buchsbaum <helmut.buchsbaum@tttech-industrial.com>
 *
 */

#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

#include <linux/dmi.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include "platform-rsq10.h"

static struct platform_device *rsq10_led_platform_device = NULL;
static struct rsq10_platform platform_data = {
	.io_base = RSQ10_IT5121_BASE,
	.led_gpio_offset = RSQ10_IT5121_LED_GPIO
};

static int __init rsq10_init_module(void)
{
	if (dmi_match(DMI_BOARD_NAME, "RSQ10-TT")) {
		/* TTTech variant: MFN-200 */
		platform_data.type = RSQ10_TT;
	} else {
		/* all other RSQ10 variants */
		platform_data.type = RSQ10;
	}

	pr_info("Loading Mitwell %s platform drivers\n", platform_data.type == RSQ10_TT ? "RSQ10-TT" : "RSQ10");

	rsq10_led_platform_device =
		platform_device_register_data(NULL,
			"rsq10_leds", PLATFORM_DEVID_NONE,
			&platform_data, sizeof(struct rsq10_platform));
	if (IS_ERR(rsq10_led_platform_device))
		return PTR_ERR(rsq10_led_platform_device);

	pr_debug("device %s successfully created\n", rsq10_led_platform_device->name);
	return 0;
}

static void __exit rsq10_exit_module(void)
{
	platform_device_unregister(rsq10_led_platform_device);
	rsq10_led_platform_device = NULL;
}


module_init(rsq10_init_module);
module_exit(rsq10_exit_module);

MODULE_LICENSE("GPL v2");
MODULE_AUTHOR("Helmut Buchsbaum <helmut.buchsbaum@tttech-industrial.com>");
MODULE_ALIAS("dmi:*:rnRSQ10*:ct3:*");

