A seguinte solução é fornecida sem qualquer garantia. Esteja ciente de que o envio de sinais HDMI que violem o padrão pode ser ruim para sua TV / projetor e que o seguinte pequeno corte quebra as camadas de abstração, que foram introduzidas por um motivo. Por favor, não peça um patch de kernel (por exemplo, arquive um bug).
Um método é uma pequena modificação do módulo drm kernel. Por favor leia Como (receita) construir apenas um módulo do kernel? primeiro.
O arquivo que você deve modificar é: drivers / gpu / drm / drm_edid.c . Nós mudamos esta linha para:
s3d_flags = (mode->flags & DRM_MODE_FLAG_3D_MASK) ||
(mode->vdisplay == 2205);
e insira aqui as seguintes linhas:
if(mode->vdisplay == 2205)
return HDMI_3D_STRUCTURE_FRAME_PACKING;
Você deve remover a maioria (se não todos) os módulos específicos da placa gráfica de drivers/gpu/drm/Makefile
antes de compilar o módulo drm de acordo
à questão mencionada no início. Esteja ciente de que você precisa atualizar o initramfs, já que o módulo drm é carregado no momento da inicialização.
Esta solução foi testada com um projetor Epson e placa gráfica Intel (usa i915). Antes de modificar o módulo drm, você deve verificar se o módulo do kernel de sua placa gráfica realmente usa as funções relevantes do módulo drm. Caso contrário, esse truque é inútil.