mirror of
https://github.com/hardkernel/kernel_common_drivers.git
synced 2026-06-25 12:03:48 +09:00
57756e2b3c
PD#SWPL-77329 Problem: s4d need porting demod and tuner. Solution: 1.porting dtv-demod. 2.porting dvb-extern. Verify: compile pass, be normal on s905Y4. Change-Id: I1533c15047089a1215e042b064770e11ff2ed21a Signed-off-by: min.yang <min.yang@amlogic.com>
230 lines
5.1 KiB
C
230 lines
5.1 KiB
C
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
|
/*
|
|
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
|
|
*/
|
|
|
|
#include <linux/amlogic/aml_demod_common.h>
|
|
|
|
const char *v4l2_std_to_str(v4l2_std_id std)
|
|
{
|
|
switch (std) {
|
|
case V4L2_STD_PAL_B:
|
|
return "V4L2_STD_PAL_B";
|
|
case V4L2_STD_PAL_B1:
|
|
return "V4L2_STD_PAL_B1";
|
|
case V4L2_STD_PAL_G:
|
|
return "V4L2_STD_PAL_G";
|
|
case V4L2_STD_PAL_H:
|
|
return "V4L2_STD_PAL_H";
|
|
case V4L2_STD_PAL_I:
|
|
return "V4L2_STD_PAL_I";
|
|
case V4L2_STD_PAL_D:
|
|
return "V4L2_STD_PAL_D";
|
|
case V4L2_STD_PAL_D1:
|
|
return "V4L2_STD_PAL_D1";
|
|
case V4L2_STD_PAL_K:
|
|
return "V4L2_STD_PAL_K";
|
|
case V4L2_STD_PAL_M:
|
|
return "V4L2_STD_PAL_M";
|
|
case V4L2_STD_PAL_N:
|
|
return "V4L2_STD_PAL_N";
|
|
case V4L2_STD_PAL_Nc:
|
|
return "V4L2_STD_PAL_Nc";
|
|
case V4L2_STD_PAL_60:
|
|
return "V4L2_STD_PAL_60";
|
|
case V4L2_STD_NTSC_M:
|
|
return "V4L2_STD_NTSC_M";
|
|
case V4L2_STD_NTSC_M_JP:
|
|
return "V4L2_STD_NTSC_M_JP";
|
|
case V4L2_STD_NTSC_443:
|
|
return "V4L2_STD_NTSC_443";
|
|
case V4L2_STD_NTSC_M_KR:
|
|
return "V4L2_STD_NTSC_M_KR";
|
|
case V4L2_STD_SECAM_B:
|
|
return "V4L2_STD_SECAM_B";
|
|
case V4L2_STD_SECAM_D:
|
|
return "V4L2_STD_SECAM_D";
|
|
case V4L2_STD_SECAM_G:
|
|
return "V4L2_STD_SECAM_G";
|
|
case V4L2_STD_SECAM_H:
|
|
return "V4L2_STD_SECAM_H";
|
|
case V4L2_STD_SECAM_K:
|
|
return "V4L2_STD_SECAM_K";
|
|
case V4L2_STD_SECAM_K1:
|
|
return "V4L2_STD_SECAM_K1";
|
|
case V4L2_STD_SECAM_L:
|
|
return "V4L2_STD_SECAM_L";
|
|
case V4L2_STD_SECAM_LC:
|
|
return "V4L2_STD_SECAM_LC";
|
|
case V4L2_STD_ATSC_8_VSB:
|
|
return "V4L2_STD_ATSC_8_VSB";
|
|
case V4L2_STD_ATSC_16_VSB:
|
|
return "V4L2_STD_ATSC_16_VSB";
|
|
case V4L2_COLOR_STD_PAL:
|
|
return "V4L2_COLOR_STD_PAL";
|
|
case V4L2_COLOR_STD_NTSC:
|
|
return "V4L2_COLOR_STD_NTSC";
|
|
case V4L2_COLOR_STD_SECAM:
|
|
return "V4L2_COLOR_STD_SECAM";
|
|
case V4L2_STD_MN:
|
|
return "V4L2_STD_MN";
|
|
case V4L2_STD_B:
|
|
return "V4L2_STD_B";
|
|
case V4L2_STD_GH:
|
|
return "V4L2_STD_GH";
|
|
case V4L2_STD_DK:
|
|
return "V4L2_STD_DK";
|
|
case V4L2_STD_PAL_BG:
|
|
return "V4L2_STD_PAL_BG";
|
|
case V4L2_STD_PAL_DK:
|
|
return "V4L2_STD_PAL_DK";
|
|
case V4L2_STD_PAL:
|
|
return "V4L2_STD_PAL";
|
|
case V4L2_STD_NTSC:
|
|
return "V4L2_STD_NTSC";
|
|
case V4L2_STD_SECAM_DK:
|
|
return "V4L2_STD_SECAM_DK";
|
|
case (V4L2_STD_SECAM_B | V4L2_STD_SECAM_G):
|
|
return "V4L2_STD_SECAM_BG";
|
|
case V4L2_STD_SECAM:
|
|
return "V4L2_STD_SECAM";
|
|
case V4L2_STD_525_60:
|
|
return "V4L2_STD_525_60";
|
|
case V4L2_STD_625_50:
|
|
return "V4L2_STD_625_50";
|
|
case V4L2_STD_ATSC:
|
|
return "V4L2_STD_ATSC";
|
|
case V4L2_STD_ALL:
|
|
return "V4L2_STD_ALL";
|
|
default:
|
|
return "V4L2_STD_UNKNOWN";
|
|
}
|
|
}
|
|
EXPORT_SYMBOL(v4l2_std_to_str);
|
|
|
|
void aml_ktime_get_ts(struct timespec64 *ts)
|
|
{
|
|
ktime_get_ts64(ts);
|
|
}
|
|
EXPORT_SYMBOL(aml_ktime_get_ts);
|
|
|
|
int aml_gpio_direction_output(int gpio, int value)
|
|
{
|
|
return gpio_direction_output(gpio, value);
|
|
}
|
|
EXPORT_SYMBOL(aml_gpio_direction_output);
|
|
|
|
int aml_gpio_direction_input(int gpio)
|
|
{
|
|
return gpio_direction_input(gpio);
|
|
}
|
|
EXPORT_SYMBOL(aml_gpio_direction_input);
|
|
|
|
bool aml_gpio_is_valid(int number)
|
|
{
|
|
return gpio_is_valid(number);
|
|
}
|
|
EXPORT_SYMBOL(aml_gpio_is_valid);
|
|
|
|
int aml_gpio_get_value(int gpio)
|
|
{
|
|
return gpio_get_value(gpio);
|
|
}
|
|
EXPORT_SYMBOL(aml_gpio_get_value);
|
|
|
|
void aml_gpio_set_value(int gpio, int value)
|
|
{
|
|
gpio_set_value(gpio, value);
|
|
}
|
|
EXPORT_SYMBOL(aml_gpio_set_value);
|
|
|
|
void aml_gpio_free(int gpio)
|
|
{
|
|
gpio_free(gpio);
|
|
}
|
|
EXPORT_SYMBOL(aml_gpio_free);
|
|
|
|
int aml_gpio_request(int gpio, const char *label)
|
|
{
|
|
return gpio_request(gpio, label);
|
|
}
|
|
EXPORT_SYMBOL(aml_gpio_request);
|
|
|
|
int aml_demod_gpio_set(int gpio, int dir, int value, const char *label)
|
|
{
|
|
if (gpio_is_valid(gpio)) {
|
|
aml_gpio_request(gpio, label);
|
|
if (dir == GPIOF_DIR_OUT)
|
|
gpio_direction_output(gpio, value);
|
|
else {
|
|
gpio_direction_input(gpio);
|
|
gpio_set_value(gpio, value);
|
|
}
|
|
} else
|
|
return -1;
|
|
|
|
return 0;
|
|
}
|
|
EXPORT_SYMBOL(aml_demod_gpio_set);
|
|
|
|
int aml_demod_gpio_config(struct gpio_config *cfg, const char *label)
|
|
{
|
|
return aml_demod_gpio_set(cfg->pin, cfg->dir, cfg->value, label);
|
|
}
|
|
EXPORT_SYMBOL(aml_demod_gpio_config);
|
|
|
|
struct class *aml_class_create(struct module *owner, const char *name)
|
|
{
|
|
return class_create(owner, name);
|
|
}
|
|
EXPORT_SYMBOL(aml_class_create);
|
|
|
|
void aml_class_destroy(struct class *cls)
|
|
{
|
|
class_destroy(cls);
|
|
}
|
|
EXPORT_SYMBOL(aml_class_destroy);
|
|
|
|
int aml_class_create_file(struct class *class,
|
|
const struct class_attribute *attr)
|
|
{
|
|
return class_create_file(class, attr);
|
|
}
|
|
EXPORT_SYMBOL(aml_class_create_file);
|
|
|
|
int aml_class_register(struct class *class)
|
|
{
|
|
return class_register(class);
|
|
}
|
|
EXPORT_SYMBOL(aml_class_register);
|
|
|
|
void aml_class_unregister(struct class *class)
|
|
{
|
|
return class_unregister(class);
|
|
}
|
|
EXPORT_SYMBOL(aml_class_unregister);
|
|
|
|
int aml_platform_driver_register(struct platform_driver *drv)
|
|
{
|
|
return platform_driver_register(drv);
|
|
}
|
|
EXPORT_SYMBOL(aml_platform_driver_register);
|
|
|
|
void aml_platform_driver_unregister(struct platform_driver *drv)
|
|
{
|
|
platform_driver_unregister(drv);
|
|
}
|
|
EXPORT_SYMBOL(aml_platform_driver_unregister);
|
|
|
|
int aml_platform_device_register(struct platform_device *pdev)
|
|
{
|
|
return platform_device_register(pdev);
|
|
}
|
|
EXPORT_SYMBOL(aml_platform_device_register);
|
|
|
|
void aml_platform_device_unregister(struct platform_device *pdev)
|
|
{
|
|
platform_device_unregister(pdev);
|
|
}
|
|
EXPORT_SYMBOL(aml_platform_device_unregister);
|