mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
Merge branch 'for-linus' of git://codeaurora.org/quic/kernel/davidb/linux-msm
* 'for-linus' of git://codeaurora.org/quic/kernel/davidb/linux-msm: (46 commits) msm: scm: Check for interruption immediately msm: scm: Fix improper register assignment msm: scm: Mark inline asm as volatile msm: iommu: Enable HTW L2 redirection on MSM8960 msm: iommu: Don't read from write-only registers msm: iommu: Remove dependency on IDR msm: iommu: Use ASID tagging instead of VMID tagging msm: iommu: Rework clock logic and add IOMMU bus clock control msm: iommu: Clock control for the IOMMU driver msm: mdp: Set the correct pack pattern for XRGB/ARGB msm_fb: Fix framebuffer console msm: mdp: Add support for RGBX 8888 image format. video: msmfb: Put the partial update magic value into the fix_screen struct. msm: clock: Migrate to clkdev msm: clock: Remove references to clk_ops_pcom msm: headsmp.S: Fix section mismatch msm: Use explicit GPLv2 licenses msm: iommu: Enable IOMMU support for MSM8960 msm: iommu: Generalize platform data for multiple targets msm: iommu: Create a Kconfig item for the IOMMU driver ...
This commit is contained in:
commit
6899608533
65 changed files with 1976 additions and 1021 deletions
|
|
@ -449,6 +449,7 @@ int mdp_ppp_blit(const struct mdp_info *mdp, struct mdp_blit_req *req,
|
|||
#define PPP_CFG_MDP_XRGB_8888(dir) PPP_CFG_MDP_ARGB_8888(dir)
|
||||
#define PPP_CFG_MDP_RGBA_8888(dir) PPP_CFG_MDP_ARGB_8888(dir)
|
||||
#define PPP_CFG_MDP_BGRA_8888(dir) PPP_CFG_MDP_ARGB_8888(dir)
|
||||
#define PPP_CFG_MDP_RGBX_8888(dir) PPP_CFG_MDP_ARGB_8888(dir)
|
||||
|
||||
#define PPP_CFG_MDP_Y_CBCR_H2V2(dir) (PPP_##dir##_C2R_8BIT | \
|
||||
PPP_##dir##_C0G_8BIT | \
|
||||
|
|
@ -488,12 +489,14 @@ int mdp_ppp_blit(const struct mdp_info *mdp, struct mdp_blit_req *req,
|
|||
MDP_GET_PACK_PATTERN(0, CLR_R, CLR_G, CLR_B, 8)
|
||||
#define PPP_PACK_PATTERN_MDP_RGB_888 PPP_PACK_PATTERN_MDP_RGB_565
|
||||
#define PPP_PACK_PATTERN_MDP_XRGB_8888 \
|
||||
MDP_GET_PACK_PATTERN(CLR_ALPHA, CLR_R, CLR_G, CLR_B, 8)
|
||||
MDP_GET_PACK_PATTERN(CLR_B, CLR_G, CLR_R, CLR_ALPHA, 8)
|
||||
#define PPP_PACK_PATTERN_MDP_ARGB_8888 PPP_PACK_PATTERN_MDP_XRGB_8888
|
||||
#define PPP_PACK_PATTERN_MDP_RGBA_8888 \
|
||||
MDP_GET_PACK_PATTERN(CLR_ALPHA, CLR_B, CLR_G, CLR_R, 8)
|
||||
#define PPP_PACK_PATTERN_MDP_BGRA_8888 \
|
||||
MDP_GET_PACK_PATTERN(CLR_ALPHA, CLR_R, CLR_G, CLR_B, 8)
|
||||
#define PPP_PACK_PATTERN_MDP_RGBX_8888 \
|
||||
MDP_GET_PACK_PATTERN(CLR_ALPHA, CLR_B, CLR_G, CLR_R, 8)
|
||||
#define PPP_PACK_PATTERN_MDP_Y_CBCR_H2V1 \
|
||||
MDP_GET_PACK_PATTERN(0, 0, CLR_CB, CLR_CR, 8)
|
||||
#define PPP_PACK_PATTERN_MDP_Y_CBCR_H2V2 PPP_PACK_PATTERN_MDP_Y_CBCR_H2V1
|
||||
|
|
@ -509,6 +512,7 @@ int mdp_ppp_blit(const struct mdp_info *mdp, struct mdp_blit_req *req,
|
|||
#define PPP_CHROMA_SAMP_MDP_ARGB_8888(dir) PPP_OP_##dir##_CHROMA_RGB
|
||||
#define PPP_CHROMA_SAMP_MDP_RGBA_8888(dir) PPP_OP_##dir##_CHROMA_RGB
|
||||
#define PPP_CHROMA_SAMP_MDP_BGRA_8888(dir) PPP_OP_##dir##_CHROMA_RGB
|
||||
#define PPP_CHROMA_SAMP_MDP_RGBX_8888(dir) PPP_OP_##dir##_CHROMA_RGB
|
||||
#define PPP_CHROMA_SAMP_MDP_Y_CBCR_H2V1(dir) PPP_OP_##dir##_CHROMA_H2V1
|
||||
#define PPP_CHROMA_SAMP_MDP_Y_CBCR_H2V2(dir) PPP_OP_##dir##_CHROMA_420
|
||||
#define PPP_CHROMA_SAMP_MDP_Y_CRCB_H2V1(dir) PPP_OP_##dir##_CHROMA_H2V1
|
||||
|
|
@ -523,6 +527,7 @@ int mdp_ppp_blit(const struct mdp_info *mdp, struct mdp_blit_req *req,
|
|||
[MDP_ARGB_8888] = PPP_##name##_MDP_ARGB_8888,\
|
||||
[MDP_RGBA_8888] = PPP_##name##_MDP_RGBA_8888,\
|
||||
[MDP_BGRA_8888] = PPP_##name##_MDP_BGRA_8888,\
|
||||
[MDP_RGBX_8888] = PPP_##name##_MDP_RGBX_8888,\
|
||||
[MDP_Y_CBCR_H2V1] = PPP_##name##_MDP_Y_CBCR_H2V1,\
|
||||
[MDP_Y_CBCR_H2V2] = PPP_##name##_MDP_Y_CBCR_H2V2,\
|
||||
[MDP_Y_CRCB_H2V1] = PPP_##name##_MDP_Y_CRCB_H2V1,\
|
||||
|
|
@ -536,6 +541,7 @@ int mdp_ppp_blit(const struct mdp_info *mdp, struct mdp_blit_req *req,
|
|||
[MDP_ARGB_8888] = PPP_##name##_MDP_ARGB_8888(dir),\
|
||||
[MDP_RGBA_8888] = PPP_##name##_MDP_RGBA_8888(dir),\
|
||||
[MDP_BGRA_8888] = PPP_##name##_MDP_BGRA_8888(dir),\
|
||||
[MDP_RGBX_8888] = PPP_##name##_MDP_RGBX_8888(dir),\
|
||||
[MDP_Y_CBCR_H2V1] = PPP_##name##_MDP_Y_CBCR_H2V1(dir),\
|
||||
[MDP_Y_CBCR_H2V2] = PPP_##name##_MDP_Y_CBCR_H2V2(dir),\
|
||||
[MDP_Y_CRCB_H2V1] = PPP_##name##_MDP_Y_CRCB_H2V1(dir),\
|
||||
|
|
@ -547,7 +553,8 @@ int mdp_ppp_blit(const struct mdp_info *mdp, struct mdp_blit_req *req,
|
|||
(img == MDP_YCRYCB_H2V1))
|
||||
#define IS_RGB(img) ((img == MDP_RGB_565) | (img == MDP_RGB_888) | \
|
||||
(img == MDP_ARGB_8888) | (img == MDP_RGBA_8888) | \
|
||||
(img == MDP_XRGB_8888) | (img == MDP_BGRA_8888))
|
||||
(img == MDP_XRGB_8888) | (img == MDP_BGRA_8888) | \
|
||||
(img == MDP_RGBX_8888))
|
||||
#define HAS_ALPHA(img) ((img == MDP_ARGB_8888) | (img == MDP_RGBA_8888) | \
|
||||
(img == MDP_BGRA_8888))
|
||||
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@ static uint32_t bytes_per_pixel[] = {
|
|||
[MDP_ARGB_8888] = 4,
|
||||
[MDP_RGBA_8888] = 4,
|
||||
[MDP_BGRA_8888] = 4,
|
||||
[MDP_RGBX_8888] = 4,
|
||||
[MDP_Y_CBCR_H2V1] = 1,
|
||||
[MDP_Y_CBCR_H2V2] = 1,
|
||||
[MDP_Y_CRCB_H2V1] = 1,
|
||||
|
|
|
|||
|
|
@ -81,7 +81,6 @@ struct msmfb_info {
|
|||
spinlock_t update_lock;
|
||||
struct mutex panel_init_lock;
|
||||
wait_queue_head_t frame_wq;
|
||||
struct workqueue_struct *resume_workqueue;
|
||||
struct work_struct resume_work;
|
||||
struct msmfb_callback dma_callback;
|
||||
struct msmfb_callback vsync_callback;
|
||||
|
|
@ -111,7 +110,7 @@ static void msmfb_handle_dma_interrupt(struct msmfb_callback *callback)
|
|||
if (msmfb->sleeping == UPDATING &&
|
||||
msmfb->frame_done == msmfb->update_frame) {
|
||||
DLOG(SUSPEND_RESUME, "full update completed\n");
|
||||
queue_work(msmfb->resume_workqueue, &msmfb->resume_work);
|
||||
schedule_work(&msmfb->resume_work);
|
||||
}
|
||||
spin_unlock_irqrestore(&msmfb->update_lock, irq_flags);
|
||||
wake_up(&msmfb->frame_wq);
|
||||
|
|
@ -220,8 +219,8 @@ restart:
|
|||
|
||||
sleeping = msmfb->sleeping;
|
||||
/* on a full update, if the last frame has not completed, wait for it */
|
||||
if (pan_display && (msmfb->frame_requested != msmfb->frame_done ||
|
||||
sleeping == UPDATING)) {
|
||||
if ((pan_display && msmfb->frame_requested != msmfb->frame_done) ||
|
||||
sleeping == UPDATING) {
|
||||
int ret;
|
||||
spin_unlock_irqrestore(&msmfb->update_lock, irq_flags);
|
||||
ret = wait_event_interruptible_timeout(msmfb->frame_wq,
|
||||
|
|
@ -470,6 +469,18 @@ static void setup_fb_info(struct msmfb_info *msmfb)
|
|||
fb_info->var.yoffset = 0;
|
||||
|
||||
if (msmfb->panel->caps & MSMFB_CAP_PARTIAL_UPDATES) {
|
||||
/*
|
||||
* Set the param in the fixed screen, so userspace can't
|
||||
* change it. This will be used to check for the
|
||||
* capability.
|
||||
*/
|
||||
fb_info->fix.reserved[0] = 0x5444;
|
||||
fb_info->fix.reserved[1] = 0x5055;
|
||||
|
||||
/*
|
||||
* This preloads the value so that if userspace doesn't
|
||||
* change it, it will be a full update
|
||||
*/
|
||||
fb_info->var.reserved[0] = 0x54445055;
|
||||
fb_info->var.reserved[1] = 0;
|
||||
fb_info->var.reserved[2] = (uint16_t)msmfb->xres |
|
||||
|
|
@ -559,12 +570,6 @@ static int msmfb_probe(struct platform_device *pdev)
|
|||
spin_lock_init(&msmfb->update_lock);
|
||||
mutex_init(&msmfb->panel_init_lock);
|
||||
init_waitqueue_head(&msmfb->frame_wq);
|
||||
msmfb->resume_workqueue = create_workqueue("panel_on");
|
||||
if (msmfb->resume_workqueue == NULL) {
|
||||
printk(KERN_ERR "failed to create panel_on workqueue\n");
|
||||
ret = -ENOMEM;
|
||||
goto error_create_workqueue;
|
||||
}
|
||||
INIT_WORK(&msmfb->resume_work, power_on_panel);
|
||||
msmfb->black = kzalloc(msmfb->fb->var.bits_per_pixel*msmfb->xres,
|
||||
GFP_KERNEL);
|
||||
|
|
@ -589,8 +594,6 @@ static int msmfb_probe(struct platform_device *pdev)
|
|||
return 0;
|
||||
|
||||
error_register_framebuffer:
|
||||
destroy_workqueue(msmfb->resume_workqueue);
|
||||
error_create_workqueue:
|
||||
iounmap(fb->screen_base);
|
||||
error_setup_fbmem:
|
||||
framebuffer_release(msmfb->fb);
|
||||
|
|
|
|||
Loading…
Reference in a new issue