Hi Hans,

Thanks for the express comments!

<cut>

>> +
>> +struct vidc_core {
>> +    struct list_head list;
>> +    void __iomem *base;
>> +    int irq;
>> +    struct clk *clks[VIDC_CLKS_NUM_MAX];
>> +    struct mutex lock;
>> +    struct hfi_core hfi;
>> +    struct video_device vdev_dec;
>> +    struct video_device vdev_enc;
> 
> I know that many drivers embed struct video_device, but this can cause subtle
> refcounting problems. I recommend changing this to a pointer and using 
> video_device_alloc().
> 
> I have plans to reorganize the way video_devices are allocated and registered 
> in
> the near future, and you might just as well prepare this driver for that by 
> switching
> to a pointer.

OK, thanks for the info, I will change to pointers.

<cut>

>> +
>> +int vidc_set_color_format(struct vidc_inst *inst, u32 type, u32 pixfmt)
>> +{
>> +    struct hfi_uncompressed_format_select fmt;
>> +    struct hfi_core *hfi = &inst->core->hfi;
>> +    u32 ptype = HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT;
>> +    int ret;
>> +
>> +    fmt.buffer_type = type;
>> +
>> +    switch (pixfmt) {
>> +    case V4L2_PIX_FMT_NV12:
>> +            fmt.format = HFI_COLOR_FORMAT_NV12;
>> +            break;
>> +    case V4L2_PIX_FMT_NV21:
>> +            fmt.format = HFI_COLOR_FORMAT_NV21;
>> +            break;
>> +    default:
>> +            return -ENOTSUPP;
> 
> I'm not really sure how this error code is used, but normally -EINVAL is 
> returned
> for invalid pixel formats. -ENOTSUPP is not used by V4L2.
> 

you are right, I need to change this to EINVAL.

-- 
regards,
Stan

Reply via email to