From 9370bb92b2d16684ee45cf24e879c93c509162da Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Thu, 19 Dec 2024 01:47:39 +0000 Subject: [PATCH] add wifi6 8852be driver --- kernel/drivers/media/i2c/techpoint/techpoint_tp2855.c | 97 ++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 85 insertions(+), 12 deletions(-) diff --git a/kernel/drivers/media/i2c/techpoint/techpoint_tp2855.c b/kernel/drivers/media/i2c/techpoint/techpoint_tp2855.c index 54a63e2..2d4b7f5 100644 --- a/kernel/drivers/media/i2c/techpoint/techpoint_tp2855.c +++ b/kernel/drivers/media/i2c/techpoint/techpoint_tp2855.c @@ -1,8 +1,8 @@ // SPDX-License-Identifier: GPL-2.0 /* - * techpoint techpoint lib + * techpoint lib * - * Copyright (C) 2021 Rockchip Electronics Co., Ltd. + * Copyright (C) 2023 Rockchip Electronics Co., Ltd. */ #include "techpoint_tp2855.h" @@ -46,12 +46,90 @@ { 0x14, 0x33 }, { 0x14, 0xb3 }, { 0x14, 0x33 }, + // {0x23, 0x02}, //vi test ok // {0x23, 0x00}, }; +static __maybe_unused const struct regval common_setting_594M_720p_1chn_2lane_regs[] = { + {0x40, 0x08}, + {0x01, 0xf0}, + {0x02, 0x01}, + {0x08, 0x0f}, + {0x20, 0x12}, + {0x34, 0x10}, //output vin1&vin2 + {0x15, 0x0c}, + {0x25, 0x08}, + {0x26, 0x06}, + {0x27, 0x11}, + {0x29, 0x0a}, + {0x33, 0x07}, + {0x33, 0x00}, + {0x14, 0x43}, + {0x14, 0xc3}, + {0x14, 0x43}, + + {0x23, 0x02}, //vi test ok + {0x23, 0x00}, +}; + +static __maybe_unused const struct regval common_setting_594M_4ch_2lane_720p_25fps_regs[] = { + { 0x40, 0x08 }, + { 0x01, 0xf0 }, + { 0x02, 0x01 }, + { 0x08, 0x0f }, + {0x20, 0x42}, + {0x34, 0xe4}, //output vin1&vin2 + {0x15, 0x0c}, + {0x25, 0x08}, + {0x26, 0x06}, + {0x27, 0x11}, + {0x29, 0x0a}, + {0x33, 0x07}, + {0x33, 0x00}, + {0x14, 0x43}, + {0x14, 0xc3}, + {0x14, 0x43}, + + {0x23, 0x02}, + {0x23, 0x00}, +}; + static struct techpoint_video_modes supported_modes[] = { - { + {// 4CH 2lane 720p + .bus_fmt = MEDIA_BUS_FMT_UYVY8_2X8, + .width = 1280, + .height = 720, + .max_fps = { + .numerator = 10000, + .denominator = 250000, + }, + .link_freq_value = TP2855_LINK_FREQ_594M, + .common_reg_list = common_setting_594M_4ch_2lane_720p_25fps_regs, + .common_reg_size = ARRAY_SIZE(common_setting_594M_4ch_2lane_720p_25fps_regs), + .bpp = 8, + .lane = 2, + .vc[PAD0] = V4L2_MBUS_CSI2_CHANNEL_0, + .vc[PAD1] = V4L2_MBUS_CSI2_CHANNEL_1, + .vc[PAD2] = V4L2_MBUS_CSI2_CHANNEL_2, + .vc[PAD3] = V4L2_MBUS_CSI2_CHANNEL_3, + }, + {//1 chn 2 lane 720p + .bus_fmt = MEDIA_BUS_FMT_UYVY8_2X8, + .width = 1280, + .height = 720, + .max_fps = { + .numerator = 10000, + .denominator = 300000, + }, + .link_freq_value = TP2855_LINK_FREQ_594M, + .common_reg_list = common_setting_594M_720p_1chn_2lane_regs, + .common_reg_size = ARRAY_SIZE(common_setting_594M_720p_1chn_2lane_regs), + .bpp = 8, + .lane = 2, + .vc[PAD0] = V4L2_MBUS_CSI2_CHANNEL_0, + }, + {//4 chn 4 lane 1080p .bus_fmt = MEDIA_BUS_FMT_UYVY8_2X8, .width = 1920, .height = 1080, @@ -69,7 +147,7 @@ .vc[PAD2] = V4L2_MBUS_CSI2_CHANNEL_2, .vc[PAD3] = V4L2_MBUS_CSI2_CHANNEL_3, }, - { + {//4 chn 4 lane 720p .bus_fmt = MEDIA_BUS_FMT_UYVY8_2X8, .width = 1280, .height = 720, @@ -87,7 +165,7 @@ .vc[PAD2] = V4L2_MBUS_CSI2_CHANNEL_2, .vc[PAD3] = V4L2_MBUS_CSI2_CHANNEL_3, }, - { + {//4 chn 4 lane 576p .bus_fmt = MEDIA_BUS_FMT_UYVY8_2X8, .width = 720, .height = 576, @@ -395,7 +473,7 @@ break; default: dev_info(&client->dev, - "set channel %d UNSUPPORT, default 1080P_25\n", ch); + "set channel %d is not supported, default 1080P_25\n", ch); techpoint_read_reg(client, 0xf5, &tmp); tmp &= ~SYS_MODE[ch]; techpoint_write_reg(client, 0xf5, tmp); @@ -466,27 +544,22 @@ case TP2855_CVSTD_1080P_30: dev_err(&client->dev, "detect channel %d 1080P_30\n", ch); return TECHPOINT_S_RESO_1080P_30; - break; case TP2855_CVSTD_1080P_25: dev_err(&client->dev, "detect channel %d 1080P_25\n", ch); return TECHPOINT_S_RESO_1080P_25; - break; case TP2855_CVSTD_720P_30: dev_err(&client->dev, "detect channel %d 720P_30\n", ch); return TECHPOINT_S_RESO_720P_30; - break; case TP2855_CVSTD_720P_25: dev_err(&client->dev, "detect channel %d 720P_25\n", ch); return TECHPOINT_S_RESO_720P_25; - break; case TP2855_CVSTD_SD: dev_err(&client->dev, "detect channel %d SD\n", ch); return TECHPOINT_S_RESO_SD; default: dev_err(&client->dev, - "detect channel %d UNSUPPORT, default 1080P_25\n", ch); + "detect channel %d is not supported, default 1080P_25\n", ch); return TECHPOINT_S_RESO_1080P_25; - break; } return reso; -- Gitblit v1.6.2