工具/软件:Linux
尊敬的专家:
客户希望进行180度旋转以进行显示。 它们在内核中已更改为以下红线代码、并且能够看到显示旋转。 然而 、马赛克显示为电路板上电或断电。 下面是显示的快照。
下面是 drivers\GPU\DRM\omapdrm\OMA_plane.c 下 OMAP-plan_init()中代码的快照
struct drm_plane * omap_plane_init (struct drm_device * dev、int id、bool private_plane)
{
struct omap_drm_private *priv号= dev->dev_private;
struct drm_plane *平面= NULL;
结构 OMAP-plane * OMAP-plane;
struct omap_overlay_info *信息;
内转台;
DBG ("%s":PRIV=%d、基准面名称[id]、私有基准面);
omap_plane = kzalloc (sizeof (* omap_plane)、GFP_kernel);
如果(!OMA_plane)
转至失败;
RET = DRM_FLIP_WIT_INIT (&OMA_plane->unpin_work、16、
"unpin"、unpin_worker");
如果(RET){
DEV_ERR (DEV->DEV、"无法分配非引脚 FIFO\n");
转至失败;
}
omap_plane->nformats = omap_framebuffer_get_formats()
omap_plan->formats、array_size (omap_plan->formats)、
dss_f壮举_get_supported_color_modes (id));
omap_plane->id = id;
omap_plane->name =平面名称[id];
平面=&OMA_plan->base;
omap_plan->apple.pre_apply = omap_plane_pre_apply;
omap_plan->apple.post_apply = omap_plane_post_apply;
omap_plane->ERROR_IRQ.irqmask = ERROR_IRQ[id];
omap_plan->error_IRQ.IRQ = omap_plan_error_IRQ;
omap_irq_register (dev、&omap_plane->error_IRQ);
DRM_plane_init (dev、plane、(1 << priv->num_crtcs)- 1、&OMA_plan_funcs、
omap_plan->Formats、omap_plan->nformats、private_plane);
omap_plan_install_properties (平面、&plane->base);
/*获取我们的起始配置,设置参数的默认值
*我们目前不使用等:
*
INFO =&OMA_plan->INFO;
info->rotation_type = OMA_DSS_ROT_DMA;
info->rotation = OMA_DSS_ROT_180; /*从0旋转到180*/
INFO->GLOBAL_ALPHA = 0xff;
info->mirror =1; /* mirror 从0*/更改为1
/*根据我们是 CRTC 还是覆盖层来设置默认值
*图层。
* TODO 添加 ioctl 为用户空间提供 API 来更改此内容。 这种情况
*将在后续补丁中提供。
*
IF (私有平面)
omap_plane->info.zorder = 0;
其他
omap_plane->info.zorder = id;
返回平面;
失败:
IF (平面)
omap_plane_destroy (平面);
返回空;
}

