#ifndef __VIDEO_SH_MOBILE_MERAM_H__ #define __VIDEO_SH_MOBILE_MERAM_H__ /* For sh_mobile_meram_info.addr_mode */ enum { SH_MOBILE_MERAM_MODE0 = 0, SH_MOBILE_MERAM_MODE1 }; enum { SH_MOBILE_MERAM_PF_NV = 0, SH_MOBILE_MERAM_PF_RGB, SH_MOBILE_MERAM_PF_NV24 }; struct sh_mobile_meram_priv; /* * struct sh_mobile_meram_info - MERAM platform data * @reserved_icbs: Bitmask of reserved ICBs (for instance used through UIO) */ struct sh_mobile_meram_info { int addr_mode; u32 reserved_icbs; struct sh_mobile_meram_priv *priv; struct platform_device *pdev; }; /* icb config */ struct sh_mobile_meram_icb_cfg { unsigned int meram_size; /* MERAM Buffer Size to use */ }; struct sh_mobile_meram_cfg { struct sh_mobile_meram_icb_cfg icb[2]; }; #if defined(CONFIG_FB_SH_MOBILE_MERAM) || \ defined(CONFIG_FB_SH_MOBILE_MERAM_MODULE) unsigned long sh_mobile_meram_alloc(struct sh_mobile_meram_info *meram_dev, size_t size); void sh_mobile_meram_free(struct sh_mobile_meram_info *meram_dev, unsigned long mem, size_t size); void *sh_mobile_meram_cache_alloc(struct sh_mobile_meram_info *dev, const struct sh_mobile_meram_cfg *cfg, unsigned int xres, unsigned int yres, unsigned int pixelformat, unsigned int *pitch); void sh_mobile_meram_cache_free(struct sh_mobile_meram_info *dev, void *data); void sh_mobile_meram_cache_update(struct sh_mobile_meram_info *dev, void *data, unsigned long base_addr_y, unsigned long base_addr_c, unsigned long *icb_addr_y, unsigned long *icb_addr_c); #else static inline unsigned long sh_mobile_meram_alloc(struct sh_mobile_meram_info *meram_dev, size_t size) { return 0; } static inline void sh_mobile_meram_free(struct sh_mobile_meram_info *meram_dev, unsigned long mem, size_t size) { } static inline void * sh_mobile_meram_cache_alloc(struct sh_mobile_meram_info *dev, const struct sh_mobile_meram_cfg *cfg, unsigned int xres, unsigned int yres, unsigned int pixelformat, unsigned int *pitch) { return ERR_PTR(-ENODEV); } static inline void sh_mobile_meram_cache_free(struct sh_mobile_meram_info *dev, void *data) { } static inline void sh_mobile_meram_cache_update(struct sh_mobile_meram_info *dev, void *data, unsigned long base_addr_y, unsigned long base_addr_c, unsigned long *icb_addr_y, unsigned long *icb_addr_c) { } #endif #endif /* __VIDEO_SH_MOBILE_MERAM_H__ */
path: root/include/math-emu/op-2.h
diff options
context:
space:
mode:
authorJohan Hovold <johan@kernel.org>2017-01-30 11:26:38 +0100
committerJiri Kosina <jkosina@suse.cz>2017-01-31 12:59:32 +0100
commit7a7b5df84b6b4e5d599c7289526eed96541a0654 (patch)
treecf7514c7ddf4410fe37ca9099a2785e1cf08fa7d /include/math-emu/op-2.h
parent877a021e08ccb6434718c0cc781fdf943c884cc0 (diff)
HID: cp2112: fix sleep-while-atomic
A recent commit fixing DMA-buffers on stack added a shared transfer buffer protected by a spinlock. This is broken as the USB HID request callbacks can sleep. Fix this up by replacing the spinlock with a mutex. Fixes: 1ffb3c40ffb5 ("HID: cp2112: make transfer buffers DMA capable") Cc: stable <stable@vger.kernel.org> # 4.9 Signed-off-by: Johan Hovold <johan@kernel.org> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'include/math-emu/op-2.h')