mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
Merge commit 'c10152d3e7dd7eea6c9e65cdc8fc97d46692fec1'
* commit 'c10152d3e7dd7eea6c9e65cdc8fc97d46692fec1': media: i2c: sc450ai: add 1344X760 config drm/rockchip: vop2: force to disable cluster-win1 when cluster-win0 is disabled ARM: dts: rockchip: rv1106: add dvbm node to isp media: rockchip: isp: frame start to check and config next buf arm64: dts: rockchip: rk3588-vehicle-evb: set 40ms delay for display mfd: display-serdes: rohm gpio0 support 1MHZ used for pwm mfd: display-serdes: change default pinctrl to init Change-Id: I9d5e4ab36103192d4657c8d4c4bf4e316396700f
This commit is contained in:
@@ -314,18 +314,21 @@
|
||||
rkisp_vir1: rkisp-vir1 {
|
||||
compatible = "rockchip,rkisp-vir";
|
||||
rockchip,hw = <&rkisp>;
|
||||
dvbm = <&rkdvbm>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
rkisp_vir2: rkisp-vir2 {
|
||||
compatible = "rockchip,rkisp-vir";
|
||||
rockchip,hw = <&rkisp>;
|
||||
dvbm = <&rkdvbm>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
rkisp_vir3: rkisp-vir3 {
|
||||
compatible = "rockchip,rkisp-vir";
|
||||
rockchip,hw = <&rkisp>;
|
||||
dvbm = <&rkdvbm>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
||||
@@ -652,6 +652,7 @@
|
||||
02a8 0003
|
||||
02a9 0004
|
||||
02aa 0005
|
||||
02af 0002 //gpio0 1MHZ
|
||||
0045 0080
|
||||
0046 0007
|
||||
0047 0080
|
||||
@@ -880,9 +881,9 @@
|
||||
function = "DES_TO_SER_GPIO3";
|
||||
};
|
||||
|
||||
100ms-delay {
|
||||
40ms-delay {
|
||||
pins = "BU18RL82_GPIO1";
|
||||
function = "DELAY_100MS";
|
||||
function = "DELAY_40MS";
|
||||
};
|
||||
|
||||
lcd-pwr-en {
|
||||
@@ -972,6 +973,7 @@
|
||||
002d 0018
|
||||
0030 0018
|
||||
0033 0018
|
||||
02af 0002 //gpio0 1MHZ
|
||||
0045 0080
|
||||
0046 0007
|
||||
004b 0038
|
||||
@@ -1178,9 +1180,9 @@
|
||||
function = "DES_TO_SER_GPIO3";
|
||||
};
|
||||
|
||||
100ms-delay {
|
||||
40ms-delay {
|
||||
pins = "BU18RL82_GPIO1";
|
||||
function = "DELAY_100MS";
|
||||
function = "DELAY_40MS";
|
||||
};
|
||||
|
||||
lcd-pwr-en {
|
||||
@@ -1290,6 +1292,7 @@
|
||||
0275 0020
|
||||
0296 0004
|
||||
0297 000d
|
||||
02af 0002 //gpio0 1MHZ
|
||||
02b2 00c8
|
||||
02b4 0001
|
||||
02b8 00ff
|
||||
@@ -1487,9 +1490,9 @@
|
||||
function = "DES_TO_SER_GPIO3";
|
||||
};
|
||||
|
||||
100ms-delay {
|
||||
40ms-delay {
|
||||
pins = "BU18RL82_GPIO1";
|
||||
function = "DELAY_100MS";
|
||||
function = "DELAY_40MS";
|
||||
};
|
||||
|
||||
lcd-pwr-en {
|
||||
@@ -1595,6 +1598,7 @@
|
||||
02a8 0003
|
||||
02a9 0004
|
||||
02aa 0005
|
||||
02af 0002 //gpio0 1MHZ
|
||||
0045 0080
|
||||
0046 0007
|
||||
0047 0080
|
||||
@@ -1826,9 +1830,9 @@
|
||||
function = "DES_TO_SER_GPIO3";
|
||||
};
|
||||
|
||||
100ms-delay {
|
||||
40ms-delay {
|
||||
pins = "BU18RL82_GPIO1";
|
||||
function = "DELAY_100MS";
|
||||
function = "DELAY_40MS";
|
||||
};
|
||||
|
||||
lcd-pwr-en {
|
||||
@@ -1930,6 +1934,7 @@
|
||||
0275 0020
|
||||
0296 0004
|
||||
0297 000d
|
||||
02af 0002 //gpio0 1MHZ
|
||||
02b2 00c8
|
||||
02b4 0001
|
||||
02b8 00ff
|
||||
@@ -2198,6 +2203,7 @@
|
||||
002d 0018
|
||||
0030 0018
|
||||
0033 0018
|
||||
02af 0002 //gpio0 1MHZ
|
||||
0045 0080
|
||||
0046 0007
|
||||
004b 0038
|
||||
|
||||
@@ -693,9 +693,9 @@
|
||||
pins = "MAX96752_GPIO2";
|
||||
function = "DES_TXID8_TO_SER";
|
||||
};
|
||||
100ms-delay {
|
||||
40ms-delay {
|
||||
pins = "MAX96752_GPIO15";
|
||||
function = "DELAY_100MS";
|
||||
function = "DELAY_40MS";
|
||||
};
|
||||
lcd-pwr-on {
|
||||
pins = "MAX96752_GPIO3";
|
||||
@@ -823,9 +823,9 @@
|
||||
pins = "MAX96752_GPIO2";
|
||||
function = "DES_TXID14_TO_SER";
|
||||
};
|
||||
100ms-delay {
|
||||
40ms-delay {
|
||||
pins = "MAX96752_GPIO15";
|
||||
function = "DELAY_100MS";
|
||||
function = "DELAY_40MS";
|
||||
};
|
||||
lcd-pwr-on {
|
||||
pins = "MAX96752_GPIO3";
|
||||
@@ -1367,9 +1367,9 @@
|
||||
pins = "MAX96752_GPIO2";
|
||||
function = "DES_TXID1_TO_SER";
|
||||
};
|
||||
100ms-delay {
|
||||
40ms-delay {
|
||||
pins = "MAX96752_GPIO15";
|
||||
function = "DELAY_100MS";
|
||||
function = "DELAY_40MS";
|
||||
};
|
||||
lcd-pwr-on {
|
||||
pins = "MAX96752_GPIO3";
|
||||
@@ -1495,9 +1495,9 @@
|
||||
pins = "MAX96752_GPIO2";
|
||||
function = "DES_TXID4_TO_SER";
|
||||
};
|
||||
100ms-delay {
|
||||
40ms-delay {
|
||||
pins = "MAX96752_GPIO15";
|
||||
function = "DELAY_100MS";
|
||||
function = "DELAY_40MS";
|
||||
};
|
||||
lcd-pwr-on {
|
||||
pins = "MAX96752_GPIO3";
|
||||
@@ -2044,9 +2044,9 @@
|
||||
pins = "MAX96752_GPIO2";
|
||||
function = "DES_TXID1_TO_SER";
|
||||
};
|
||||
100ms-delay {
|
||||
40ms-delay {
|
||||
pins = "MAX96752_GPIO15";
|
||||
function = "DELAY_100MS";
|
||||
function = "DELAY_40MS";
|
||||
};
|
||||
lcd-pwr-on {
|
||||
pins = "MAX96752_GPIO3";
|
||||
@@ -2173,9 +2173,9 @@
|
||||
pins = "MAX96752_GPIO2";
|
||||
function = "DES_TXID4_TO_SER";
|
||||
};
|
||||
100ms-delay {
|
||||
40ms-delay {
|
||||
pins = "MAX96752_GPIO15";
|
||||
function = "DELAY_100MS";
|
||||
function = "DELAY_40MS";
|
||||
};
|
||||
lcd-pwr-on {
|
||||
pins = "MAX96752_GPIO3";
|
||||
|
||||
@@ -683,6 +683,7 @@
|
||||
02a8 0003
|
||||
02a9 0004
|
||||
02aa 0005
|
||||
02af 0002 //gpio0 1MHZ
|
||||
0045 0080
|
||||
0046 0007 //1920
|
||||
004b 00d0
|
||||
@@ -880,9 +881,9 @@
|
||||
function = "DES_TO_SER_GPIO3";
|
||||
};
|
||||
|
||||
100ms-delay {
|
||||
40ms-delay {
|
||||
pins = "BU18RL82_GPIO1";
|
||||
function = "DELAY_100MS";
|
||||
function = "DELAY_40MS";
|
||||
};
|
||||
|
||||
lcd-pwr-en {
|
||||
@@ -1022,6 +1023,7 @@
|
||||
02a8 0003
|
||||
02a9 0004
|
||||
02aa 0005
|
||||
02af 0002 //gpio0 1MHZ
|
||||
0045 0080
|
||||
0046 0007 //1920
|
||||
004b 00d0
|
||||
@@ -1219,9 +1221,9 @@
|
||||
function = "DES_TO_SER_GPIO3";
|
||||
};
|
||||
|
||||
100ms-delay {
|
||||
40ms-delay {
|
||||
pins = "BU18RL82_GPIO1";
|
||||
function = "DELAY_100MS";
|
||||
function = "DELAY_40MS";
|
||||
};
|
||||
|
||||
lcd-pwr-en {
|
||||
@@ -1349,6 +1351,7 @@
|
||||
0275 0020
|
||||
0296 0004
|
||||
0297 000d
|
||||
02af 0002 //gpio0 1MHZ
|
||||
02b2 00c8
|
||||
02b4 0001
|
||||
02b8 00ff
|
||||
@@ -1552,9 +1555,9 @@
|
||||
function = "DES_TO_SER_GPIO3";
|
||||
};
|
||||
|
||||
100ms-delay {
|
||||
40ms-delay {
|
||||
pins = "BU18RL82_GPIO1";
|
||||
function = "DELAY_100MS";
|
||||
function = "DELAY_40MS";
|
||||
};
|
||||
|
||||
lcd-pwr-en {
|
||||
@@ -1700,6 +1703,7 @@
|
||||
02a8 0003
|
||||
02a9 0004
|
||||
02aa 0005
|
||||
02af 0002 //gpio0 1MHZ
|
||||
0045 0080
|
||||
0046 0007 //1920
|
||||
004b 00d0
|
||||
@@ -1899,9 +1903,9 @@
|
||||
function = "DES_TO_SER_GPIO3";
|
||||
};
|
||||
|
||||
100ms-delay {
|
||||
40ms-delay {
|
||||
pins = "BU18RL82_GPIO1";
|
||||
function = "DELAY_100MS";
|
||||
function = "DELAY_40MS";
|
||||
};
|
||||
|
||||
lcd-pwr-en {
|
||||
@@ -2024,6 +2028,7 @@
|
||||
0275 0020
|
||||
0296 0004
|
||||
0297 000d
|
||||
02af 0002 //gpio0 1MHZ
|
||||
02b2 00c8
|
||||
02b4 0001
|
||||
02b8 00ff
|
||||
@@ -2335,6 +2340,7 @@
|
||||
02a8 0003
|
||||
02a9 0004
|
||||
02aa 0005
|
||||
02af 0002 //gpio0 1MHZ
|
||||
0045 0080
|
||||
0046 0007 //1920
|
||||
004b 00d0
|
||||
|
||||
@@ -4544,6 +4544,13 @@ static int vop2_cluster_two_win_mode_check(struct drm_plane_state *pstate)
|
||||
|
||||
main_pstate = drm_atomic_get_new_plane_state(state, &main_win->base);
|
||||
|
||||
if (!main_pstate || !main_pstate->fb) {
|
||||
DRM_INFO("force to disable %s when cluster-win0 is disabled\n", win->name);
|
||||
pstate->visible = false;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (pstate->fb->modifier != main_pstate->fb->modifier) {
|
||||
DRM_ERROR("%s(fb->modifier: 0x%llx) must use same data layout as %s(fb->modifier: 0x%llx)\n",
|
||||
win->name, pstate->fb->modifier, main_win->name, main_pstate->fb->modifier);
|
||||
|
||||
@@ -174,6 +174,199 @@ static const struct regval sc450ai_global_regs[] = {
|
||||
{REG_NULL, 0x00},
|
||||
};
|
||||
|
||||
/*
|
||||
* Xclk 27Mhz
|
||||
* max_framerate 120fps
|
||||
* mipi_datarate per lane 720Mbps, 2lane
|
||||
* binning to 1344x760
|
||||
*/
|
||||
static const struct regval sc450ai_linear_10_1344x760_120fps_regs[] = {
|
||||
{0x0103, 0x01},
|
||||
{0x0100, 0x00},
|
||||
{0x36e9, 0x80},
|
||||
{0x36f9, 0x80},
|
||||
{0x3018, 0x3a},
|
||||
{0x3019, 0x0c},
|
||||
{0x301c, 0x78},
|
||||
{0x301f, 0x75},
|
||||
{0x302e, 0x00},
|
||||
{0x3208, 0x05},
|
||||
{0x3209, 0x40},
|
||||
{0x320a, 0x02},
|
||||
{0x320b, 0xf8},
|
||||
{0x320c, 0x03},
|
||||
{0x320d, 0xa8},
|
||||
{0x320e, 0x03},
|
||||
{0x320f, 0x0c},
|
||||
{0x3211, 0x04},
|
||||
{0x3213, 0x04},
|
||||
{0x3214, 0x11},
|
||||
{0x3215, 0x31},
|
||||
{0x3220, 0x01},
|
||||
{0x3223, 0xc0},
|
||||
{0x3253, 0x10},
|
||||
{0x325f, 0x44},
|
||||
{0x3274, 0x09},
|
||||
{0x3280, 0x01},
|
||||
{0x3301, 0x08},
|
||||
{0x3306, 0x24},
|
||||
{0x3309, 0x60},
|
||||
{0x330b, 0x64},
|
||||
{0x330d, 0x30},
|
||||
{0x3315, 0x00},
|
||||
{0x331f, 0x59},
|
||||
{0x335d, 0x60},
|
||||
{0x3364, 0x56},
|
||||
{0x338f, 0x80},
|
||||
{0x3390, 0x08},
|
||||
{0x3391, 0x18},
|
||||
{0x3392, 0x38},
|
||||
{0x3393, 0x0a},
|
||||
{0x3394, 0x10},
|
||||
{0x3395, 0x18},
|
||||
{0x3396, 0x08},
|
||||
{0x3397, 0x18},
|
||||
{0x3398, 0x38},
|
||||
{0x3399, 0x0f},
|
||||
{0x339a, 0x12},
|
||||
{0x339b, 0x14},
|
||||
{0x339c, 0x18},
|
||||
{0x33af, 0x18},
|
||||
{0x360f, 0x13},
|
||||
{0x3621, 0xec},
|
||||
{0x3627, 0xa0},
|
||||
{0x3630, 0x90},
|
||||
{0x3633, 0x56},
|
||||
{0x3637, 0x1d},
|
||||
{0x3638, 0x0a},
|
||||
{0x363c, 0x0f},
|
||||
{0x363d, 0x0f},
|
||||
{0x363e, 0x08},
|
||||
{0x3670, 0x4a},
|
||||
{0x3671, 0xe0},
|
||||
{0x3672, 0xe0},
|
||||
{0x3673, 0xe0},
|
||||
{0x3674, 0xb0},
|
||||
{0x3675, 0x88},
|
||||
{0x3676, 0x8c},
|
||||
{0x367a, 0x48},
|
||||
{0x367b, 0x58},
|
||||
{0x367c, 0x48},
|
||||
{0x367d, 0x58},
|
||||
{0x3690, 0x34},
|
||||
{0x3691, 0x43},
|
||||
{0x3692, 0x44},
|
||||
{0x3699, 0x03},
|
||||
{0x369a, 0x0f},
|
||||
{0x369b, 0x1f},
|
||||
{0x369c, 0x40},
|
||||
{0x369d, 0x48},
|
||||
{0x36a2, 0x48},
|
||||
{0x36a3, 0x78},
|
||||
{0x36b0, 0x54},
|
||||
{0x36b1, 0x75},
|
||||
{0x36b2, 0x35},
|
||||
{0x36b3, 0x48},
|
||||
{0x36b4, 0x78},
|
||||
{0x36b7, 0xa0},
|
||||
{0x36b8, 0xa0},
|
||||
{0x36b9, 0x20},
|
||||
{0x36bd, 0x40},
|
||||
{0x36be, 0x48},
|
||||
{0x36d0, 0x20},
|
||||
{0x36e0, 0x08},
|
||||
{0x36e1, 0x08},
|
||||
{0x36e2, 0x12},
|
||||
{0x36e3, 0x48},
|
||||
{0x36e4, 0x78},
|
||||
{0x36fa, 0x0d},
|
||||
{0x36fb, 0xa4},
|
||||
{0x36fc, 0x00},
|
||||
{0x36fd, 0x24},
|
||||
{0x3907, 0x00},
|
||||
{0x3908, 0x41},
|
||||
{0x391e, 0x01},
|
||||
{0x391f, 0x11},
|
||||
{0x3933, 0x82},
|
||||
{0x3934, 0x0b},
|
||||
{0x3935, 0x02},
|
||||
{0x3936, 0x5e},
|
||||
{0x3937, 0x76},
|
||||
{0x3938, 0x78},
|
||||
{0x3939, 0x00},
|
||||
{0x393a, 0x28},
|
||||
{0x393b, 0x00},
|
||||
{0x393c, 0x1d},
|
||||
{0x3e00, 0x00},
|
||||
{0x3e01, 0x61},
|
||||
{0x3e02, 0x00},
|
||||
{0x3e03, 0x0b},
|
||||
{0x3e08, 0x03},
|
||||
{0x3e1b, 0x2a},
|
||||
{0x440e, 0x02},
|
||||
{0x4509, 0x20},
|
||||
{0x4837, 0x16},
|
||||
{0x5000, 0x4e},
|
||||
{0x5001, 0x44},
|
||||
{0x5780, 0x76},
|
||||
{0x5784, 0x08},
|
||||
{0x5785, 0x04},
|
||||
{0x5787, 0x0a},
|
||||
{0x5788, 0x0a},
|
||||
{0x5789, 0x0a},
|
||||
{0x578a, 0x0a},
|
||||
{0x578b, 0x0a},
|
||||
{0x578c, 0x0a},
|
||||
{0x578d, 0x40},
|
||||
{0x5790, 0x08},
|
||||
{0x5791, 0x04},
|
||||
{0x5792, 0x04},
|
||||
{0x5793, 0x08},
|
||||
{0x5794, 0x04},
|
||||
{0x5795, 0x04},
|
||||
{0x5799, 0x46},
|
||||
{0x579a, 0x77},
|
||||
{0x57a1, 0x04},
|
||||
{0x57a8, 0xd0},
|
||||
{0x57aa, 0x2a},
|
||||
{0x57ab, 0x7f},
|
||||
{0x57ac, 0x00},
|
||||
{0x57ad, 0x00},
|
||||
{0x5900, 0x01},
|
||||
{0x5901, 0x04},
|
||||
{0x59e0, 0xfe},
|
||||
{0x59e1, 0x40},
|
||||
{0x59e2, 0x3f},
|
||||
{0x59e3, 0x38},
|
||||
{0x59e4, 0x30},
|
||||
{0x59e5, 0x3f},
|
||||
{0x59e6, 0x38},
|
||||
{0x59e7, 0x30},
|
||||
{0x59e8, 0x3f},
|
||||
{0x59e9, 0x3c},
|
||||
{0x59ea, 0x38},
|
||||
{0x59eb, 0x3f},
|
||||
{0x59ec, 0x3c},
|
||||
{0x59ed, 0x38},
|
||||
{0x59ee, 0xfe},
|
||||
{0x59ef, 0x40},
|
||||
{0x59f4, 0x3f},
|
||||
{0x59f5, 0x38},
|
||||
{0x59f6, 0x30},
|
||||
{0x59f7, 0x3f},
|
||||
{0x59f8, 0x38},
|
||||
{0x59f9, 0x30},
|
||||
{0x59fa, 0x3f},
|
||||
{0x59fb, 0x3c},
|
||||
{0x59fc, 0x38},
|
||||
{0x59fd, 0x3f},
|
||||
{0x59fe, 0x3c},
|
||||
{0x59ff, 0x38},
|
||||
{0x36e9, 0x44},
|
||||
{0x36f9, 0x20},
|
||||
{REG_NULL, 0x00},
|
||||
};
|
||||
|
||||
/*
|
||||
* Xclk 27Mhz
|
||||
* max_framerate 60fps
|
||||
@@ -374,6 +567,23 @@ static const struct sc450ai_mode supported_modes[] = {
|
||||
.link_freq_idx = 0,
|
||||
.vc[PAD0] = V4L2_MBUS_CSI2_CHANNEL_0,
|
||||
},
|
||||
{
|
||||
.width = 1344,
|
||||
.height = 760,
|
||||
.max_fps = {
|
||||
.numerator = 10000,
|
||||
.denominator = 1200000,
|
||||
},
|
||||
.exp_def = 0x0080,
|
||||
.hts_def = 0x03a8,
|
||||
.vts_def = 0x030c,
|
||||
.bus_fmt = MEDIA_BUS_FMT_SBGGR10_1X10,
|
||||
.reg_list = sc450ai_linear_10_1344x760_120fps_regs,
|
||||
.hdr_mode = NO_HDR,
|
||||
.xvclk_freq = 27000000,
|
||||
.link_freq_idx = 0,
|
||||
.vc[PAD0] = V4L2_MBUS_CSI2_CHANNEL_0,
|
||||
},
|
||||
};
|
||||
|
||||
static const s64 link_freq_menu_items[] = {
|
||||
@@ -1557,7 +1767,10 @@ static int sc450ai_probe(struct i2c_client *client,
|
||||
|
||||
pm_runtime_set_active(dev);
|
||||
pm_runtime_enable(dev);
|
||||
pm_runtime_idle(dev);
|
||||
if (sc450ai->is_thunderboot)
|
||||
pm_runtime_get_sync(dev);
|
||||
else
|
||||
pm_runtime_idle(dev);
|
||||
|
||||
return 0;
|
||||
|
||||
|
||||
@@ -1081,20 +1081,20 @@ static void update_mi(struct rkisp_stream *stream)
|
||||
if (!ISP3X_ISP_OUT_LINE(rkisp_read(dev, ISP3X_ISP_DEBUG2, true))) {
|
||||
stream->ops->enable_mi(stream);
|
||||
stream_self_update(stream);
|
||||
if (!stream->curr_buf) {
|
||||
stream->curr_buf = stream->next_buf;
|
||||
stream->next_buf = NULL;
|
||||
}
|
||||
/* maybe no next buf to preclose mi */
|
||||
stream->ops->disable_mi(stream);
|
||||
} else if (stream->is_pause) {
|
||||
} else {
|
||||
/* isp working and mi closed
|
||||
* config buf and enable mi, capture at next frame
|
||||
*/
|
||||
stream->ops->enable_mi(stream);
|
||||
stream->is_pause = false;
|
||||
}
|
||||
} else if (stream->is_pause) {
|
||||
if (!stream->curr_buf) {
|
||||
stream->curr_buf = stream->next_buf;
|
||||
stream->next_buf = NULL;
|
||||
}
|
||||
} else {
|
||||
/* isp working and mi no to close
|
||||
* config buf will auto update at frame end
|
||||
*/
|
||||
@@ -1143,11 +1143,12 @@ static void update_mi(struct rkisp_stream *stream)
|
||||
}
|
||||
|
||||
v4l2_dbg(2, rkisp_debug, &dev->v4l2_dev,
|
||||
"%s stream:%d Y:0x%x CB:0x%x | Y_SHD:0x%x\n",
|
||||
__func__, stream->id,
|
||||
"%s stream:%d cur:%p next:%p Y:0x%x CB:0x%x | Y_SHD:0x%x pause:%d stop:%d\n",
|
||||
__func__, stream->id, stream->curr_buf, stream->next_buf,
|
||||
rkisp_read(dev, stream->config->mi.y_base_ad_init, false),
|
||||
rkisp_read(dev, stream->config->mi.cb_base_ad_init, false),
|
||||
rkisp_read(dev, stream->config->mi.y_base_ad_shd, true));
|
||||
rkisp_read(dev, stream->config->mi.y_base_ad_shd, true),
|
||||
stream->is_pause, stream->ops->is_stream_stopped(stream));
|
||||
}
|
||||
|
||||
static int set_mirror_flip(struct rkisp_stream *stream)
|
||||
@@ -1376,17 +1377,16 @@ static int mi_frame_start(struct rkisp_stream *stream, u32 mis)
|
||||
rkisp_stream_config_rsz(stream, false);
|
||||
stream->is_crop_upd = false;
|
||||
}
|
||||
/* update buf for multi sensor at readback */
|
||||
if (!mis && !stream->ispdev->hw_dev->is_single &&
|
||||
!stream->curr_buf &&
|
||||
!list_empty(&stream->buf_queue)) {
|
||||
if (!list_empty(&stream->buf_queue) &&
|
||||
((dev->hw_dev->is_single && !stream->next_buf) ||
|
||||
(!dev->hw_dev->is_single && !stream->curr_buf))) {
|
||||
stream->next_buf = list_first_entry(&stream->buf_queue,
|
||||
struct rkisp_buffer, queue);
|
||||
list_del(&stream->next_buf->queue);
|
||||
stream->ops->update_mi(stream);
|
||||
}
|
||||
/* check frame loss */
|
||||
if (mis && stream->ops->is_stream_stopped(stream))
|
||||
if (stream->ops->is_stream_stopped(stream))
|
||||
stream->dbg.frameloss++;
|
||||
}
|
||||
spin_unlock_irqrestore(&stream->vbq_lock, lock_flags);
|
||||
@@ -1678,16 +1678,7 @@ static void rkisp_buf_queue(struct vb2_buffer *vb)
|
||||
stream->id, ispbuf->buff_addr[0]);
|
||||
|
||||
spin_lock_irqsave(&stream->vbq_lock, lock_flags);
|
||||
/* single sensor with pingpong buf, update next if need */
|
||||
if (dev->hw_dev->is_single &&
|
||||
stream->id != RKISP_STREAM_VIR &&
|
||||
stream->id != RKISP_STREAM_LUMA &&
|
||||
stream->streaming && !stream->next_buf) {
|
||||
stream->next_buf = ispbuf;
|
||||
stream->ops->update_mi(stream);
|
||||
} else {
|
||||
list_add_tail(&ispbuf->queue, &stream->buf_queue);
|
||||
}
|
||||
list_add_tail(&ispbuf->queue, &stream->buf_queue);
|
||||
spin_unlock_irqrestore(&stream->vbq_lock, lock_flags);
|
||||
}
|
||||
|
||||
|
||||
@@ -1165,7 +1165,7 @@ static void rkisp_pm_complete(struct device *dev)
|
||||
}
|
||||
for (i = 0; i < RKISP_MAX_STREAM; i++) {
|
||||
stream = &isp_dev->cap_dev.stream[i];
|
||||
if (i == RKISP_STREAM_VIR || !stream->streaming || !stream->curr_buf)
|
||||
if (i == RKISP_STREAM_VIR || !stream->streaming)
|
||||
continue;
|
||||
/* skip first frame due to hw no reference frame information */
|
||||
if (isp_dev->is_first_double)
|
||||
|
||||
@@ -191,16 +191,7 @@ int rkisp_rockit_buf_queue(struct rockit_cfg *input_rockit_cfg)
|
||||
stream->id, isprk_buf,
|
||||
isprk_buf->isp_buf.buff_addr[0], isprk_buf->isp_buf.buff_addr[1]);
|
||||
|
||||
/* single sensor with pingpong buf, update next if need */
|
||||
if (ispdev->hw_dev->is_single && !ispdev->is_suspend &&
|
||||
stream->id != RKISP_STREAM_VIR &&
|
||||
stream->id != RKISP_STREAM_LUMA &&
|
||||
stream->streaming && !stream->next_buf) {
|
||||
stream->next_buf = &isprk_buf->isp_buf;
|
||||
stream->ops->update_mi(stream);
|
||||
} else {
|
||||
list_add_tail(&isprk_buf->isp_buf.queue, &stream->buf_queue);
|
||||
}
|
||||
list_add_tail(&isprk_buf->isp_buf.queue, &stream->buf_queue);
|
||||
spin_unlock_irqrestore(&stream->vbq_lock, lock_flags);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -1062,6 +1062,9 @@ void rkisp_check_idle(struct rkisp_device *dev, u32 irq)
|
||||
unsigned long lock_flags = 0;
|
||||
u32 val = 0;
|
||||
|
||||
if (!IS_HDR_RDBK(dev->rd_mode))
|
||||
return;
|
||||
|
||||
spin_lock_irqsave(&dev->hw_dev->rdbk_lock, lock_flags);
|
||||
dev->irq_ends |= (irq & dev->irq_ends_mask);
|
||||
v4l2_dbg(3, rkisp_debug, &dev->v4l2_dev,
|
||||
@@ -1073,8 +1076,7 @@ void rkisp_check_idle(struct rkisp_device *dev, u32 irq)
|
||||
if (!completion_done(&dev->hw_dev->monitor.cmpl))
|
||||
complete(&dev->hw_dev->monitor.cmpl);
|
||||
}
|
||||
if ((dev->irq_ends & dev->irq_ends_mask) != dev->irq_ends_mask ||
|
||||
!IS_HDR_RDBK(dev->rd_mode)) {
|
||||
if ((dev->irq_ends & dev->irq_ends_mask) != dev->irq_ends_mask) {
|
||||
spin_unlock_irqrestore(&dev->hw_dev->rdbk_lock, lock_flags);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -248,6 +248,9 @@ static struct function_desc max96752_functions_desc[] = {
|
||||
FUNCTION_DESC_GPIO_OUTPUT_HIGH(15),
|
||||
|
||||
FUNCTION_DES_DELAY_MS(10),
|
||||
FUNCTION_DES_DELAY_MS(20),
|
||||
FUNCTION_DES_DELAY_MS(30),
|
||||
FUNCTION_DES_DELAY_MS(40),
|
||||
FUNCTION_DES_DELAY_MS(50),
|
||||
FUNCTION_DES_DELAY_MS(100),
|
||||
FUNCTION_DES_DELAY_MS(200),
|
||||
|
||||
@@ -253,6 +253,9 @@ static struct function_desc max96772_functions_desc[] = {
|
||||
FUNCTION_DESC_GPIO_OUTPUT_HIGH(15),
|
||||
|
||||
FUNCTION_DES_DELAY_MS(10),
|
||||
FUNCTION_DES_DELAY_MS(20),
|
||||
FUNCTION_DES_DELAY_MS(30),
|
||||
FUNCTION_DES_DELAY_MS(40),
|
||||
FUNCTION_DES_DELAY_MS(50),
|
||||
FUNCTION_DES_DELAY_MS(100),
|
||||
FUNCTION_DES_DELAY_MS(200),
|
||||
|
||||
@@ -60,7 +60,7 @@ static const char *serdes_gpio_groups[] = {
|
||||
.group_names = serdes_gpio_groups, \
|
||||
.num_group_names = ARRAY_SIZE(serdes_gpio_groups), \
|
||||
.data = (void *)(const struct serdes_function_data []) { \
|
||||
{ .gpio_rx_en = 1, .gpio_id = id + 2 } \
|
||||
{ .gpio_rx_en = 1, .gpio_id = id ? (id + 2) : 0x12 } \
|
||||
}, \
|
||||
} \
|
||||
|
||||
@@ -71,7 +71,7 @@ static const char *serdes_gpio_groups[] = {
|
||||
.group_names = serdes_gpio_groups, \
|
||||
.num_group_names = ARRAY_SIZE(serdes_gpio_groups), \
|
||||
.data = (void *)(const struct serdes_function_data []) { \
|
||||
{ .gpio_rx_en = 0, .gpio_id = id + 2 } \
|
||||
{ .gpio_rx_en = 0, .gpio_id = id ? (id + 2) : 0x12 } \
|
||||
}, \
|
||||
} \
|
||||
|
||||
@@ -167,6 +167,9 @@ static struct function_desc bu18rl82_functions_desc[] = {
|
||||
FUNCTION_DESC_GPIO_OUTPUT_LOW(),
|
||||
|
||||
FUNCTION_DES_DELAY_MS(10),
|
||||
FUNCTION_DES_DELAY_MS(20),
|
||||
FUNCTION_DES_DELAY_MS(30),
|
||||
FUNCTION_DES_DELAY_MS(40),
|
||||
FUNCTION_DES_DELAY_MS(50),
|
||||
FUNCTION_DES_DELAY_MS(100),
|
||||
FUNCTION_DES_DELAY_MS(200),
|
||||
|
||||
@@ -327,13 +327,6 @@ int serdes_set_pinctrl_default(struct serdes *serdes)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if ((!IS_ERR(serdes->pinctrl_node)) && (!IS_ERR(serdes->pins_default))) {
|
||||
ret = pinctrl_select_state(serdes->pinctrl_node, serdes->pins_default);
|
||||
if (ret)
|
||||
dev_err(serdes->dev, "could not set default pins\n");
|
||||
SERDES_DBG_MFD("%s: name=%s default\n", __func__, dev_name(serdes->dev));
|
||||
}
|
||||
|
||||
if ((!IS_ERR(serdes->pinctrl_node)) && (!IS_ERR(serdes->pins_init))) {
|
||||
ret = pinctrl_select_state(serdes->pinctrl_node, serdes->pins_init);
|
||||
if (ret)
|
||||
|
||||
Reference in New Issue
Block a user