105 lines
3.2 KiB
C
105 lines
3.2 KiB
C
#include "typesdef.h"
|
|
#include "list.h"
|
|
#include "errno.h"
|
|
#include "dev.h"
|
|
#include "devid.h"
|
|
#include "hal/csc.h"
|
|
|
|
int32 csc_init(struct csc_device *p_csc)
|
|
{
|
|
if (p_csc && ((const struct csc_hal_ops *)p_csc->dev.ops)->init) {
|
|
return ((const struct csc_hal_ops *)p_csc->dev.ops)->init(p_csc);
|
|
}
|
|
return RET_ERR;
|
|
}
|
|
|
|
int32 csc_suspend(struct csc_device *p_csc)
|
|
{
|
|
if (p_csc && ((const struct csc_hal_ops *)p_csc->dev.ops)->suspend) {
|
|
return ((const struct csc_hal_ops *)p_csc->dev.ops)->suspend(p_csc);
|
|
}
|
|
return RET_ERR;
|
|
}
|
|
|
|
int32 csc_resume(struct csc_device *p_csc)
|
|
{
|
|
if (p_csc && ((const struct csc_hal_ops *)p_csc->dev.ops)->resume) {
|
|
return ((const struct csc_hal_ops *)p_csc->dev.ops)->resume(p_csc);
|
|
}
|
|
return RET_ERR;
|
|
}
|
|
|
|
|
|
int32 csc_request_irq(struct csc_device *p_csc, uint32 irq_flags, csc_irq_hdl irq_hdl, uint32 irq_data)
|
|
{
|
|
if (p_csc && ((const struct csc_hal_ops *)p_csc->dev.ops)->request_irq) {
|
|
return ((const struct csc_hal_ops *)p_csc->dev.ops)->request_irq(p_csc, irq_flags, irq_hdl, irq_data);
|
|
}
|
|
return RET_ERR;
|
|
}
|
|
|
|
int32 csc_release_irq(struct csc_device *p_csc, uint32 irq_flags)
|
|
{
|
|
if (p_csc && ((const struct csc_hal_ops *)p_csc->dev.ops)->release_irq) {
|
|
return ((const struct csc_hal_ops *)p_csc->dev.ops)->release_irq(p_csc, irq_flags);
|
|
}
|
|
return RET_ERR;
|
|
}
|
|
|
|
int32 csc_set_format(struct csc_device *p_csc, uint8_t input_format,uint8_t output_format)
|
|
{
|
|
if (p_csc && ((const struct csc_hal_ops *)p_csc->dev.ops)->ioctl) {
|
|
return ((const struct csc_hal_ops *)p_csc->dev.ops)->ioctl(p_csc, CSC_IOCTL_FORMAT_TRAN, input_format, output_format);
|
|
}
|
|
return RET_ERR;
|
|
}
|
|
|
|
int32 csc_set_photo_size(struct csc_device *p_csc, uint32_t w,uint32_t h)
|
|
{
|
|
if (p_csc && ((const struct csc_hal_ops *)p_csc->dev.ops)->ioctl) {
|
|
return ((const struct csc_hal_ops *)p_csc->dev.ops)->ioctl(p_csc, CSC_IOCTL_PHOTO_SIZE, w, h);
|
|
}
|
|
return RET_ERR;
|
|
}
|
|
|
|
int32 csc_set_type(struct csc_device *p_csc, uint8_t type)
|
|
{
|
|
if (p_csc && ((const struct csc_hal_ops *)p_csc->dev.ops)->ioctl) {
|
|
return ((const struct csc_hal_ops *)p_csc->dev.ops)->ioctl(p_csc, CSC_IOCTL_COEF_TYPE, type, 0);
|
|
}
|
|
return RET_ERR;
|
|
}
|
|
|
|
int32 csc_set_input_addr(struct csc_device *p_csc, uint32_t in0,uint32_t in1,uint32_t in2)
|
|
{
|
|
uint32 input_tbl[3];
|
|
input_tbl[0] = in0;
|
|
input_tbl[1] = in1;
|
|
input_tbl[2] = in2;
|
|
if (p_csc && ((const struct csc_hal_ops *)p_csc->dev.ops)->ioctl) {
|
|
return ((const struct csc_hal_ops *)p_csc->dev.ops)->ioctl(p_csc, CSC_IOCTL_INPUT_ADDR, (uint32_t)input_tbl, 0);
|
|
}
|
|
return RET_ERR;
|
|
}
|
|
|
|
int32 csc_set_output_addr(struct csc_device *p_csc, uint32_t out0,uint32_t out1,uint32_t out2)
|
|
{
|
|
uint32 output_tbl[3];
|
|
output_tbl[0] = out0;
|
|
output_tbl[1] = out1;
|
|
output_tbl[2] = out2;
|
|
if (p_csc && ((const struct csc_hal_ops *)p_csc->dev.ops)->ioctl) {
|
|
return ((const struct csc_hal_ops *)p_csc->dev.ops)->ioctl(p_csc, CSC_IOCTL_OUTPUT_ADDR, (uint32_t)output_tbl, 0);
|
|
}
|
|
return RET_ERR;
|
|
}
|
|
|
|
int32 csc_start_run(struct csc_device *p_csc)
|
|
{
|
|
if (p_csc && ((const struct csc_hal_ops *)p_csc->dev.ops)->ioctl) {
|
|
return ((const struct csc_hal_ops *)p_csc->dev.ops)->ioctl(p_csc, CSC_IOCTL_KICK_RUN, 0, 0);
|
|
}
|
|
return RET_ERR;
|
|
}
|
|
|