Return-Path: Received: from ksp.mff.cuni.cz ([195.113.26.206]:40618 "EHLO atrey.karlin.mff.cuni.cz" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752296Ab0DXFYG (ORCPT ); Sat, 24 Apr 2010 01:24:06 -0400 Date: Sat, 24 Apr 2010 07:24:02 +0200 From: Pavel Machek Subject: Re: [PATCH 1/2] arm: msm: video: add msm_fb.h Message-ID: <20100424052402.GA2054@elf.ucw.cz> References: <> <1272064821-15170-1-git-send-email-dwalker@codeaurora.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1272064821-15170-1-git-send-email-dwalker@codeaurora.org> Sender: linux-arm-msm-owner@vger.kernel.org List-ID: To: Daniel Walker Cc: linux-arm-msm@vger.kernel.org On Fri 2010-04-23 16:20:20, Daniel Walker wrote: > Also drops the old mddi structure, which conflicts with the new > file. > > Signed-off-by: Daniel Walker ACK. > --- > arch/arm/mach-msm/include/mach/board.h | 8 -- > arch/arm/mach-msm/include/mach/msm_fb.h | 147 +++++++++++++++++++++++++++++++ > 2 files changed, 147 insertions(+), 8 deletions(-) > create mode 100644 arch/arm/mach-msm/include/mach/msm_fb.h > > diff --git a/arch/arm/mach-msm/include/mach/board.h b/arch/arm/mach-msm/include/mach/board.h > index 264d62e..864388d 100644 > --- a/arch/arm/mach-msm/include/mach/board.h > +++ b/arch/arm/mach-msm/include/mach/board.h > @@ -19,14 +19,6 @@ > > #include > > -/* platform device data structures */ > - > -struct msm_mddi_platform_data > -{ > - void (*panel_power)(int on); > - unsigned has_vsync_irq:1; > -}; > - > /* common init routines for use by arch/arm/mach-msm/board-*.c */ > > void __init msm_add_devices(void); > diff --git a/arch/arm/mach-msm/include/mach/msm_fb.h b/arch/arm/mach-msm/include/mach/msm_fb.h > new file mode 100644 > index 0000000..1f4fc81 > --- /dev/null > +++ b/arch/arm/mach-msm/include/mach/msm_fb.h > @@ -0,0 +1,147 @@ > +/* arch/arm/mach-msm/include/mach/msm_fb.h > + * > + * Internal shared definitions for various MSM framebuffer parts. > + * > + * Copyright (C) 2007 Google Incorporated > + * > + * This software is licensed under the terms of the GNU General Public > + * License version 2, as published by the Free Software Foundation, and > + * may be copied, distributed, and modified under those terms. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + */ > + > +#ifndef _MSM_FB_H_ > +#define _MSM_FB_H_ > + > +#include > + > +struct mddi_info; > + > +struct msm_fb_data { > + int xres; /* x resolution in pixels */ > + int yres; /* y resolution in pixels */ > + int width; /* disply width in mm */ > + int height; /* display height in mm */ > + unsigned output_format; > +}; > + > +struct msmfb_callback { > + void (*func)(struct msmfb_callback *); > +}; > + > +enum { > + MSM_MDDI_PMDH_INTERFACE, > + MSM_MDDI_EMDH_INTERFACE, > + MSM_EBI2_INTERFACE, > +}; > + > +#define MSMFB_CAP_PARTIAL_UPDATES (1 << 0) > + > +struct msm_panel_data { > + /* turns off the fb memory */ > + int (*suspend)(struct msm_panel_data *); > + /* turns on the fb memory */ > + int (*resume)(struct msm_panel_data *); > + /* turns off the panel */ > + int (*blank)(struct msm_panel_data *); > + /* turns on the panel */ > + int (*unblank)(struct msm_panel_data *); > + void (*wait_vsync)(struct msm_panel_data *); > + void (*request_vsync)(struct msm_panel_data *, struct msmfb_callback *); > + void (*clear_vsync)(struct msm_panel_data *); > + /* from the enum above */ > + unsigned interface_type; > + /* data to be passed to the fb driver */ > + struct msm_fb_data *fb_data; > + > + /* capabilities supported by the panel */ > + uint32_t caps; > +}; > + > +struct msm_mddi_client_data { > + void (*suspend)(struct msm_mddi_client_data *); > + void (*resume)(struct msm_mddi_client_data *); > + void (*activate_link)(struct msm_mddi_client_data *); > + void (*remote_write)(struct msm_mddi_client_data *, uint32_t val, > + uint32_t reg); > + uint32_t (*remote_read)(struct msm_mddi_client_data *, uint32_t reg); > + void (*auto_hibernate)(struct msm_mddi_client_data *, int); > + /* custom data that needs to be passed from the board file to a > + * particular client */ > + void *private_client_data; > + struct resource *fb_resource; > + /* from the list above */ > + unsigned interface_type; > +}; > + > +struct msm_mddi_platform_data { > + unsigned int clk_rate; > + void (*power_client)(struct msm_mddi_client_data *, int on); > + > + /* fixup the mfr name, product id */ > + void (*fixup)(uint16_t *mfr_name, uint16_t *product_id); > + > + struct resource *fb_resource; /*optional*/ > + /* number of clients in the list that follows */ > + int num_clients; > + /* array of client information of clients */ > + struct { > + unsigned product_id; /* mfr id in top 16 bits, product id > + * in lower 16 bits > + */ > + char *name; /* the device name will be the platform > + * device name registered for the client, > + * it should match the name of the associated > + * driver > + */ > + unsigned id; /* id for mddi client device node, will also > + * be used as device id of panel devices, if > + * the client device will have multiple panels > + * space must be left here for them > + */ > + void *client_data; /* required private client data */ > + unsigned int clk_rate; /* optional: if the client requires a > + * different mddi clk rate > + */ > + } client_platform_data[]; > +}; > + > +struct mdp_blit_req; > +struct fb_info; > +struct mdp_device { > + struct device dev; > + void (*dma)(struct mdp_device *mpd, uint32_t addr, > + uint32_t stride, uint32_t w, uint32_t h, uint32_t x, > + uint32_t y, struct msmfb_callback *callback, int interface); > + void (*dma_wait)(struct mdp_device *mdp); > + int (*blit)(struct mdp_device *mdp, struct fb_info *fb, > + struct mdp_blit_req *req); > + void (*set_grp_disp)(struct mdp_device *mdp, uint32_t disp_id); > +}; > + > +struct class_interface; > +int register_mdp_client(struct class_interface *class_intf); > + > +/**** private client data structs go below this line ***/ > + > +struct msm_mddi_bridge_platform_data { > + /* from board file */ > + int (*init)(struct msm_mddi_bridge_platform_data *, > + struct msm_mddi_client_data *); > + int (*uninit)(struct msm_mddi_bridge_platform_data *, > + struct msm_mddi_client_data *); > + /* passed to panel for use by the fb driver */ > + int (*blank)(struct msm_mddi_bridge_platform_data *, > + struct msm_mddi_client_data *); > + int (*unblank)(struct msm_mddi_bridge_platform_data *, > + struct msm_mddi_client_data *); > + struct msm_fb_data fb_data; > +}; > + > + > + > +#endif -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html