MLK-18945-2 video: Update mipi dsi northwest to implement bridge interface
Update the mipi_dsi_northwest driver to implement mipi dsi bridge interfaces and register it as a bridge controller. Users can call bridge common interfaces to access the northwest driver, don't need to call its private driver functions. We also add a kconfig entry for this driver, the name is changed to CONFIG_IMX_NORTHWEST_MIPI_DSI Signed-off-by: Ye Li <ye.li@nxp.com> (cherry picked from commit a668cdb1ef5bcef4a574640f5c06ff07520254df)
This commit is contained in:
		
							parent
							
								
									2880a49732
								
							
						
					
					
						commit
						f7a9859569
					
				|  | @ -548,6 +548,14 @@ config IMX_MIPI_DSI_BRIDGE | ||||||
| 	help | 	help | ||||||
| 	  Enable MIPI DSI bridge interface for display controller. | 	  Enable MIPI DSI bridge interface for display controller. | ||||||
| 
 | 
 | ||||||
|  | config IMX_NORTHWEST_MIPI_DSI | ||||||
|  | 	bool "i.MX northwest's MIPI DSI" | ||||||
|  | 	default n | ||||||
|  | 	select IMX_MIPI_DSI_BRIDGE | ||||||
|  | 	depends on VIDEO && MX7ULP | ||||||
|  | 	help | ||||||
|  | 	  Support for i.MX7ULP MIPI DSI controller. | ||||||
|  | 
 | ||||||
| config MXC_EPDC | config MXC_EPDC | ||||||
| 	bool "i.MX EPDC support" | 	bool "i.MX EPDC support" | ||||||
| 	depends on LCD && (MX7 || MX6) | 	depends on LCD && (MX7 || MX6) | ||||||
|  |  | ||||||
|  | @ -63,7 +63,7 @@ obj-$(CONFIG_VIDEO_VADC) += mxc_vadc.o | ||||||
| obj-$(CONFIG_VIDEO_CSI) += mxc_csi.o | obj-$(CONFIG_VIDEO_CSI) += mxc_csi.o | ||||||
| obj-$(CONFIG_VIDEO_PXP) += mxc_pxp.o | obj-$(CONFIG_VIDEO_PXP) += mxc_pxp.o | ||||||
| obj-$(CONFIG_VIDEO_GIS) += mxc_gis.o | obj-$(CONFIG_VIDEO_GIS) += mxc_gis.o | ||||||
| obj-$(CONFIG_MXC_MIPI_DSI_NORTHWEST) += mipi_dsi_northwest.o | obj-$(CONFIG_IMX_NORTHWEST_MIPI_DSI) += mipi_dsi_northwest.o | ||||||
| obj-$(CONFIG_IMX_MIPI_DSI_BRIDGE) += imx_mipi_dsi_bridge.o | obj-$(CONFIG_IMX_MIPI_DSI_BRIDGE) += imx_mipi_dsi_bridge.o | ||||||
| obj-$(CONFIG_HX8363) += hx8363_wvga.o | obj-$(CONFIG_HX8363) += hx8363_wvga.o | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -17,6 +17,7 @@ | ||||||
| #include "mipi_dsi_northwest_regs.h" | #include "mipi_dsi_northwest_regs.h" | ||||||
| #include <mipi_dsi_northwest.h> | #include <mipi_dsi_northwest.h> | ||||||
| #include <mipi_display.h> | #include <mipi_display.h> | ||||||
|  | #include <imx_mipi_dsi_bridge.h> | ||||||
| 
 | 
 | ||||||
| #define MIPI_LCD_SLEEP_MODE_DELAY	(120) | #define MIPI_LCD_SLEEP_MODE_DELAY	(120) | ||||||
| #define MIPI_FIFO_TIMEOUT		250000 /* 250ms */ | #define MIPI_FIFO_TIMEOUT		250000 /* 250ms */ | ||||||
|  | @ -34,6 +35,18 @@ enum mipi_dsi_payload { | ||||||
| 	DSI_PAYLOAD_VIDEO, | 	DSI_PAYLOAD_VIDEO, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | /*
 | ||||||
|  |  * 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_client_dev *dsi_panel_dev; | ||||||
|  | 	struct mipi_dsi_client_driver *dsi_panel_drv; | ||||||
|  | 	struct fb_videomode mode; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| /**
 | /**
 | ||||||
|  * board_mipi_panel_reset - give a reset cycle for mipi dsi panel |  * board_mipi_panel_reset - give a reset cycle for mipi dsi panel | ||||||
|  * |  * | ||||||
|  | @ -141,7 +154,7 @@ static int mipi_dsi_host_init(struct mipi_dsi_northwest_info *mipi_dsi) | ||||||
| { | { | ||||||
| 	uint32_t lane_num; | 	uint32_t lane_num; | ||||||
| 
 | 
 | ||||||
| 	switch (mipi_dsi->dsi_panel_dev->data_lane_num) { | 	switch (mipi_dsi->dsi_panel_dev->lanes) { | ||||||
| 	case 1: | 	case 1: | ||||||
| 		lane_num = 0x0; | 		lane_num = 0x0; | ||||||
| 		break; | 		break; | ||||||
|  | @ -171,9 +184,11 @@ static int mipi_dsi_host_init(struct mipi_dsi_northwest_info *mipi_dsi) | ||||||
| static int mipi_dsi_dpi_init(struct mipi_dsi_northwest_info *mipi_dsi) | static int mipi_dsi_dpi_init(struct mipi_dsi_northwest_info *mipi_dsi) | ||||||
| { | { | ||||||
| 	uint32_t bpp, color_coding, pixel_fmt; | 	uint32_t bpp, color_coding, pixel_fmt; | ||||||
| 	struct fb_videomode *mode = &(mipi_dsi->dsi_panel_dev->mode); | 	struct fb_videomode *mode = &(mipi_dsi->mode); | ||||||
| 
 | 
 | ||||||
| 	bpp = mipi_dsi->dsi_panel_dev->bpp; | 	bpp = mipi_dsi_pixel_format_to_bpp(mipi_dsi->dsi_panel_dev->format); | ||||||
|  | 	if (bpp < 0) | ||||||
|  | 		return -EINVAL; | ||||||
| 
 | 
 | ||||||
| 	writel(mode->xres, mipi_dsi->mmio_base + DPI_PIXEL_PAYLOAD_SIZE); | 	writel(mode->xres, mipi_dsi->mmio_base + DPI_PIXEL_PAYLOAD_SIZE); | ||||||
| 	writel(mode->xres, mipi_dsi->mmio_base + DPI_PIXEL_FIFO_SEND_LEVEL); | 	writel(mode->xres, mipi_dsi->mmio_base + DPI_PIXEL_FIFO_SEND_LEVEL); | ||||||
|  | @ -293,8 +308,8 @@ static int mipi_dsi_enable(struct mipi_dsi_northwest_info *mipi_dsi) | ||||||
| 	mipi_dsi_init_interrupt(mipi_dsi); | 	mipi_dsi_init_interrupt(mipi_dsi); | ||||||
| 
 | 
 | ||||||
| 	/* Call panel driver's setup */ | 	/* Call panel driver's setup */ | ||||||
| 	if (mipi_dsi->dsi_panel_drv->mipi_panel_setup) { | 	if (mipi_dsi->dsi_panel_drv->dsi_client_setup) { | ||||||
| 		ret = mipi_dsi->dsi_panel_drv->mipi_panel_setup(mipi_dsi->dsi_panel_dev); | 		ret = mipi_dsi->dsi_panel_drv->dsi_client_setup(mipi_dsi->dsi_panel_dev); | ||||||
| 		if (ret < 0) { | 		if (ret < 0) { | ||||||
| 			printf("failed to init mipi lcd.\n"); | 			printf("failed to init mipi lcd.\n"); | ||||||
| 			return ret; | 			return ret; | ||||||
|  | @ -393,7 +408,7 @@ static int wait_for_pkt_done(struct mipi_dsi_northwest_info *mipi_dsi, unsigned | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int mipi_dsi_pkt_write(struct mipi_dsi_northwest_info *mipi_dsi, | static int mipi_dsi_pkt_write(struct mipi_dsi_northwest_info *mipi_dsi, | ||||||
| 			u8 data_type, const u32 *buf, int len) | 			u8 data_type, const u8 *buf, int len) | ||||||
| { | { | ||||||
| 	int ret = 0; | 	int ret = 0; | ||||||
| 	const uint8_t *data = (const uint8_t *)buf; | 	const uint8_t *data = (const uint8_t *)buf; | ||||||
|  | @ -437,7 +452,7 @@ static int mipi_dsi_dcs_cmd(struct mipi_dsi_northwest_info *mipi_dsi, | ||||||
| 		buf[0] = cmd; | 		buf[0] = cmd; | ||||||
| 		buf[1] = 0x0; | 		buf[1] = 0x0; | ||||||
| 		err = mipi_dsi_pkt_write(mipi_dsi, | 		err = mipi_dsi_pkt_write(mipi_dsi, | ||||||
| 				MIPI_DSI_DCS_SHORT_WRITE, buf, 0); | 				MIPI_DSI_DCS_SHORT_WRITE, (u8 *)buf, 0); | ||||||
| 		break; | 		break; | ||||||
| 
 | 
 | ||||||
| 	default: | 	default: | ||||||
|  | @ -468,34 +483,11 @@ static void mipi_dsi_shutdown(struct mipi_dsi_northwest_info *mipi_dsi) | ||||||
| 	clrbits_le32(mipi_dsi->sim_base + SIM_SOPT1CFG, DSI_RST_DPI_N); | 	clrbits_le32(mipi_dsi->sim_base + SIM_SOPT1CFG, DSI_RST_DPI_N); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| struct mipi_dsi_northwest_info *dsi_info = NULL; | /* Attach a LCD panel device */ | ||||||
| 
 | int mipi_dsi_northwest_bridge_attach(struct mipi_dsi_bridge_driver *bridge_driver, struct mipi_dsi_client_dev *panel_dev) | ||||||
| int mipi_dsi_northwest_setup(u32 base_addr, u32 sim_addr) |  | ||||||
| { | { | ||||||
| 	if (dsi_info != NULL) { | 	struct mipi_dsi_northwest_info *dsi_info = (struct mipi_dsi_northwest_info *)bridge_driver->driver_private; | ||||||
| 		printf("mipi_dsi_northwest has been initialized.\n"); |  | ||||||
| 		return -EBUSY; |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	dsi_info = (struct mipi_dsi_northwest_info *)malloc(sizeof(struct mipi_dsi_northwest_info)); |  | ||||||
| 	if (!dsi_info) { |  | ||||||
| 		printf("failed to allocate mipi_dsi_northwest_info object.\n"); |  | ||||||
| 		return -ENOMEM; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	dsi_info->mmio_base = base_addr; |  | ||||||
| 	dsi_info->sim_base = sim_addr; |  | ||||||
| 	dsi_info->mipi_dsi_pkt_write = &mipi_dsi_pkt_write; |  | ||||||
| 	dsi_info->dsi_panel_dev = NULL; |  | ||||||
| 	dsi_info->dsi_panel_drv = NULL; |  | ||||||
| 	dsi_info->enabled = 0; |  | ||||||
| 
 |  | ||||||
| 	return 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /* Register a LCD panel device */ |  | ||||||
| int mipi_dsi_northwest_register_panel_device(struct mipi_dsi_northwest_panel_device *panel_dev) |  | ||||||
| { |  | ||||||
| 	if (!panel_dev) { | 	if (!panel_dev) { | ||||||
| 		printf("mipi_dsi_northwest_panel_device is NULL.\n"); | 		printf("mipi_dsi_northwest_panel_device is NULL.\n"); | ||||||
| 		return -EFAULT; | 		return -EFAULT; | ||||||
|  | @ -506,11 +498,6 @@ int mipi_dsi_northwest_register_panel_device(struct mipi_dsi_northwest_panel_dev | ||||||
| 		return -EFAULT; | 		return -EFAULT; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if (!dsi_info) { |  | ||||||
| 		printf("mipi_dsi_northwest is not initialized\n"); |  | ||||||
| 		return -EFAULT; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	if (dsi_info->dsi_panel_drv) { | 	if (dsi_info->dsi_panel_drv) { | ||||||
| 		if (strcmp(panel_dev->name, dsi_info->dsi_panel_drv->name)) { | 		if (strcmp(panel_dev->name, dsi_info->dsi_panel_drv->name)) { | ||||||
| 			printf("The panel device name %s is not for LCD driver %s\n", | 			printf("The panel device name %s is not for LCD driver %s\n", | ||||||
|  | @ -520,14 +507,17 @@ int mipi_dsi_northwest_register_panel_device(struct mipi_dsi_northwest_panel_dev | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	dsi_info->dsi_panel_dev = panel_dev; | 	dsi_info->dsi_panel_dev = panel_dev; | ||||||
| 	panel_dev->host = dsi_info; |  | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* 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) | /* Add a LCD panel driver, will search the panel device to bind with them */ | ||||||
|  | int mipi_dsi_northwest_bridge_add_client_driver(struct mipi_dsi_bridge_driver *bridge_driver, | ||||||
|  | 	struct mipi_dsi_client_driver *panel_drv) | ||||||
| { | { | ||||||
|  | 	struct mipi_dsi_northwest_info *dsi_info = (struct mipi_dsi_northwest_info *)bridge_driver->driver_private; | ||||||
|  | 
 | ||||||
| 	if (!panel_drv) { | 	if (!panel_drv) { | ||||||
| 		printf("mipi_dsi_northwest_panel_driver is NULL.\n"); | 		printf("mipi_dsi_northwest_panel_driver is NULL.\n"); | ||||||
| 		return -EFAULT; | 		return -EFAULT; | ||||||
|  | @ -538,11 +528,6 @@ int mipi_dsi_northwest_register_panel_driver(struct mipi_dsi_northwest_panel_dri | ||||||
| 		return -EFAULT; | 		return -EFAULT; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if (!dsi_info) { |  | ||||||
| 		printf("mipi_dsi_northwest is not initialized\n"); |  | ||||||
| 		return -EFAULT; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	if (dsi_info->dsi_panel_dev) { | 	if (dsi_info->dsi_panel_dev) { | ||||||
| 		if (strcmp(panel_drv->name, dsi_info->dsi_panel_dev->name)) { | 		if (strcmp(panel_drv->name, dsi_info->dsi_panel_dev->name)) { | ||||||
| 			printf("The panel driver name %s is not for LCD device %s\n", | 			printf("The panel driver name %s is not for LCD device %s\n", | ||||||
|  | @ -557,8 +542,10 @@ int mipi_dsi_northwest_register_panel_driver(struct mipi_dsi_northwest_panel_dri | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* Enable the mipi dsi display */ | /* Enable the mipi dsi display */ | ||||||
| int mipi_dsi_northwest_enable(void) | static int mipi_dsi_northwest_bridge_enable(struct mipi_dsi_bridge_driver *bridge_driver) | ||||||
| { | { | ||||||
|  | 	struct mipi_dsi_northwest_info *dsi_info = (struct mipi_dsi_northwest_info *)bridge_driver->driver_private; | ||||||
|  | 
 | ||||||
| 	if (!dsi_info->dsi_panel_dev || !dsi_info->dsi_panel_drv) | 	if (!dsi_info->dsi_panel_dev || !dsi_info->dsi_panel_drv) | ||||||
| 		return -ENODEV; | 		return -ENODEV; | ||||||
| 
 | 
 | ||||||
|  | @ -570,8 +557,10 @@ int mipi_dsi_northwest_enable(void) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* Disable and shutdown the mipi dsi display */ | /* Disable and shutdown the mipi dsi display */ | ||||||
| int mipi_dsi_northwest_shutdown(void) | static int mipi_dsi_northwest_bridge_disable(struct mipi_dsi_bridge_driver *bridge_driver) | ||||||
| { | { | ||||||
|  | 	struct mipi_dsi_northwest_info *dsi_info = (struct mipi_dsi_northwest_info *)bridge_driver->driver_private; | ||||||
|  | 
 | ||||||
| 	if (!dsi_info->enabled) | 	if (!dsi_info->enabled) | ||||||
| 		return 0; | 		return 0; | ||||||
| 
 | 
 | ||||||
|  | @ -582,3 +571,51 @@ int mipi_dsi_northwest_shutdown(void) | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | static int mipi_dsi_northwest_bridge_mode_set(struct mipi_dsi_bridge_driver *bridge_driver, | ||||||
|  | 	struct fb_videomode *fbmode) | ||||||
|  | { | ||||||
|  | 	struct mipi_dsi_northwest_info *dsi_info = (struct mipi_dsi_northwest_info *)bridge_driver->driver_private; | ||||||
|  | 
 | ||||||
|  | 	dsi_info->mode = *fbmode; | ||||||
|  | 
 | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | static int mipi_dsi_northwest_bridge_pkt_write(struct mipi_dsi_bridge_driver *bridge_driver, | ||||||
|  | 			u8 data_type, const u8 *buf, int len) | ||||||
|  | { | ||||||
|  | 	struct mipi_dsi_northwest_info *mipi_dsi = (struct mipi_dsi_northwest_info *)bridge_driver->driver_private; | ||||||
|  | 
 | ||||||
|  | 	return mipi_dsi_pkt_write(mipi_dsi, data_type, buf, len); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | struct mipi_dsi_bridge_driver imx_northwest_dsi_driver = { | ||||||
|  | 	.attach    = mipi_dsi_northwest_bridge_attach, | ||||||
|  | 	.enable   = mipi_dsi_northwest_bridge_enable, | ||||||
|  | 	.disable   = mipi_dsi_northwest_bridge_disable, | ||||||
|  | 	.mode_set   = mipi_dsi_northwest_bridge_mode_set, | ||||||
|  | 	.pkt_write = mipi_dsi_northwest_bridge_pkt_write, | ||||||
|  | 	.add_client_driver = mipi_dsi_northwest_bridge_add_client_driver, | ||||||
|  | 	.name = "imx_northwest_mipi_dsi", | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | int mipi_dsi_northwest_setup(u32 base_addr, u32 sim_addr) | ||||||
|  | { | ||||||
|  | 	struct mipi_dsi_northwest_info *dsi_info; | ||||||
|  | 
 | ||||||
|  | 	dsi_info = (struct mipi_dsi_northwest_info *)malloc(sizeof(struct mipi_dsi_northwest_info)); | ||||||
|  | 	if (!dsi_info) { | ||||||
|  | 		printf("failed to allocate mipi_dsi_northwest_info object.\n"); | ||||||
|  | 		return -ENOMEM; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	dsi_info->mmio_base = base_addr; | ||||||
|  | 	dsi_info->sim_base = sim_addr; | ||||||
|  | 	dsi_info->dsi_panel_dev = NULL; | ||||||
|  | 	dsi_info->dsi_panel_drv = NULL; | ||||||
|  | 	dsi_info->enabled = 0; | ||||||
|  | 
 | ||||||
|  | 	imx_northwest_dsi_driver.driver_private = dsi_info; | ||||||
|  | 	return imx_mipi_dsi_bridge_register_driver(&imx_northwest_dsi_driver); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -11,78 +11,7 @@ | ||||||
| 
 | 
 | ||||||
| #include <linux/fb.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 */ | /* Setup mipi dsi host driver instance, with base address and SIM address provided */ | ||||||
| int mipi_dsi_northwest_setup(u32 base_addr, u32 sim_addr); | 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 | #endif | ||||||
|  |  | ||||||
|  | @ -1403,7 +1403,6 @@ CONFIG_MXC_KPD | ||||||
| CONFIG_MXC_KPD_COLMAX | CONFIG_MXC_KPD_COLMAX | ||||||
| CONFIG_MXC_KPD_ROWMAX | CONFIG_MXC_KPD_ROWMAX | ||||||
| CONFIG_MXC_MCI_REGS_BASE | CONFIG_MXC_MCI_REGS_BASE | ||||||
| CONFIG_MXC_MIPI_DSI_NORTHWEST |  | ||||||
| CONFIG_MXC_NAND_HWECC | CONFIG_MXC_NAND_HWECC | ||||||
| CONFIG_MXC_NAND_IP_REGS_BASE | CONFIG_MXC_NAND_IP_REGS_BASE | ||||||
| CONFIG_MXC_NAND_REGS_BASE | CONFIG_MXC_NAND_REGS_BASE | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue