mirror of
https://github.com/torvalds/linux.git
synced 2024-11-16 00:52:01 +00:00
drm/i915/bios: add proper documentation for the Video BIOS Table (VBT)
Add an overview and documentation for the VBT/BDB header structures. Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/3d826d4600688ca3518713776ab5bd8a8fc9f20f.1450702954.git.jani.nikula@intel.com
This commit is contained in:
parent
0bff485865
commit
dd97950a4c
@ -4108,6 +4108,12 @@ int num_ioctls;</synopsis>
|
||||
!Pdrivers/gpu/drm/i915/intel_csr.c csr support for dmc
|
||||
!Idrivers/gpu/drm/i915/intel_csr.c
|
||||
</sect2>
|
||||
<sect2>
|
||||
<title>Video BIOS Table (VBT)</title>
|
||||
!Pdrivers/gpu/drm/i915/intel_bios.c Video BIOS Table (VBT)
|
||||
!Idrivers/gpu/drm/i915/intel_bios.c
|
||||
!Idrivers/gpu/drm/i915/intel_bios.h
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
|
@ -31,6 +31,28 @@
|
||||
#include "i915_drv.h"
|
||||
#include "intel_bios.h"
|
||||
|
||||
/**
|
||||
* DOC: Video BIOS Table (VBT)
|
||||
*
|
||||
* The Video BIOS Table, or VBT, provides platform and board specific
|
||||
* configuration information to the driver that is not discoverable or available
|
||||
* through other means. The configuration is mostly related to display
|
||||
* hardware. The VBT is available via the ACPI OpRegion or, on older systems, in
|
||||
* the PCI ROM.
|
||||
*
|
||||
* The VBT consists of a VBT Header (defined as &struct vbt_header), a BDB
|
||||
* Header (&struct bdb_header), and a number of BIOS Data Blocks (BDB) that
|
||||
* contain the actual configuration information. The VBT Header, and thus the
|
||||
* VBT, begins with "$VBT" signature. The VBT Header contains the offset of the
|
||||
* BDB Header. The data blocks are concatenated after the BDB Header. The data
|
||||
* blocks have a 1-byte Block ID, 2-byte Block Size, and Block Size bytes of
|
||||
* data. (Block 53, the MIPI Sequence Block is an exception.)
|
||||
*
|
||||
* The driver parses the VBT during load. The relevant information is stored in
|
||||
* driver private data for ease of use, and the actual VBT is not read after
|
||||
* that.
|
||||
*/
|
||||
|
||||
#define SLAVE_ADDR1 0x70
|
||||
#define SLAVE_ADDR2 0x72
|
||||
|
||||
@ -1285,7 +1307,7 @@ static const struct vbt_header *find_vbt(void __iomem *bios, size_t size)
|
||||
|
||||
/**
|
||||
* intel_bios_init - find VBT and initialize settings from the BIOS
|
||||
* @dev: DRM device
|
||||
* @dev_priv: i915 device instance
|
||||
*
|
||||
* Loads the Video BIOS and checks that the VBT exists. Sets scratch registers
|
||||
* to appropriate values.
|
||||
|
@ -28,22 +28,40 @@
|
||||
#ifndef _I830_BIOS_H_
|
||||
#define _I830_BIOS_H_
|
||||
|
||||
/**
|
||||
* struct vbt_header - VBT Header structure
|
||||
* @signature: VBT signature, always starts with "$VBT"
|
||||
* @version: Version of this structure
|
||||
* @header_size: Size of this structure
|
||||
* @vbt_size: Size of VBT (VBT Header, BDB Header and data blocks)
|
||||
* @vbt_checksum: Checksum
|
||||
* @reserved0: Reserved
|
||||
* @bdb_offset: Offset of &struct bdb_header from beginning of VBT
|
||||
* @aim_offset: Offsets of add-in data blocks from beginning of VBT
|
||||
*/
|
||||
struct vbt_header {
|
||||
u8 signature[20]; /**< Always starts with 'VBT$' */
|
||||
u16 version; /**< decimal */
|
||||
u16 header_size; /**< in bytes */
|
||||
u16 vbt_size; /**< in bytes */
|
||||
u8 signature[20];
|
||||
u16 version;
|
||||
u16 header_size;
|
||||
u16 vbt_size;
|
||||
u8 vbt_checksum;
|
||||
u8 reserved0;
|
||||
u32 bdb_offset; /**< from beginning of VBT */
|
||||
u32 aim_offset[4]; /**< from beginning of VBT */
|
||||
u32 bdb_offset;
|
||||
u32 aim_offset[4];
|
||||
} __packed;
|
||||
|
||||
/**
|
||||
* struct bdb_header - BDB Header structure
|
||||
* @signature: BDB signature "BIOS_DATA_BLOCK"
|
||||
* @version: Version of the data block definitions
|
||||
* @header_size: Size of this structure
|
||||
* @bdb_size: Size of BDB (BDB Header and data blocks)
|
||||
*/
|
||||
struct bdb_header {
|
||||
u8 signature[16]; /**< Always 'BIOS_DATA_BLOCK' */
|
||||
u16 version; /**< decimal */
|
||||
u16 header_size; /**< in bytes */
|
||||
u16 bdb_size; /**< in bytes */
|
||||
u8 signature[16];
|
||||
u16 version;
|
||||
u16 header_size;
|
||||
u16 bdb_size;
|
||||
} __packed;
|
||||
|
||||
/* strictly speaking, this is a "skip" block, but it has interesting info */
|
||||
|
Loading…
Reference in New Issue
Block a user