arch: cxd56: Follow interface change of set_buf() operation
set_buf() operation is changed to have the argument about format. Follow the change.
This commit is contained in:
parent
8de922186e
commit
3b3f2d97e9
@ -978,14 +978,36 @@ static int cxd56_cisif_validate_buf(struct imgdata_s *data,
|
|||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int32_t cisif_get_mode(uint8_t nr_datafmts,
|
||||||
|
imgdata_format_t *datafmts)
|
||||||
|
{
|
||||||
|
switch (datafmts[IMGDATA_FMT_MAIN].pixelformat)
|
||||||
|
{
|
||||||
|
case IMGDATA_PIX_FMT_UYVY: /* YUV 4:2:2 */
|
||||||
|
case IMGDATA_PIX_FMT_RGB565: /* RGB565 */
|
||||||
|
|
||||||
|
/* CISIF does not distinguish between YUV and RGB */
|
||||||
|
|
||||||
|
return MODE_YUV_TRS_EN;
|
||||||
|
|
||||||
|
case IMGDATA_PIX_FMT_JPEG: /* JPEG */
|
||||||
|
return MODE_JPG_TRS_EN;
|
||||||
|
|
||||||
|
case IMGDATA_PIX_FMT_JPEG_WITH_SUBIMG: /* JPEG + YUV 4:2:2 */
|
||||||
|
return MODE_INTLEV_TRS_EN;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int cxd56_cisif_set_buf(struct imgdata_s *data,
|
static int cxd56_cisif_set_buf(struct imgdata_s *data,
|
||||||
uint8_t nr_datafmts,
|
uint8_t nr_datafmts,
|
||||||
FAR imgdata_format_t *datafmts,
|
imgdata_format_t *datafmts,
|
||||||
uint8_t *addr, uint32_t size)
|
uint8_t *addr, uint32_t size)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
uint32_t mode;
|
int32_t mode;
|
||||||
uint32_t regval;
|
|
||||||
uint16_t w;
|
uint16_t w;
|
||||||
uint16_t h;
|
uint16_t h;
|
||||||
|
|
||||||
@ -995,7 +1017,7 @@ static int cxd56_cisif_set_buf(struct imgdata_s *data,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
mode = cisif_reg_read(CISIF_MODE);
|
mode = cisif_get_mode(nr_datafmts, datafmts);
|
||||||
|
|
||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
@ -1007,18 +1029,19 @@ static int cxd56_cisif_set_buf(struct imgdata_s *data,
|
|||||||
ret = cisif_set_jpg_sarea(addr, size);
|
ret = cisif_set_jpg_sarea(addr, size);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default: /* MODE_INTLEV_TRS_EN */
|
case MODE_INTLEV_TRS_EN:
|
||||||
|
|
||||||
/* Get YUV frame size information */
|
w = datafmts[IMGDATA_FMT_SUB].width;
|
||||||
|
h = datafmts[IMGDATA_FMT_SUB].height;
|
||||||
regval = cisif_reg_read(CISIF_ACT_SIZE);
|
|
||||||
h = (regval >> 16) & 0x1ff;
|
|
||||||
w = regval & 0x01ff;
|
|
||||||
|
|
||||||
ret = cisif_set_intlev_sarea(addr,
|
ret = cisif_set_intlev_sarea(addr,
|
||||||
size,
|
size,
|
||||||
YUV_SIZE(w, h));
|
YUV_SIZE(w, h));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
ret = -EINVAL;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret != OK)
|
if (ret != OK)
|
||||||
|
Loading…
Reference in New Issue
Block a user