summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorKe Qinghua <qinghua.ke@freescale.com>2014-04-25 15:24:45 +0800
committerKe Qinghua <qinghua.ke@freescale.com>2014-04-25 15:24:45 +0800
commit581789ede2f71d716cf6a04181b9006105d2fad8 (patch)
treebae7e83fe491993d8f35483011aad8f222dc0bfb /drivers
parentd782a300614be14690be40ddfd11cba5beb81419 (diff)
parentc78c4d7c0c515e98fe81bf0f5e3a183cf52baeea (diff)
Merge remote-tracking branch 'remotes/fsl-linux-sdk/imx_3.10.31_1.1.0_alpha' into imx_3.10.y_android
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/platform/mxc/output/mxc_vout.c18
-rw-r--r--drivers/net/ethernet/freescale/fec_main.c4
2 files changed, 17 insertions, 5 deletions
diff --git a/drivers/media/platform/mxc/output/mxc_vout.c b/drivers/media/platform/mxc/output/mxc_vout.c
index bd7d1f0446f3..6ebecf38e790 100644
--- a/drivers/media/platform/mxc/output/mxc_vout.c
+++ b/drivers/media/platform/mxc/output/mxc_vout.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011-2013 Freescale Semiconductor, Inc. All Rights Reserved.
+ * Copyright (C) 2011-2014 Freescale Semiconductor, Inc. All Rights Reserved.
*/
/*
@@ -577,7 +577,7 @@ static void disp_work_func(struct work_struct *work)
unsigned long flags = 0;
struct ipu_pos ipos;
int ret = 0;
- u32 in_fmt = 0;
+ u32 in_fmt = 0, in_width = 0, in_height = 0;
u32 vdi_cnt = 0;
u32 vdi_frame;
u32 index = 0;
@@ -689,7 +689,11 @@ vdi_frame_rate_double:
}
vout->task.input.paddr = vout->vdoa_task.output.paddr;
in_fmt = vout->task.input.format;
+ in_width = vout->task.input.width;
+ in_height = vout->task.input.height;
vout->task.input.format = vout->vdoa_task.output.format;
+ vout->task.input.width = vout->vdoa_task.output.width;
+ vout->task.input.height = vout->vdoa_task.output.height;
if (vout->task.input.deinterlace.enable) {
tiled_interlaced = 1;
vout->task.input.deinterlace.enable = 0;
@@ -698,8 +702,11 @@ vdi_frame_rate_double:
"tiled queue task\n");
}
ret = ipu_queue_task(&vout->task);
- if ((!vout->tiled_bypass_pp) && tiled_fmt)
+ if ((!vout->tiled_bypass_pp) && tiled_fmt) {
vout->task.input.format = in_fmt;
+ vout->task.input.width = in_width;
+ vout->task.input.height = in_height;
+ }
if (tiled_interlaced)
vout->task.input.deinterlace.enable = 1;
if (ret < 0) {
@@ -1101,6 +1108,7 @@ static inline int vdoaipu_try_task(struct mxc_vout_output *vout)
{
int ret;
int is_1080p_stream;
+ int in_width, in_height;
size_t size;
struct ipu_task *ipu_task = &vout->task;
struct ipu_crop *icrop = &ipu_task->input.crop;
@@ -1146,6 +1154,8 @@ static inline int vdoaipu_try_task(struct mxc_vout_output *vout)
if (is_1080p_stream)
ipu_task->input.crop.h = VALID_HEIGHT_1080P;
in_fmt = ipu_task->input.format;
+ in_width = ipu_task->input.width;
+ in_height = ipu_task->input.height;
ipu_task->input.format = vdoa_task->output.format;
ipu_task->input.height = vdoa_task->output.height;
ipu_task->input.width = vdoa_task->output.width;
@@ -1155,6 +1165,8 @@ static inline int vdoaipu_try_task(struct mxc_vout_output *vout)
if (deinterlace)
ipu_task->input.deinterlace.enable = 1;
ipu_task->input.format = in_fmt;
+ ipu_task->input.width = in_width;
+ ipu_task->input.height = in_height;
return ret;
}
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index b13675cf8975..3447f7c2248d 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -1224,7 +1224,7 @@ fec_enet_interrupt(int irq, void *dev_id)
do {
if (unlikely(!fec_enet_collect_events(fep)))
- return IRQ_NONE;
+ return ret;
if (fep->work_ts && fep->bufdesc_ex) {
ret = IRQ_HANDLED;
@@ -1251,7 +1251,7 @@ fec_enet_interrupt(int irq, void *dev_id)
complete(&fep->mdio_done);
fep->work_mdio = 0;
}
- } while (fec_enet_collect_events(fep));
+ } while (1);
return ret;
}