#ifndef __MBX_FB_H #define __MBX_FB_H #include #include struct mbxfb_val { unsigned int defval; unsigned int min; unsigned int max; }; struct fb_info; struct mbxfb_platform_data { /* Screen info */ struct mbxfb_val xres; struct mbxfb_val yres; struct mbxfb_val bpp; /* Memory info */ unsigned long memsize; /* if 0 use ODFB? */ unsigned long timings1; unsigned long timings2; unsigned long timings3; int (*probe)(struct fb_info *fb); int (*remove)(struct fb_info *fb); }; /* planar */ #define MBXFB_FMT_YUV16 0 #define MBXFB_FMT_YUV12 1 /* packed */ #define MBXFB_FMT_UY0VY1 2 #define MBXFB_FMT_VY0UY1 3 #define MBXFB_FMT_Y0UY1V 4 #define MBXFB_FMT_Y0VY1U 5 struct mbxfb_overlaySetup { __u32 enable; __u32 x, y; __u32 width, height; __u32 fmt; __u32 mem_offset; __u32 scaled_width; __u32 scaled_height; /* Filled by the driver */ __u32 U_offset; __u32 V_offset; __u16 Y_stride; __u16 UV_stride; }; #define MBXFB_ALPHABLEND_NONE 0 #define MBXFB_ALPHABLEND_GLOBAL 1 #define MBXFB_ALPHABLEND_PIXEL 2 #define MBXFB_COLORKEY_DISABLED 0 #define MBXFB_COLORKEY_PREVIOUS 1 #define MBXFB_COLORKEY_CURRENT 2 struct mbxfb_alphaCtl { __u8 overlay_blend_mode; __u8 overlay_colorkey_mode; __u8 overlay_global_alpha; __u32 overlay_colorkey; __u32 overlay_colorkey_mask; __u8 graphics_blend_mode; __u8 graphics_colorkey_mode; __u8 graphics_global_alpha; __u32 graphics_colorkey; __u32 graphics_colorkey_mask; }; #define MBXFB_PLANE_GRAPHICS 0 #define MBXFB_PLANE_VIDEO 1 struct mbxfb_planeorder { __u8 bottom; __u8 top; }; struct mbxfb_reg { __u32 addr; /* offset from 0x03fe 0000 */ __u32 val; /* value */ __u32 mask; /* which bits to touch (for write) */ }; #define MBXFB_IOCX_OVERLAY _IOWR(0xF4, 0x00,struct mbxfb_overlaySetup) #define MBXFB_IOCG_ALPHA _IOR(0xF4, 0x01,struct mbxfb_alphaCtl) #define MBXFB_IOCS_ALPHA _IOW(0xF4, 0x02,struct mbxfb_alphaCtl) #define MBXFB_IOCS_PLANEORDER _IOR(0xF4, 0x03,struct mbxfb_planeorder) #define MBXFB_IOCS_REG _IOW(0xF4, 0x04,struct mbxfb_reg) #define MBXFB_IOCX_REG _IOWR(0xF4, 0x05,struct mbxfb_reg) #endif /* __MBX_FB_H */ 28785b589f686725ff5bc3b9b25'>commitdiff
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2017-01-31 09:37:34 +0100
committerThomas Gleixner <tglx@linutronix.de>2017-01-31 21:47:58 +0100
commit0becc0ae5b42828785b589f686725ff5bc3b9b25 (patch)
treebe6d0e1f37c38ed0a7dd5da2d4b1e93f0fb43101 /sound/soc/codecs/cs42xx8-i2c.c
parent24c2503255d35c269b67162c397a1a1c1e02f6ce (diff)
x86/mce: Make timer handling more robust
Erik reported that on a preproduction hardware a CMCI storm triggers the BUG_ON in add_timer_on(). The reason is that the per CPU MCE timer is started by the CMCI logic before the MCE CPU hotplug callback starts the timer with add_timer_on(). So the timer is already queued which triggers the BUG. Using add_timer_on() is pretty pointless in this code because the timer is strictlty per CPU, initialized as pinned and all operations which arm the timer happen on the CPU to which the timer belongs. Simplify the whole machinery by using mod_timer() instead of add_timer_on() which avoids the problem because mod_timer() can handle already queued timers. Use __start_timer() everywhere so the earliest armed expiry time is preserved. Reported-by: Erik Veijola <erik.veijola@intel.com> Tested-by: Borislav Petkov <bp@alien8.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Borislav Petkov <bp@alien8.de> Cc: Tony Luck <tony.luck@intel.com> Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1701310936080.3457@nanos Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'sound/soc/codecs/cs42xx8-i2c.c')