mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-24 05:04:00 +08:00
[media] s5p-mfc: use one implementation of s5p_mfc_get_new_ctx
Both version of MFC driver use functions with the same body and name. The patch moves them to common location. It also simplifies it. Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Kamil Debski <k.debski@samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
parent
4e9691aa40
commit
05d1d0f020
@ -85,6 +85,26 @@ void set_work_bit_irqsave(struct s5p_mfc_ctx *ctx)
|
||||
spin_unlock_irqrestore(&dev->condlock, flags);
|
||||
}
|
||||
|
||||
int s5p_mfc_get_new_ctx(struct s5p_mfc_dev *dev)
|
||||
{
|
||||
unsigned long flags;
|
||||
int ctx;
|
||||
|
||||
spin_lock_irqsave(&dev->condlock, flags);
|
||||
ctx = dev->curr_ctx;
|
||||
do {
|
||||
ctx = (ctx + 1) % MFC_NUM_CONTEXTS;
|
||||
if (ctx == dev->curr_ctx) {
|
||||
if (!test_bit(ctx, &dev->ctx_work_bits))
|
||||
ctx = -EAGAIN;
|
||||
break;
|
||||
}
|
||||
} while (!test_bit(ctx, &dev->ctx_work_bits));
|
||||
spin_unlock_irqrestore(&dev->condlock, flags);
|
||||
|
||||
return ctx;
|
||||
}
|
||||
|
||||
/* Wake up context wait_queue */
|
||||
static void wake_up_ctx(struct s5p_mfc_ctx *ctx, unsigned int reason,
|
||||
unsigned int err)
|
||||
|
@ -710,6 +710,7 @@ void clear_work_bit(struct s5p_mfc_ctx *ctx);
|
||||
void set_work_bit(struct s5p_mfc_ctx *ctx);
|
||||
void clear_work_bit_irqsave(struct s5p_mfc_ctx *ctx);
|
||||
void set_work_bit_irqsave(struct s5p_mfc_ctx *ctx);
|
||||
int s5p_mfc_get_new_ctx(struct s5p_mfc_dev *dev);
|
||||
|
||||
#define HAS_PORTNUM(dev) (dev ? (dev->variant ? \
|
||||
(dev->variant->port_num ? 1 : 0) : 0) : 0)
|
||||
|
@ -1153,27 +1153,6 @@ static int s5p_mfc_encode_one_frame_v5(struct s5p_mfc_ctx *ctx)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int s5p_mfc_get_new_ctx(struct s5p_mfc_dev *dev)
|
||||
{
|
||||
unsigned long flags;
|
||||
int new_ctx;
|
||||
int cnt;
|
||||
|
||||
spin_lock_irqsave(&dev->condlock, flags);
|
||||
new_ctx = (dev->curr_ctx + 1) % MFC_NUM_CONTEXTS;
|
||||
cnt = 0;
|
||||
while (!test_bit(new_ctx, &dev->ctx_work_bits)) {
|
||||
new_ctx = (new_ctx + 1) % MFC_NUM_CONTEXTS;
|
||||
if (++cnt > MFC_NUM_CONTEXTS) {
|
||||
/* No contexts to run */
|
||||
spin_unlock_irqrestore(&dev->condlock, flags);
|
||||
return -EAGAIN;
|
||||
}
|
||||
}
|
||||
spin_unlock_irqrestore(&dev->condlock, flags);
|
||||
return new_ctx;
|
||||
}
|
||||
|
||||
static void s5p_mfc_run_res_change(struct s5p_mfc_ctx *ctx)
|
||||
{
|
||||
struct s5p_mfc_dev *dev = ctx->dev;
|
||||
|
@ -1507,30 +1507,6 @@ static int s5p_mfc_encode_one_frame_v6(struct s5p_mfc_ctx *ctx)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int s5p_mfc_get_new_ctx(struct s5p_mfc_dev *dev)
|
||||
{
|
||||
unsigned long flags;
|
||||
int new_ctx;
|
||||
int cnt;
|
||||
|
||||
spin_lock_irqsave(&dev->condlock, flags);
|
||||
mfc_debug(2, "Previous context: %d (bits %08lx)\n", dev->curr_ctx,
|
||||
dev->ctx_work_bits);
|
||||
new_ctx = (dev->curr_ctx + 1) % MFC_NUM_CONTEXTS;
|
||||
cnt = 0;
|
||||
while (!test_bit(new_ctx, &dev->ctx_work_bits)) {
|
||||
new_ctx = (new_ctx + 1) % MFC_NUM_CONTEXTS;
|
||||
cnt++;
|
||||
if (cnt > MFC_NUM_CONTEXTS) {
|
||||
/* No contexts to run */
|
||||
spin_unlock_irqrestore(&dev->condlock, flags);
|
||||
return -EAGAIN;
|
||||
}
|
||||
}
|
||||
spin_unlock_irqrestore(&dev->condlock, flags);
|
||||
return new_ctx;
|
||||
}
|
||||
|
||||
static inline void s5p_mfc_run_dec_last_frames(struct s5p_mfc_ctx *ctx)
|
||||
{
|
||||
struct s5p_mfc_dev *dev = ctx->dev;
|
||||
|
Loading…
Reference in New Issue
Block a user