Merge tag 'drm-next-2018-12-14' of git://anongit.freedesktop.org/drm/drm
Pull drm updates from Dave Airlie: "Core: - shared fencing staging removal - drop transactional atomic helpers and move helpers to new location - DP/MST atomic cleanup - Leasing cleanups and drop EXPORT_SYMBOL - Convert drivers to atomic helpers and generic fbdev. - removed deprecated obj_ref/unref in favour of get/put - Improve dumb callback documentation - MODESET_LOCK_BEGIN/END helpers panels: - CDTech panels, Banana Pi Panel, DLC1010GIG, - Olimex LCD-O-LinuXino, Samsung S6D16D0, Truly NT35597 WQXGA, - Himax HX8357D, simulated RTSM AEMv8. - GPD Win2 panel - AUO G101EVN010 vgem: - render node support ttm: - move global init out of drivers - fix LRU handling for ghost objects - Support for simultaneous submissions to multiple engines scheduler: - timeout/fault handling changes to help GPU recovery - helpers for hw with preemption support i915: - Scaler/Watermark fixes - DP MST + powerwell fixes - PSR fixes - Break long get/put shmemfs pages - Icelake fixes - Icelake DSI video mode enablement - Engine workaround improvements amdgpu: - freesync support - GPU reset enabled on CI, VI, SOC15 dGPUs - ABM support in DC - KFD support for vega12/polaris12 - SDMA paging queue on vega - More amdkfd code sharing - DCC scanout on GFX9 - DC kerneldoc - Updated SMU firmware for GFX8 chips - XGMI PSP + hive reset support - GPU reset - DC trace support - Powerplay updates for newer Polaris - Cursor plane update fast path - kfd dma-buf support virtio-gpu: - add EDID support vmwgfx: - pageflip with damage support nouveau: - Initial Turing TU104/TU106 modesetting support msm: - a2xx gpu support for apq8060 and imx5 - a2xx gpummu support - mdp4 display support for apq8060 - DPU fixes and cleanups - enhanced profiling support - debug object naming interface - get_iova/page pinning decoupling tegra: - Tegra194 host1x, VIC and display support enabled - Audio over HDMI for Tegra186 and Tegra194 exynos: - DMA/IOMMU refactoring - plane alpha + blend mode support - Color format fixes for mixer driver rcar-du: - R8A7744 and R8A77470 support - R8A77965 LVDS support imx: - fbdev emulation fix - multi-tiled scalling fixes - SPDX identifiers rockchip - dw_hdmi support - dw-mipi-dsi + dual dsi support - mailbox read size fix qxl: - fix cursor pinning vc4: - YUV support (scaling + cursor) v3d: - enable TFU (Texture Formatting Unit) mali-dp: - add support for linear tiled formats sun4i: - Display Engine 3 support - H6 DE3 mixer 0 support - H6 display engine support - dw-hdmi support - H6 HDMI phy support - implicit fence waiting - BGRX8888 support meson: - Overlay plane support - implicit fence waiting - HDMI 1.4 4k modes bridge: - i2c fixes for sii902x" * tag 'drm-next-2018-12-14' of git://anongit.freedesktop.org/drm/drm: (1403 commits) drm/amd/display: Add fast path for cursor plane updates drm/amdgpu: Enable GPU recovery by default for CI drm/amd/display: Fix duplicating scaling/underscan connector state drm/amd/display: Fix unintialized max_bpc state values Revert "drm/amd/display: Set RMX_ASPECT as default" drm/amdgpu: Fix stub function name drm/msm/dpu: Fix clock issue after bind failure drm/msm/dpu: Clean up dpu_media_info.h static inline functions drm/msm/dpu: Further cleanups for static inline functions drm/msm/dpu: Cleanup the debugfs functions drm/msm/dpu: Remove dpu_irq and unused functions drm/msm: Make irq_postinstall optional drm/msm/dpu: Cleanup callers of dpu_hw_blk_init drm/msm/dpu: Remove unused functions drm/msm/dpu: Remove dpu_crtc_is_enabled() drm/msm/dpu: Remove dpu_crtc_get_mixer_height drm/msm/dpu: Remove dpu_dbg drm/msm: dpu: Remove crtc_lock drm/msm: dpu: Remove vblank_requested flag from dpu_crtc drm/msm: dpu: Separate crtc assignment from vblank enable ...
Šī revīzija ir iekļauta:
@@ -7,7 +7,7 @@ config DRM_ROCKCHIP
|
||||
select VIDEOMODE_HELPERS
|
||||
select DRM_ANALOGIX_DP if ROCKCHIP_ANALOGIX_DP
|
||||
select DRM_DW_HDMI if ROCKCHIP_DW_HDMI
|
||||
select DRM_MIPI_DSI if ROCKCHIP_DW_MIPI_DSI
|
||||
select DRM_DW_MIPI_DSI if ROCKCHIP_DW_MIPI_DSI
|
||||
select DRM_RGB if ROCKCHIP_RGB
|
||||
select SND_SOC_HDMI_CODEC if ROCKCHIP_CDN_DP && SND_SOC
|
||||
help
|
||||
|
@@ -11,7 +11,7 @@ rockchipdrm-$(CONFIG_DRM_FBDEV_EMULATION) += rockchip_drm_fbdev.o
|
||||
rockchipdrm-$(CONFIG_ROCKCHIP_ANALOGIX_DP) += analogix_dp-rockchip.o
|
||||
rockchipdrm-$(CONFIG_ROCKCHIP_CDN_DP) += cdn-dp-core.o cdn-dp-reg.o
|
||||
rockchipdrm-$(CONFIG_ROCKCHIP_DW_HDMI) += dw_hdmi-rockchip.o
|
||||
rockchipdrm-$(CONFIG_ROCKCHIP_DW_MIPI_DSI) += dw-mipi-dsi.o
|
||||
rockchipdrm-$(CONFIG_ROCKCHIP_DW_MIPI_DSI) += dw-mipi-dsi-rockchip.o
|
||||
rockchipdrm-$(CONFIG_ROCKCHIP_INNO_HDMI) += inno_hdmi.o
|
||||
rockchipdrm-$(CONFIG_ROCKCHIP_LVDS) += rockchip_lvds.o
|
||||
rockchipdrm-$(CONFIG_ROCKCHIP_RGB) += rockchip_rgb.o
|
||||
|
@@ -147,7 +147,7 @@ static int cdn_dp_mailbox_validate_receive(struct cdn_dp_device *dp,
|
||||
}
|
||||
|
||||
static int cdn_dp_mailbox_read_receive(struct cdn_dp_device *dp,
|
||||
u8 *buff, u8 buff_size)
|
||||
u8 *buff, u16 buff_size)
|
||||
{
|
||||
u32 i;
|
||||
int ret;
|
||||
|
1076
drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c
Parasts fails
1076
drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c
Parasts fails
Failā izmaiņas netiks attēlotas, jo tās ir par lielu
Ielādēt izmaiņas
Failā izmaiņas netiks attēlotas, jo tās ir par lielu
Ielādēt izmaiņas
@@ -11,6 +11,7 @@
|
||||
#include <linux/mfd/syscon.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/phy/phy.h>
|
||||
#include <linux/regmap.h>
|
||||
|
||||
#include <drm/drm_of.h>
|
||||
@@ -24,6 +25,24 @@
|
||||
|
||||
#define RK3288_GRF_SOC_CON6 0x025C
|
||||
#define RK3288_HDMI_LCDC_SEL BIT(4)
|
||||
#define RK3328_GRF_SOC_CON2 0x0408
|
||||
|
||||
#define RK3328_HDMI_SDAIN_MSK BIT(11)
|
||||
#define RK3328_HDMI_SCLIN_MSK BIT(10)
|
||||
#define RK3328_HDMI_HPD_IOE BIT(2)
|
||||
#define RK3328_GRF_SOC_CON3 0x040c
|
||||
/* need to be unset if hdmi or i2c should control voltage */
|
||||
#define RK3328_HDMI_SDA5V_GRF BIT(15)
|
||||
#define RK3328_HDMI_SCL5V_GRF BIT(14)
|
||||
#define RK3328_HDMI_HPD5V_GRF BIT(13)
|
||||
#define RK3328_HDMI_CEC5V_GRF BIT(12)
|
||||
#define RK3328_GRF_SOC_CON4 0x0410
|
||||
#define RK3328_HDMI_HPD_SARADC BIT(13)
|
||||
#define RK3328_HDMI_CEC_5V BIT(11)
|
||||
#define RK3328_HDMI_SDA_5V BIT(10)
|
||||
#define RK3328_HDMI_SCL_5V BIT(9)
|
||||
#define RK3328_HDMI_HPD_5V BIT(8)
|
||||
|
||||
#define RK3399_GRF_SOC_CON20 0x6250
|
||||
#define RK3399_HDMI_LCDC_SEL BIT(6)
|
||||
|
||||
@@ -36,7 +55,7 @@
|
||||
* @lcdsel_lit: reg value of selecting vop little for HDMI
|
||||
*/
|
||||
struct rockchip_hdmi_chip_data {
|
||||
u32 lcdsel_grf_reg;
|
||||
int lcdsel_grf_reg;
|
||||
u32 lcdsel_big;
|
||||
u32 lcdsel_lit;
|
||||
};
|
||||
@@ -49,6 +68,7 @@ struct rockchip_hdmi {
|
||||
struct clk *vpll_clk;
|
||||
struct clk *grf_clk;
|
||||
struct dw_hdmi *hdmi;
|
||||
struct phy *phy;
|
||||
};
|
||||
|
||||
#define to_rockchip_hdmi(x) container_of(x, struct rockchip_hdmi, x)
|
||||
@@ -245,6 +265,9 @@ static void dw_hdmi_rockchip_encoder_enable(struct drm_encoder *encoder)
|
||||
u32 val;
|
||||
int ret;
|
||||
|
||||
if (hdmi->chip_data->lcdsel_grf_reg < 0)
|
||||
return;
|
||||
|
||||
ret = drm_of_encoder_active_endpoint_id(hdmi->dev->of_node, encoder);
|
||||
if (ret)
|
||||
val = hdmi->chip_data->lcdsel_lit;
|
||||
@@ -287,6 +310,66 @@ static const struct drm_encoder_helper_funcs dw_hdmi_rockchip_encoder_helper_fun
|
||||
.atomic_check = dw_hdmi_rockchip_encoder_atomic_check,
|
||||
};
|
||||
|
||||
static int dw_hdmi_rockchip_genphy_init(struct dw_hdmi *dw_hdmi, void *data,
|
||||
struct drm_display_mode *mode)
|
||||
{
|
||||
struct rockchip_hdmi *hdmi = (struct rockchip_hdmi *)data;
|
||||
|
||||
return phy_power_on(hdmi->phy);
|
||||
}
|
||||
|
||||
static void dw_hdmi_rockchip_genphy_disable(struct dw_hdmi *dw_hdmi, void *data)
|
||||
{
|
||||
struct rockchip_hdmi *hdmi = (struct rockchip_hdmi *)data;
|
||||
|
||||
phy_power_off(hdmi->phy);
|
||||
}
|
||||
|
||||
static enum drm_connector_status
|
||||
dw_hdmi_rk3328_read_hpd(struct dw_hdmi *dw_hdmi, void *data)
|
||||
{
|
||||
struct rockchip_hdmi *hdmi = (struct rockchip_hdmi *)data;
|
||||
enum drm_connector_status status;
|
||||
|
||||
status = dw_hdmi_phy_read_hpd(dw_hdmi, data);
|
||||
|
||||
if (status == connector_status_connected)
|
||||
regmap_write(hdmi->regmap,
|
||||
RK3328_GRF_SOC_CON4,
|
||||
HIWORD_UPDATE(RK3328_HDMI_SDA_5V | RK3328_HDMI_SCL_5V,
|
||||
RK3328_HDMI_SDA_5V | RK3328_HDMI_SCL_5V));
|
||||
else
|
||||
regmap_write(hdmi->regmap,
|
||||
RK3328_GRF_SOC_CON4,
|
||||
HIWORD_UPDATE(0, RK3328_HDMI_SDA_5V |
|
||||
RK3328_HDMI_SCL_5V));
|
||||
return status;
|
||||
}
|
||||
|
||||
static void dw_hdmi_rk3328_setup_hpd(struct dw_hdmi *dw_hdmi, void *data)
|
||||
{
|
||||
struct rockchip_hdmi *hdmi = (struct rockchip_hdmi *)data;
|
||||
|
||||
dw_hdmi_phy_setup_hpd(dw_hdmi, data);
|
||||
|
||||
/* Enable and map pins to 3V grf-controlled io-voltage */
|
||||
regmap_write(hdmi->regmap,
|
||||
RK3328_GRF_SOC_CON4,
|
||||
HIWORD_UPDATE(0, RK3328_HDMI_HPD_SARADC | RK3328_HDMI_CEC_5V |
|
||||
RK3328_HDMI_SDA_5V | RK3328_HDMI_SCL_5V |
|
||||
RK3328_HDMI_HPD_5V));
|
||||
regmap_write(hdmi->regmap,
|
||||
RK3328_GRF_SOC_CON3,
|
||||
HIWORD_UPDATE(0, RK3328_HDMI_SDA5V_GRF | RK3328_HDMI_SCL5V_GRF |
|
||||
RK3328_HDMI_HPD5V_GRF |
|
||||
RK3328_HDMI_CEC5V_GRF));
|
||||
regmap_write(hdmi->regmap,
|
||||
RK3328_GRF_SOC_CON2,
|
||||
HIWORD_UPDATE(RK3328_HDMI_SDAIN_MSK | RK3328_HDMI_SCLIN_MSK,
|
||||
RK3328_HDMI_SDAIN_MSK | RK3328_HDMI_SCLIN_MSK |
|
||||
RK3328_HDMI_HPD_IOE));
|
||||
}
|
||||
|
||||
static struct rockchip_hdmi_chip_data rk3288_chip_data = {
|
||||
.lcdsel_grf_reg = RK3288_GRF_SOC_CON6,
|
||||
.lcdsel_big = HIWORD_UPDATE(0, RK3288_HDMI_LCDC_SEL),
|
||||
@@ -301,6 +384,29 @@ static const struct dw_hdmi_plat_data rk3288_hdmi_drv_data = {
|
||||
.phy_data = &rk3288_chip_data,
|
||||
};
|
||||
|
||||
static const struct dw_hdmi_phy_ops rk3328_hdmi_phy_ops = {
|
||||
.init = dw_hdmi_rockchip_genphy_init,
|
||||
.disable = dw_hdmi_rockchip_genphy_disable,
|
||||
.read_hpd = dw_hdmi_rk3328_read_hpd,
|
||||
.update_hpd = dw_hdmi_phy_update_hpd,
|
||||
.setup_hpd = dw_hdmi_rk3328_setup_hpd,
|
||||
};
|
||||
|
||||
static struct rockchip_hdmi_chip_data rk3328_chip_data = {
|
||||
.lcdsel_grf_reg = -1,
|
||||
};
|
||||
|
||||
static const struct dw_hdmi_plat_data rk3328_hdmi_drv_data = {
|
||||
.mode_valid = dw_hdmi_rockchip_mode_valid,
|
||||
.mpll_cfg = rockchip_mpll_cfg,
|
||||
.cur_ctr = rockchip_cur_ctr,
|
||||
.phy_config = rockchip_phy_config,
|
||||
.phy_data = &rk3328_chip_data,
|
||||
.phy_ops = &rk3328_hdmi_phy_ops,
|
||||
.phy_name = "inno_dw_hdmi_phy2",
|
||||
.phy_force_vendor = true,
|
||||
};
|
||||
|
||||
static struct rockchip_hdmi_chip_data rk3399_chip_data = {
|
||||
.lcdsel_grf_reg = RK3399_GRF_SOC_CON20,
|
||||
.lcdsel_big = HIWORD_UPDATE(0, RK3399_HDMI_LCDC_SEL),
|
||||
@@ -319,6 +425,9 @@ static const struct of_device_id dw_hdmi_rockchip_dt_ids[] = {
|
||||
{ .compatible = "rockchip,rk3288-dw-hdmi",
|
||||
.data = &rk3288_hdmi_drv_data
|
||||
},
|
||||
{ .compatible = "rockchip,rk3328-dw-hdmi",
|
||||
.data = &rk3328_hdmi_drv_data
|
||||
},
|
||||
{ .compatible = "rockchip,rk3399-dw-hdmi",
|
||||
.data = &rk3399_hdmi_drv_data
|
||||
},
|
||||
@@ -330,7 +439,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
|
||||
void *data)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
const struct dw_hdmi_plat_data *plat_data;
|
||||
struct dw_hdmi_plat_data *plat_data;
|
||||
const struct of_device_id *match;
|
||||
struct drm_device *drm = data;
|
||||
struct drm_encoder *encoder;
|
||||
@@ -345,9 +454,14 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
|
||||
return -ENOMEM;
|
||||
|
||||
match = of_match_node(dw_hdmi_rockchip_dt_ids, pdev->dev.of_node);
|
||||
plat_data = match->data;
|
||||
plat_data = devm_kmemdup(&pdev->dev, match->data,
|
||||
sizeof(*plat_data), GFP_KERNEL);
|
||||
if (!plat_data)
|
||||
return -ENOMEM;
|
||||
|
||||
hdmi->dev = &pdev->dev;
|
||||
hdmi->chip_data = plat_data->phy_data;
|
||||
plat_data->phy_data = hdmi;
|
||||
encoder = &hdmi->encoder;
|
||||
|
||||
encoder->possible_crtcs = drm_of_find_possible_crtcs(drm, dev->of_node);
|
||||
@@ -373,6 +487,14 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
|
||||
return ret;
|
||||
}
|
||||
|
||||
hdmi->phy = devm_phy_optional_get(dev, "hdmi");
|
||||
if (IS_ERR(hdmi->phy)) {
|
||||
ret = PTR_ERR(hdmi->phy);
|
||||
if (ret != -EPROBE_DEFER)
|
||||
DRM_DEV_ERROR(hdmi->dev, "failed to get phy\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
drm_encoder_helper_add(encoder, &dw_hdmi_rockchip_encoder_helper_funcs);
|
||||
drm_encoder_init(drm, encoder, &dw_hdmi_rockchip_encoder_funcs,
|
||||
DRM_MODE_ENCODER_TMDS, NULL);
|
||||
|
@@ -483,7 +483,7 @@ static int __init rockchip_drm_init(void)
|
||||
ADD_ROCKCHIP_SUB_DRIVER(cdn_dp_driver, CONFIG_ROCKCHIP_CDN_DP);
|
||||
ADD_ROCKCHIP_SUB_DRIVER(dw_hdmi_rockchip_pltfm_driver,
|
||||
CONFIG_ROCKCHIP_DW_HDMI);
|
||||
ADD_ROCKCHIP_SUB_DRIVER(dw_mipi_dsi_driver,
|
||||
ADD_ROCKCHIP_SUB_DRIVER(dw_mipi_dsi_rockchip_driver,
|
||||
CONFIG_ROCKCHIP_DW_MIPI_DSI);
|
||||
ADD_ROCKCHIP_SUB_DRIVER(inno_hdmi_driver, CONFIG_ROCKCHIP_INNO_HDMI);
|
||||
|
||||
|
@@ -37,6 +37,7 @@ struct rockchip_crtc_state {
|
||||
int output_type;
|
||||
int output_mode;
|
||||
int output_bpc;
|
||||
int output_flags;
|
||||
};
|
||||
#define to_rockchip_crtc_state(s) \
|
||||
container_of(s, struct rockchip_crtc_state, base)
|
||||
@@ -67,7 +68,7 @@ int rockchip_drm_wait_vact_end(struct drm_crtc *crtc, unsigned int mstimeout);
|
||||
int rockchip_drm_endpoint_is_subdriver(struct device_node *ep);
|
||||
extern struct platform_driver cdn_dp_driver;
|
||||
extern struct platform_driver dw_hdmi_rockchip_pltfm_driver;
|
||||
extern struct platform_driver dw_mipi_dsi_driver;
|
||||
extern struct platform_driver dw_mipi_dsi_rockchip_driver;
|
||||
extern struct platform_driver inno_hdmi_driver;
|
||||
extern struct platform_driver rockchip_dp_driver;
|
||||
extern struct platform_driver rockchip_lvds_driver;
|
||||
|
@@ -189,12 +189,14 @@ EXPORT_SYMBOL(rockchip_drm_psr_flush_all);
|
||||
int rockchip_drm_psr_register(struct drm_encoder *encoder,
|
||||
int (*psr_set)(struct drm_encoder *, bool enable))
|
||||
{
|
||||
struct rockchip_drm_private *drm_drv = encoder->dev->dev_private;
|
||||
struct rockchip_drm_private *drm_drv;
|
||||
struct psr_drv *psr;
|
||||
|
||||
if (!encoder || !psr_set)
|
||||
return -EINVAL;
|
||||
|
||||
drm_drv = encoder->dev->dev_private;
|
||||
|
||||
psr = kzalloc(sizeof(struct psr_drv), GFP_KERNEL);
|
||||
if (!psr)
|
||||
return -ENOMEM;
|
||||
|
@@ -916,6 +916,7 @@ static void vop_crtc_atomic_enable(struct drm_crtc *crtc,
|
||||
pin_pol |= (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC) ?
|
||||
BIT(VSYNC_POSITIVE) : 0;
|
||||
VOP_REG_SET(vop, output, pin_pol, pin_pol);
|
||||
VOP_REG_SET(vop, output, mipi_dual_channel_en, 0);
|
||||
|
||||
switch (s->output_type) {
|
||||
case DRM_MODE_CONNECTOR_LVDS:
|
||||
@@ -933,6 +934,8 @@ static void vop_crtc_atomic_enable(struct drm_crtc *crtc,
|
||||
case DRM_MODE_CONNECTOR_DSI:
|
||||
VOP_REG_SET(vop, output, mipi_pin_pol, pin_pol);
|
||||
VOP_REG_SET(vop, output, mipi_en, 1);
|
||||
VOP_REG_SET(vop, output, mipi_dual_channel_en,
|
||||
!!(s->output_flags & ROCKCHIP_OUTPUT_DSI_DUAL));
|
||||
break;
|
||||
case DRM_MODE_CONNECTOR_DisplayPort:
|
||||
pin_pol &= ~BIT(DCLK_INVERT);
|
||||
|
@@ -60,6 +60,7 @@ struct vop_output {
|
||||
struct vop_reg edp_en;
|
||||
struct vop_reg hdmi_en;
|
||||
struct vop_reg mipi_en;
|
||||
struct vop_reg mipi_dual_channel_en;
|
||||
struct vop_reg rgb_en;
|
||||
};
|
||||
|
||||
@@ -214,6 +215,9 @@ struct vop_data {
|
||||
/* for use special outface */
|
||||
#define ROCKCHIP_OUT_MODE_AAAA 15
|
||||
|
||||
/* output flags */
|
||||
#define ROCKCHIP_OUTPUT_DSI_DUAL BIT(0)
|
||||
|
||||
enum alpha_mode {
|
||||
ALPHA_STRAIGHT,
|
||||
ALPHA_INVERSE,
|
||||
|
@@ -361,7 +361,11 @@ static const struct vop_win_data rk3188_vop_win_data[] = {
|
||||
};
|
||||
|
||||
static const int rk3188_vop_intrs[] = {
|
||||
0,
|
||||
/*
|
||||
* hs_start interrupt fires at frame-start, so serves
|
||||
* the same purpose as dsp_hold in the driver.
|
||||
*/
|
||||
DSP_HOLD_VALID_INTR,
|
||||
FS_INTR,
|
||||
LINE_FLAG_INTR,
|
||||
BUS_ERROR_INTR,
|
||||
@@ -630,6 +634,7 @@ static const struct vop_output rk3399_output = {
|
||||
.hdmi_en = VOP_REG(RK3288_SYS_CTRL, 0x1, 13),
|
||||
.edp_en = VOP_REG(RK3288_SYS_CTRL, 0x1, 14),
|
||||
.mipi_en = VOP_REG(RK3288_SYS_CTRL, 0x1, 15),
|
||||
.mipi_dual_channel_en = VOP_REG(RK3288_SYS_CTRL, 0x1, 3),
|
||||
};
|
||||
|
||||
static const struct vop_data rk3399_vop_big = {
|
||||
|
Atsaukties uz šo jaunā problēmā
Block a user