AR# 68227

|

Video Common ライブラリ - ベアメタル ドライバーと Linux ドライバーのビデオ タイミング表にカスタム解像度のサポートを追加する方法

説明

ビデオ タイミング表にカスタム解像度のサポートを追加する方法を教えてください。

Video Common ライブラリのデフォルト タイミング表には Common タイミング表の多くが含まれていますが、アプリケーションの解像度を追加するにはどうすればよいですか。

ソリューション

ベアメタル アプリケーション

ビデオ タイミングは、Video Common ライブラリの XIDC_timings_table.c ファイルで定義されています。これには、カスタム解像度表を作成して登録するための API が含まれています。

特定の解像度を登録する方法の例は、次のとおりです。

1 および 2 は、定数宣言が行われる場所 (.h ファイルなど) で実行できますが、3 は動作時に実行する必要があります。

1) Mode ID Enumeration を割り当てます。これらは XVIDC_VM_CUSTOM 定数よりも大きい値にする必要があります。

/* Assign Mode ID Enumeration. First entry Must be > XVIDC_VM_CUSTOM */
typedef enum {
    XVIDC_VM_3840x2160_30_P_SB = (XVIDC_VM_CUSTOM + 1),
    XVIDC_CM_NUM_SUPPORTED
} XVIDC_CUSTOM_MODES;

2) サポートする各カスタム解像度を入力したカスタム表を作成します。

/* Create entry for each mode in the custom table */
const XVidC_VideoTimingMode XVidC_MyVideoTimingMode[(XVIDC_CM_NUM_SUPPORTED - (XVIDC_VM_CUSTOM + 1))] =
{
    { XVIDC_VM_3840x2160_30_P_SB, "3840x2160@30Hz (SB)", XVIDC_FR_30HZ,
        {3840, 48, 32, 80, 4000, 1,
         2160, 3, 5, 23, 2191, 0, 0, 0, 0, 1} }
};

3) 次に、この表をアプリケーションに登録します。

これは、ペリフェラルを初期化する前に実行できます。

/* User registers custom timing table */
  xil_printf("INFO> Registering Custom Timing Table with %d entries \r\n", (XVIDC_CM_NUM_SUPPORTED - (XVIDC_VM_CUSTOM + 1)));
  Status = XVidC_RegisterCustomTimingModes(XVidC_MyVideoTimingMode, (XVIDC_CM_NUM_SUPPORTED - (XVIDC_VM_CUSTOM + 1)));
  if (Status != XST_SUCCESS) {
      xil_printf("ERR: Unable to register custom timing table\r\n\r\n");
  }

 

Linux アプリケーション

ビデオ タイミング情報は、https://github.com/Xilinx/linux-xlnx/blob/master/drivers/gpu/drm/drm_edid.c で定義されています。

新しい解像度を static const struct drm_display_mode drm_dmt_modes[] = {} に追加する必要があります。

/* 0x59 - 1440x2560@50Hz 16:9 */ //customer size
{ DRM_MODE("1440x2560", DRM_MODE_TYPE_DRIVER, 204792, 1440, 1510,
1545, 1590, 0, 2560, 2572, 2574, 2576, 0,
DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },

static const struct drm_display_mode edid_cea_modes[] = {} にも新しい解像度を追加する必要があります。

/* 108 - 1440x2560@50Hz 16:9 */ //customer size
{ DRM_MODE("1440x2560", DRM_MODE_TYPE_DRIVER, 204792, 1440, 1510,
1545, 1590, 0, 2560, 2572, 2574, 2576, 0,
DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
.vrefresh = 50, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_NONE, },

これで、カーネルを再構築します。

アンサー レコード リファレンス

マスター アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
54546 HDMI 1.4/2.0 Receiver (RX) Subsystem - Vivado ツール 2015.1 以降のバージョンのリリース ノートおよび既知の問題 N/A N/A
AR# 68227
日付 10/23/2020
ステータス アクティブ
種類 一般
IP
People Also Viewed