| /* |
| * Copyright (C) 2016 Freescale Semiconductor, Inc. All Rights Reserved. |
| * Copyright 2017 NXP |
| * |
| * SPDX-License-Identifier: GPL-2.0+ |
| */ |
| |
| |
| #ifndef __MIPI_DSI_NORTHWEST_H |
| #define __MIPI_DSI_NORTHWEST_H |
| |
| #include <linux/fb.h> |
| |
| #define DSI_CMD_BUF_MAXSIZE (128) |
| |
| /* |
| * device structure for mipi-dsi based lcd panel. |
| * |
| * @name: name of the device to use with this device, |
| * the name will be used for binding driver. |
| * @mode: video mode parameters for the panel. |
| * @bpp: bits per pixel. only 24 bits is supported. |
| * @virtual_ch_id: virtual channel id for this dsi device. |
| * @data_lane_num: the data lane number, max is 2. |
| * @host: pointer to the host driver instance, will be setup |
| * during register device. |
| */ |
| struct mipi_dsi_northwest_panel_device { |
| const char *name; |
| struct fb_videomode mode; |
| int bpp; |
| u32 virtual_ch_id; |
| u32 data_lane_num; |
| |
| struct mipi_dsi_northwest_info *host; |
| }; |
| |
| |
| /* |
| * driver structure for mipi-dsi based lcd panel. |
| * |
| * this structure should be registered by lcd panel driver. |
| * mipi-dsi driver seeks lcd panel registered through name field |
| * and calls these callback functions in appropriate time. |
| * |
| * @name: name of the driver to use with this device, or an |
| * alias for that name. |
| * @mipi_panel_setup: callback pointer for initializing lcd panel based on mipi |
| * dsi interface. |
| */ |
| struct mipi_dsi_northwest_panel_driver { |
| const char *name; |
| |
| int (*mipi_panel_setup)(struct mipi_dsi_northwest_panel_device *panel_dev); |
| }; |
| |
| /* |
| * mipi-dsi northwest driver information structure, holds useful data for the driver. |
| */ |
| struct mipi_dsi_northwest_info { |
| u32 mmio_base; |
| u32 sim_base; |
| int enabled; |
| struct mipi_dsi_northwest_panel_device *dsi_panel_dev; |
| struct mipi_dsi_northwest_panel_driver *dsi_panel_drv; |
| |
| int (*mipi_dsi_pkt_write)(struct mipi_dsi_northwest_info *mipi_dsi, |
| u8 data_type, const u32 *buf, int len); |
| }; |
| |
| /* Setup mipi dsi host driver instance, with base address and SIM address provided */ |
| int mipi_dsi_northwest_setup(u32 base_addr, u32 sim_addr); |
| |
| /* Create a LCD panel device, will search the panel driver to bind with them */ |
| int mipi_dsi_northwest_register_panel_device(struct mipi_dsi_northwest_panel_device *panel_dev); |
| |
| /* Register a LCD panel driver, will search the panel device to bind with them */ |
| int mipi_dsi_northwest_register_panel_driver(struct mipi_dsi_northwest_panel_driver *panel_drv); |
| |
| /* Enable the mipi dsi display */ |
| int mipi_dsi_northwest_enable(void); |
| |
| /* Disable and shutdown the mipi dsi display */ |
| int mipi_dsi_northwest_shutdown(void); |
| |
| void hx8363_init(void); |
| |
| #endif |