/*
 * Copyright 2022, NXP
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#define DT_DRV_COMPAT raydium_rm68200

#include <zephyr/drivers/display.h>
#include <zephyr/drivers/mipi_dsi.h>
#include <zephyr/drivers/gpio.h>
#include <zephyr/logging/log.h>

LOG_MODULE_REGISTER(rm68200, CONFIG_DISPLAY_LOG_LEVEL);

/* DCS Commands */
#define DCS_CMD_PAGE		0xFE
#define DCS_CMD_PAGE_UCS	0x0
#define DCS_CMD_PAGE_SET_PAGE0	0x1
#define DCS_CMD_PAGE_SET_PAGE1	0x2
#define DCS_CMD_PAGE_SET_PAGE2	0x3
#define DCS_CMD_PAGE_SET_PAGE3	0x4

/* MCS Commands */
#define MCS_STBCTR		0x12
#define MCS_SGOPCTR		0x16
#define MCS_SDCTR		0x1A
#define MCS_INVCTR		0x1B
#define MCS_EXT_PWR_IC_TYPE	0x24
#define MCS_EXT_PWR_SET_AVDD	0x25
#define MCS_AVEE_FROM_PFM	0x26
#define MCS_AVDD_FROM_PFM	0x27
#define MCS_SETAVEE		0x29
#define MCS_BT2CTR		0x2B
#define MCS_BT3CTR		0x2F
#define MCS_BT4CTR		0x34
#define MCS_VCMCTR		0x46
#define MCS_SETVGMN		0x52
#define MCS_SETVGSN		0x53
#define MCS_SETVGMP		0x54
#define MCS_SETVGSP		0x55
#define MCS_SW_CTRL		0x5F
#define MCS_GAMMA_VP1		0x60
#define MCS_GAMMA_VP4		0x61
#define MCS_GAMMA_VP8		0x62
#define MCS_GAMMA_VP16		0x63
#define MCS_GAMMA_VP24		0x64
#define MCS_GAMMA_VP52		0x65
#define MCS_GAMMA_VP80		0x66
#define MCS_GAMMA_VP108		0x67
#define MCS_GAMMA_VP147		0x68
#define MCS_GAMMA_VP175		0x69
#define MCS_GAMMA_VP203		0x6A
#define MCS_GAMMA_VP231		0x6B
#define MCS_GAMMA_VP239		0x6C
#define MCS_GAMMA_VP247		0x6D
#define MCS_GAMMA_VP251		0x6E
#define MCS_GAMMA_VP255		0x6F
#define MCS_GAMMA_VN1		0x70
#define MCS_GAMMA_VN4		0x71
#define MCS_GAMMA_VN8		0x72
#define MCS_GAMMA_VN16		0x73
#define MCS_GAMMA_VN24		0x74
#define MCS_GAMMA_VN52		0x75
#define MCS_GAMMA_VN80		0x76
#define MCS_GAMMA_VN108		0x77
#define MCS_GAMMA_VN147		0x78
#define MCS_GAMMA_VN175		0x79
#define MCS_GAMMA_VN203		0x7A
#define MCS_GAMMA_VN231		0x7B
#define MCS_GAMMA_VN239		0x7C
#define MCS_GAMMA_VN247		0x7D
#define MCS_GAMMA_VN251		0x7E
#define MCS_GAMMA_VN255		0x7F
#define MCS_GAMMA_UPDATE	0x80

struct rm68200_config {
	const struct device *mipi_dsi;
	const struct gpio_dt_spec reset_gpio;
	const struct gpio_dt_spec bl_gpio;
	uint8_t num_of_lanes;
	uint8_t pixel_format;
	uint16_t panel_width;
	uint16_t panel_height;
	uint8_t channel;
};

static int rm68200_dcs_write(const struct device *dev, uint8_t cmd, uint8_t *buf,
				 uint8_t len)
{
	const struct rm68200_config *config = dev->config;

	return mipi_dsi_dcs_write(config->mipi_dsi, config->channel, cmd, buf, len);
}

static int rm68200_write(const struct device *dev, const uint16_t x,
			 const uint16_t y,
			 const struct display_buffer_descriptor *desc,
			 const void *buf)
{
	return 0;
}

static int rm68200_read(const struct device *dev, const uint16_t x,
			const uint16_t y,
			const struct display_buffer_descriptor *desc,
			void *buf)
{
	LOG_ERR("Read not implemented");
	return -ENOTSUP;
}

static void *rm68200_get_framebuffer(const struct device *dev)
{
	LOG_ERR("Direct framebuffer access not implemented");
	return NULL;
}

static int rm68200_blanking_off(const struct device *dev)
{
	const struct rm68200_config *config = dev->config;

	if (config->bl_gpio.port != NULL) {
		return gpio_pin_set_dt(&config->bl_gpio, 1);
	} else {
		return -ENOTSUP;
	}
}

static int rm68200_blanking_on(const struct device *dev)
{
	const struct rm68200_config *config = dev->config;

	if (config->bl_gpio.port != NULL) {
		return gpio_pin_set_dt(&config->bl_gpio, 0);
	} else {
		return -ENOTSUP;
	}
}

static int rm68200_set_brightness(const struct device *dev,
				  const uint8_t brightness)
{
	LOG_WRN("Set brightness not implemented");
	return -ENOTSUP;
}

static int rm68200_set_contrast(const struct device *dev,
				const uint8_t contrast)
{
	LOG_ERR("Set contrast not implemented");
	return -ENOTSUP;
}

static int rm68200_set_pixel_format(const struct device *dev,
				    const enum display_pixel_format pixel_format)
{
	const struct rm68200_config *config = dev->config;

	if (pixel_format == config->pixel_format) {
		return 0;
	}
	LOG_ERR("Pixel format change not implemented");
	return -ENOTSUP;
}

static int rm68200_set_orientation(const struct device *dev,
				   const enum display_orientation orientation)
{
	if (orientation == DISPLAY_ORIENTATION_NORMAL) {
		return 0;
	}
	LOG_ERR("Changing display orientation not implemented");
	return -ENOTSUP;
}

static void rm68200_get_capabilities(const struct device *dev,
				     struct display_capabilities *capabilities)
{
	const struct rm68200_config *config = dev->config;

	memset(capabilities, 0, sizeof(struct display_capabilities));
	capabilities->x_resolution = config->panel_width;
	capabilities->y_resolution = config->panel_height;
	capabilities->supported_pixel_formats = config->pixel_format;
	capabilities->current_pixel_format = config->pixel_format;
	capabilities->current_orientation = DISPLAY_ORIENTATION_NORMAL;
}

static const struct display_driver_api rm68200_api = {
	.blanking_on = rm68200_blanking_on,
	.blanking_off = rm68200_blanking_off,
	.write = rm68200_write,
	.read = rm68200_read,
	.get_framebuffer = rm68200_get_framebuffer,
	.set_brightness = rm68200_set_brightness,
	.set_contrast = rm68200_set_contrast,
	.get_capabilities = rm68200_get_capabilities,
	.set_pixel_format = rm68200_set_pixel_format,
	.set_orientation = rm68200_set_orientation,
};

static int rm68200_init(const struct device *dev)
{
	const struct rm68200_config *config = dev->config;
	uint8_t param;
	int ret;
	struct mipi_dsi_device mdev;

	mdev.data_lanes = config->num_of_lanes;
	mdev.pixfmt = config->pixel_format;

	ret = mipi_dsi_attach(config->mipi_dsi, config->channel, &mdev);
	if (ret < 0) {
		LOG_ERR("Could not attach to MIPI-DSI host");
		return ret;
	}

	if (config->reset_gpio.port != NULL) {
		ret = gpio_pin_configure_dt(&config->reset_gpio, GPIO_OUTPUT_INACTIVE);
		if (ret < 0) {
			LOG_ERR("Could not configure reset GPIO (%d)", ret);
			return ret;
		}

		/* Power to the display has been enabled via the regulator fixed api during
		 * regulator init.
		 * reset:0 -> reset:1
		 */
		gpio_pin_set_dt(&config->reset_gpio, 0);
		/* Per datasheet, reset low pulse width should be at least 15usec */
		k_sleep(K_USEC(50));
		gpio_pin_set_dt(&config->reset_gpio, 1);
		/* Per datasheet, it is necessary to wait 5msec after releasing reset */
		k_sleep(K_MSEC(5));
	}

	param = DCS_CMD_PAGE_SET_PAGE0;
	rm68200_dcs_write(dev, DCS_CMD_PAGE, &param, 1);

	param = 0xC0;
	rm68200_dcs_write(dev, MCS_EXT_PWR_IC_TYPE, &param, 1);

	param = 0x53;
	rm68200_dcs_write(dev, MCS_EXT_PWR_SET_AVDD, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, MCS_AVEE_FROM_PFM, &param, 1);

	param = 0xE5;
	rm68200_dcs_write(dev, MCS_BT2CTR, &param, 1);

	param = 0x0A;
	rm68200_dcs_write(dev, MCS_AVDD_FROM_PFM, &param, 1);

	param = 0x0A;
	rm68200_dcs_write(dev, MCS_SETAVEE, &param, 1);

	param = 0x52;
	rm68200_dcs_write(dev, MCS_SGOPCTR, &param, 1);

	param = 0x53;
	rm68200_dcs_write(dev, MCS_BT3CTR, &param, 1);

	param = 0x5A;
	rm68200_dcs_write(dev, MCS_BT4CTR, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, MCS_INVCTR, &param, 1);

	param = 0x0A;
	rm68200_dcs_write(dev, MCS_STBCTR, &param, 1);

	param = 0x06;
	rm68200_dcs_write(dev, MCS_SDCTR, &param, 1);

	param = 0x56;
	rm68200_dcs_write(dev, MCS_VCMCTR, &param, 1);

	param = 0xA0;
	rm68200_dcs_write(dev, MCS_SETVGMN, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, MCS_SETVGSN, &param, 1);

	param = 0xA0;
	rm68200_dcs_write(dev, MCS_SETVGMP, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, MCS_SETVGSP, &param, 1);

	param = 0x10U | (config->num_of_lanes - 1U);
	rm68200_dcs_write(dev, MCS_SW_CTRL, &param, 1);

	param = DCS_CMD_PAGE_SET_PAGE2;
	rm68200_dcs_write(dev, DCS_CMD_PAGE, &param, 1);

	/* There is no description for the below registers in the datasheet */
	param = 0x05;
	rm68200_dcs_write(dev, 0x00, &param, 1);

	param = 0x0B;
	rm68200_dcs_write(dev, 0x02, &param, 1);

	param = 0x0F;
	rm68200_dcs_write(dev, 0x03, &param, 1);

	param = 0x7D;
	rm68200_dcs_write(dev, 0x04, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x05, &param, 1);

	param = 0x50;
	rm68200_dcs_write(dev, 0x06, &param, 1);

	param = 0x05;
	rm68200_dcs_write(dev, 0x07, &param, 1);

	param = 0x16;
	rm68200_dcs_write(dev, 0x08, &param, 1);

	param = 0x0D;
	rm68200_dcs_write(dev, 0x09, &param, 1);

	param = 0x11;
	rm68200_dcs_write(dev, 0x0A, &param, 1);

	param = 0x7D;
	rm68200_dcs_write(dev, 0x0B, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x0C, &param, 1);

	param = 0x50;
	rm68200_dcs_write(dev, 0x0D, &param, 1);

	param = 0x07;
	rm68200_dcs_write(dev, 0x0E, &param, 1);

	param = 0x08;
	rm68200_dcs_write(dev, 0x0F, &param, 1);

	param = 0x01;
	rm68200_dcs_write(dev, 0x10, &param, 1);

	param = 0x02;
	rm68200_dcs_write(dev, 0x11, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x12, &param, 1);

	param = 0x7D;
	rm68200_dcs_write(dev, 0x13, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x14, &param, 1);

	param = 0x85;
	rm68200_dcs_write(dev, 0x15, &param, 1);

	param = 0x08;
	rm68200_dcs_write(dev, 0x16, &param, 1);

	param = 0x03;
	rm68200_dcs_write(dev, 0x17, &param, 1);

	param = 0x04;
	rm68200_dcs_write(dev, 0x18, &param, 1);

	param = 0x05;
	rm68200_dcs_write(dev, 0x19, &param, 1);

	param = 0x06;
	rm68200_dcs_write(dev, 0x1A, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x1B, &param, 1);

	param = 0x7D;
	rm68200_dcs_write(dev, 0x1C, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x1D, &param, 1);

	param = 0x85;
	rm68200_dcs_write(dev, 0x1E, &param, 1);

	param = 0x08;
	rm68200_dcs_write(dev, 0x1F, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x20, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x21, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x22, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x23, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x24, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x25, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x26, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x27, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x28, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x29, &param, 1);

	param = 0x07;
	rm68200_dcs_write(dev, 0x2A, &param, 1);

	param = 0x08;
	rm68200_dcs_write(dev, 0x2B, &param, 1);

	param = 0x01;
	rm68200_dcs_write(dev, 0x2D, &param, 1);

	param = 0x02;
	rm68200_dcs_write(dev, 0x2F, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x30, &param, 1);

	param = 0x40;
	rm68200_dcs_write(dev, 0x31, &param, 1);

	param = 0x05;
	rm68200_dcs_write(dev, 0x32, &param, 1);

	param = 0x08;
	rm68200_dcs_write(dev, 0x33, &param, 1);

	param = 0x54;
	rm68200_dcs_write(dev, 0x34, &param, 1);

	param = 0x7D;
	rm68200_dcs_write(dev, 0x35, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x36, &param, 1);

	param = 0x03;
	rm68200_dcs_write(dev, 0x37, &param, 1);

	param = 0x04;
	rm68200_dcs_write(dev, 0x38, &param, 1);

	param = 0x05;
	rm68200_dcs_write(dev, 0x39, &param, 1);

	param = 0x06;
	rm68200_dcs_write(dev, 0x3A, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x3B, &param, 1);

	param = 0x40;
	rm68200_dcs_write(dev, 0x3D, &param, 1);

	param = 0x05;
	rm68200_dcs_write(dev, 0x3F, &param, 1);

	param = 0x08;
	rm68200_dcs_write(dev, 0x40, &param, 1);

	param = 0x54;
	rm68200_dcs_write(dev, 0x41, &param, 1);

	param = 0x7D;
	rm68200_dcs_write(dev, 0x42, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x43, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x44, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x45, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x46, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x47, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x48, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x49, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x4A, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x4B, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x4C, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x4D, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x4E, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x4F, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x50, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x51, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x52, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x53, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x54, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x55, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x56, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x58, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x59, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x5A, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x5B, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x5C, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x5D, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x5E, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x5F, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x60, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x61, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x62, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x63, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x64, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x65, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x66, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x67, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x68, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x69, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x6A, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x6B, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x6C, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x6D, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x6E, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x6F, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x70, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x71, &param, 1);

	param = 0x20;
	rm68200_dcs_write(dev, 0x72, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x73, &param, 1);

	param = 0x08;
	rm68200_dcs_write(dev, 0x74, &param, 1);

	param = 0x08;
	rm68200_dcs_write(dev, 0x75, &param, 1);

	param = 0x08;
	rm68200_dcs_write(dev, 0x76, &param, 1);

	param = 0x08;
	rm68200_dcs_write(dev, 0x77, &param, 1);

	param = 0x08;
	rm68200_dcs_write(dev, 0x78, &param, 1);

	param = 0x08;
	rm68200_dcs_write(dev, 0x79, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x7A, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x7B, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x7C, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x7D, &param, 1);

	param = 0xBF;
	rm68200_dcs_write(dev, 0x7E, &param, 1);

	param = 0x02;
	rm68200_dcs_write(dev, 0x7F, &param, 1);

	param = 0x06;
	rm68200_dcs_write(dev, 0x80, &param, 1);

	param = 0x14;
	rm68200_dcs_write(dev, 0x81, &param, 1);

	param = 0x10;
	rm68200_dcs_write(dev, 0x82, &param, 1);

	param = 0x16;
	rm68200_dcs_write(dev, 0x83, &param, 1);

	param = 0x12;
	rm68200_dcs_write(dev, 0x84, &param, 1);

	param = 0x08;
	rm68200_dcs_write(dev, 0x85, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0x86, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0x87, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0x88, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0x89, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0x8A, &param, 1);

	param = 0x0C;
	rm68200_dcs_write(dev, 0x8B, &param, 1);

	param = 0x0A;
	rm68200_dcs_write(dev, 0x8C, &param, 1);

	param = 0x0E;
	rm68200_dcs_write(dev, 0x8D, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0x8E, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0x8F, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0x90, &param, 1);

	param = 0x04;
	rm68200_dcs_write(dev, 0x91, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0x92, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0x93, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0x94, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0x95, &param, 1);

	param = 0x05;
	rm68200_dcs_write(dev, 0x96, &param, 1);

	param = 0x01;
	rm68200_dcs_write(dev, 0x97, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0x98, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0x99, &param, 1);

	param = 0x0F;
	rm68200_dcs_write(dev, 0x9A, &param, 1);

	param = 0x0B;
	rm68200_dcs_write(dev, 0x9B, &param, 1);

	param = 0x0D;
	rm68200_dcs_write(dev, 0x9C, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0x9D, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0x9E, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0x9F, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xA0, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xA2, &param, 1);

	param = 0x09;
	rm68200_dcs_write(dev, 0xA3, &param, 1);

	param = 0x13;
	rm68200_dcs_write(dev, 0xA4, &param, 1);

	param = 0x17;
	rm68200_dcs_write(dev, 0xA5, &param, 1);

	param = 0x11;
	rm68200_dcs_write(dev, 0xA6, &param, 1);

	param = 0x15;
	rm68200_dcs_write(dev, 0xA7, &param, 1);

	param = 0x07;
	rm68200_dcs_write(dev, 0xA9, &param, 1);

	param = 0x03;
	rm68200_dcs_write(dev, 0xAA, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xAB, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xAC, &param, 1);

	param = 0x05;
	rm68200_dcs_write(dev, 0xAD, &param, 1);

	param = 0x01;
	rm68200_dcs_write(dev, 0xAE, &param, 1);

	param = 0x17;
	rm68200_dcs_write(dev, 0xAF, &param, 1);

	param = 0x13;
	rm68200_dcs_write(dev, 0xB0, &param, 1);

	param = 0x15;
	rm68200_dcs_write(dev, 0xB1, &param, 1);

	param = 0x11;
	rm68200_dcs_write(dev, 0xB2, &param, 1);

	param = 0x0F;
	rm68200_dcs_write(dev, 0xB3, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xB4, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xB5, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xB6, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xB7, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xB8, &param, 1);

	param = 0x0B;
	rm68200_dcs_write(dev, 0xB9, &param, 1);

	param = 0x0D;
	rm68200_dcs_write(dev, 0xBA, &param, 1);

	param = 0x09;
	rm68200_dcs_write(dev, 0xBB, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xBC, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xBD, &param, 1);

	param = 0x07;
	rm68200_dcs_write(dev, 0xBE, &param, 1);

	param = 0x03;
	rm68200_dcs_write(dev, 0xBF, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xC0, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xC1, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xC2, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xC3, &param, 1);

	param = 0x02;
	rm68200_dcs_write(dev, 0xC4, &param, 1);

	param = 0x06;
	rm68200_dcs_write(dev, 0xC5, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xC6, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xC7, &param, 1);

	param = 0x08;
	rm68200_dcs_write(dev, 0xC8, &param, 1);

	param = 0x0C;
	rm68200_dcs_write(dev, 0xC9, &param, 1);

	param = 0x0A;
	rm68200_dcs_write(dev, 0xCA, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xCB, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xCC, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xCD, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xCE, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xCF, &param, 1);

	param = 0x0E;
	rm68200_dcs_write(dev, 0xD0, &param, 1);

	param = 0x10;
	rm68200_dcs_write(dev, 0xD1, &param, 1);

	param = 0x14;
	rm68200_dcs_write(dev, 0xD2, &param, 1);

	param = 0x12;
	rm68200_dcs_write(dev, 0xD3, &param, 1);

	param = 0x16;
	rm68200_dcs_write(dev, 0xD4, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, 0xD5, &param, 1);

	param = 0x04;
	rm68200_dcs_write(dev, 0xD6, &param, 1);

	param = 0x3F;
	rm68200_dcs_write(dev, 0xD7, &param, 1);

	param = 0x02;
	rm68200_dcs_write(dev, 0xDC, &param, 1);

	param = 0x12;
	rm68200_dcs_write(dev, 0xDE, &param, 1);

	param = 0x0E;
	rm68200_dcs_write(dev, DCS_CMD_PAGE, &param, 1);

	param = 0x75;
	rm68200_dcs_write(dev, 0x01, &param, 1);

	/* Gamma Settings */
	param = DCS_CMD_PAGE_SET_PAGE3;
	rm68200_dcs_write(dev, DCS_CMD_PAGE, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, MCS_GAMMA_VP1, &param, 1);

	param = 0x0C;
	rm68200_dcs_write(dev, MCS_GAMMA_VP4, &param, 1);

	param = 0x12;
	rm68200_dcs_write(dev, MCS_GAMMA_VP8, &param, 1);

	param = 0x0E;
	rm68200_dcs_write(dev, MCS_GAMMA_VP16, &param, 1);

	param = 0x06;
	rm68200_dcs_write(dev, MCS_GAMMA_VP24, &param, 1);

	param = 0x12;
	rm68200_dcs_write(dev, MCS_GAMMA_VP52, &param, 1);

	param = 0x0E;
	rm68200_dcs_write(dev, MCS_GAMMA_VP80, &param, 1);

	param = 0x0B;
	rm68200_dcs_write(dev, MCS_GAMMA_VP108, &param, 1);

	param = 0x15;
	rm68200_dcs_write(dev, MCS_GAMMA_VP147, &param, 1);

	param = 0x0B;
	rm68200_dcs_write(dev, MCS_GAMMA_VP175, &param, 1);

	param = 0x10;
	rm68200_dcs_write(dev, MCS_GAMMA_VP203, &param, 1);

	param = 0x07;
	rm68200_dcs_write(dev, MCS_GAMMA_VP231, &param, 1);

	param = 0x0F;
	rm68200_dcs_write(dev, MCS_GAMMA_VP239, &param, 1);

	param = 0x12;
	rm68200_dcs_write(dev, MCS_GAMMA_VP247, &param, 1);

	param = 0x0C;
	rm68200_dcs_write(dev, MCS_GAMMA_VP251, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, MCS_GAMMA_VP255, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, MCS_GAMMA_VN1, &param, 1);

	param = 0x0C;
	rm68200_dcs_write(dev, MCS_GAMMA_VN4, &param, 1);

	param = 0x12;
	rm68200_dcs_write(dev, MCS_GAMMA_VN8, &param, 1);

	param = 0x0E;
	rm68200_dcs_write(dev, MCS_GAMMA_VN16, &param, 1);

	param = 0x06;
	rm68200_dcs_write(dev, MCS_GAMMA_VN24, &param, 1);

	param = 0x12;
	rm68200_dcs_write(dev, MCS_GAMMA_VN52, &param, 1);

	param = 0x0E;
	rm68200_dcs_write(dev, MCS_GAMMA_VN80, &param, 1);

	param = 0x0B;
	rm68200_dcs_write(dev, MCS_GAMMA_VN108, &param, 1);

	param = 0x15;
	rm68200_dcs_write(dev, MCS_GAMMA_VN147, &param, 1);

	param = 0x0B;
	rm68200_dcs_write(dev, MCS_GAMMA_VN175, &param, 1);

	param = 0x10;
	rm68200_dcs_write(dev, MCS_GAMMA_VN203, &param, 1);

	param = 0x07;
	rm68200_dcs_write(dev, MCS_GAMMA_VN231, &param, 1);

	param = 0x0F;
	rm68200_dcs_write(dev, MCS_GAMMA_VN239, &param, 1);

	param = 0x12;
	rm68200_dcs_write(dev, MCS_GAMMA_VN247, &param, 1);

	param = 0x0C;
	rm68200_dcs_write(dev, MCS_GAMMA_VN251, &param, 1);

	param = 0x00;
	rm68200_dcs_write(dev, MCS_GAMMA_VN255, &param, 1);

	/* Page 0 */
	param = DCS_CMD_PAGE_UCS;
	rm68200_dcs_write(dev, DCS_CMD_PAGE, &param, 1);

	rm68200_dcs_write(dev, MIPI_DCS_EXIT_SLEEP_MODE, NULL, 0);

	k_sleep(K_MSEC(200));

	rm68200_dcs_write(dev, MIPI_DCS_SET_DISPLAY_ON, NULL, 0);

	k_sleep(K_MSEC(100));

	rm68200_dcs_write(dev, MIPI_DCS_WRITE_MEMORY_START, NULL, 0);

	param = 0x00;
	rm68200_dcs_write(dev, MIPI_DCS_SET_TEAR_ON, &param, 1);

	k_sleep(K_MSEC(200));

	if (config->bl_gpio.port != NULL) {
		ret = gpio_pin_configure_dt(&config->bl_gpio, GPIO_OUTPUT_ACTIVE);
		if (ret < 0) {
			LOG_ERR("Could not configure bl GPIO (%d)", ret);
			return ret;
		}
	}

	return 0;
}

#define RM68200_PANEL(id)							\
	static const struct rm68200_config rm68200_config_##id = {		\
		.mipi_dsi = DEVICE_DT_GET(DT_INST_BUS(id)),			\
		.reset_gpio = GPIO_DT_SPEC_INST_GET_OR(id, reset_gpios, {0}),	\
		.bl_gpio = GPIO_DT_SPEC_INST_GET_OR(id, bl_gpios, {0}),		\
		.num_of_lanes = DT_INST_PROP_BY_IDX(id, data_lanes, 0),			\
		.pixel_format = DT_INST_PROP(id, pixel_format),			\
		.panel_width = DT_INST_PROP(id, width),				\
		.panel_height = DT_INST_PROP(id, height),			\
		.channel = DT_INST_REG_ADDR(id),				\
	};									\
	DEVICE_DT_INST_DEFINE(id,						\
			    &rm68200_init,					\
			    NULL,						\
			    NULL,						\
			    &rm68200_config_##id,				\
			    POST_KERNEL,					\
			    CONFIG_APPLICATION_INIT_PRIORITY,			\
			    &rm68200_api);

DT_INST_FOREACH_STATUS_OKAY(RM68200_PANEL)
