-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
drm: Initial KMS driver for AST (ASpeed Technologies) 2000 series (v2)
This is the initial driver for the Aspeed Technologies chips found in servers. This driver supports the AST 2000, 2100, 2200, 2150 and 2300. It doesn't support the AST11xx due to lack of hw to test it on, and them requiring different codepaths. This driver is intended to be used with xf86-video-modesetting in userspace. This driver has a slightly different design than other KMS drivers, but future server chips will probably share similiar setup. As these GPUs commonly have low video RAM, it doesn't make sense to put the kms console in VRAM always. This driver places the kms console into system RAM, and does dirty updates to a copy in video RAM. When userspace sets a new scanout buffer, it forcefully evicts the video RAM console, and X can create a framebuffer that can use all of of video RAM. This driver uses TTM but in a very simple fashion to control the eviction to system RAM of the console, and multiple servers. v2: add s/r support, fix Kconfig. Signed-off-by: Dave Airlie <airlied@redhat.com>
- Loading branch information
Dave Airlie
committed
May 17, 2012
1 parent
db2e034
commit 312fec1
Showing
13 changed files
with
5,296 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
config DRM_AST | ||
tristate "AST server chips" | ||
depends on DRM && PCI && EXPERIMENTAL | ||
select DRM_TTM | ||
select FB_SYS_COPYAREA | ||
select FB_SYS_FILLRECT | ||
select FB_SYS_IMAGEBLIT | ||
select DRM_KMS_HELPER | ||
help | ||
Say yes for experimental AST GPU driver. Do not enable | ||
this driver without having a working -modesetting, | ||
and a version of AST that knows to fail if KMS | ||
is bound to the driver. These GPUs are commonly found | ||
in server chipsets. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
# | ||
# Makefile for the drm device driver. This driver provides support for the | ||
# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher. | ||
|
||
ccflags-y := -Iinclude/drm | ||
|
||
ast-y := ast_drv.o ast_main.o ast_mode.o ast_fb.o ast_ttm.o ast_post.o | ||
|
||
obj-$(CONFIG_DRM_AST) := ast.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,144 @@ | ||
#ifndef AST_DRAM_TABLES_H | ||
#define AST_DRAM_TABLES_H | ||
|
||
/* DRAM timing tables */ | ||
struct ast_dramstruct { | ||
u16 index; | ||
u32 data; | ||
}; | ||
|
||
static const struct ast_dramstruct ast2000_dram_table_data[] = { | ||
{ 0x0108, 0x00000000 }, | ||
{ 0x0120, 0x00004a21 }, | ||
{ 0xFF00, 0x00000043 }, | ||
{ 0x0000, 0xFFFFFFFF }, | ||
{ 0x0004, 0x00000089 }, | ||
{ 0x0008, 0x22331353 }, | ||
{ 0x000C, 0x0d07000b }, | ||
{ 0x0010, 0x11113333 }, | ||
{ 0x0020, 0x00110350 }, | ||
{ 0x0028, 0x1e0828f0 }, | ||
{ 0x0024, 0x00000001 }, | ||
{ 0x001C, 0x00000000 }, | ||
{ 0x0014, 0x00000003 }, | ||
{ 0xFF00, 0x00000043 }, | ||
{ 0x0018, 0x00000131 }, | ||
{ 0x0014, 0x00000001 }, | ||
{ 0xFF00, 0x00000043 }, | ||
{ 0x0018, 0x00000031 }, | ||
{ 0x0014, 0x00000001 }, | ||
{ 0xFF00, 0x00000043 }, | ||
{ 0x0028, 0x1e0828f1 }, | ||
{ 0x0024, 0x00000003 }, | ||
{ 0x002C, 0x1f0f28fb }, | ||
{ 0x0030, 0xFFFFFE01 }, | ||
{ 0xFFFF, 0xFFFFFFFF } | ||
}; | ||
|
||
static const struct ast_dramstruct ast1100_dram_table_data[] = { | ||
{ 0x2000, 0x1688a8a8 }, | ||
{ 0x2020, 0x000041f0 }, | ||
{ 0xFF00, 0x00000043 }, | ||
{ 0x0000, 0xfc600309 }, | ||
{ 0x006C, 0x00909090 }, | ||
{ 0x0064, 0x00050000 }, | ||
{ 0x0004, 0x00000585 }, | ||
{ 0x0008, 0x0011030f }, | ||
{ 0x0010, 0x22201724 }, | ||
{ 0x0018, 0x1e29011a }, | ||
{ 0x0020, 0x00c82222 }, | ||
{ 0x0014, 0x01001523 }, | ||
{ 0x001C, 0x1024010d }, | ||
{ 0x0024, 0x00cb2522 }, | ||
{ 0x0038, 0xffffff82 }, | ||
{ 0x003C, 0x00000000 }, | ||
{ 0x0040, 0x00000000 }, | ||
{ 0x0044, 0x00000000 }, | ||
{ 0x0048, 0x00000000 }, | ||
{ 0x004C, 0x00000000 }, | ||
{ 0x0050, 0x00000000 }, | ||
{ 0x0054, 0x00000000 }, | ||
{ 0x0058, 0x00000000 }, | ||
{ 0x005C, 0x00000000 }, | ||
{ 0x0060, 0x032aa02a }, | ||
{ 0x0064, 0x002d3000 }, | ||
{ 0x0068, 0x00000000 }, | ||
{ 0x0070, 0x00000000 }, | ||
{ 0x0074, 0x00000000 }, | ||
{ 0x0078, 0x00000000 }, | ||
{ 0x007C, 0x00000000 }, | ||
{ 0x0034, 0x00000001 }, | ||
{ 0xFF00, 0x00000043 }, | ||
{ 0x002C, 0x00000732 }, | ||
{ 0x0030, 0x00000040 }, | ||
{ 0x0028, 0x00000005 }, | ||
{ 0x0028, 0x00000007 }, | ||
{ 0x0028, 0x00000003 }, | ||
{ 0x0028, 0x00000001 }, | ||
{ 0x000C, 0x00005a08 }, | ||
{ 0x002C, 0x00000632 }, | ||
{ 0x0028, 0x00000001 }, | ||
{ 0x0030, 0x000003c0 }, | ||
{ 0x0028, 0x00000003 }, | ||
{ 0x0030, 0x00000040 }, | ||
{ 0x0028, 0x00000003 }, | ||
{ 0x000C, 0x00005a21 }, | ||
{ 0x0034, 0x00007c03 }, | ||
{ 0x0120, 0x00004c41 }, | ||
{ 0xffff, 0xffffffff }, | ||
}; | ||
|
||
static const struct ast_dramstruct ast2100_dram_table_data[] = { | ||
{ 0x2000, 0x1688a8a8 }, | ||
{ 0x2020, 0x00004120 }, | ||
{ 0xFF00, 0x00000043 }, | ||
{ 0x0000, 0xfc600309 }, | ||
{ 0x006C, 0x00909090 }, | ||
{ 0x0064, 0x00070000 }, | ||
{ 0x0004, 0x00000489 }, | ||
{ 0x0008, 0x0011030f }, | ||
{ 0x0010, 0x32302926 }, | ||
{ 0x0018, 0x274c0122 }, | ||
{ 0x0020, 0x00ce2222 }, | ||
{ 0x0014, 0x01001523 }, | ||
{ 0x001C, 0x1024010d }, | ||
{ 0x0024, 0x00cb2522 }, | ||
{ 0x0038, 0xffffff82 }, | ||
{ 0x003C, 0x00000000 }, | ||
{ 0x0040, 0x00000000 }, | ||
{ 0x0044, 0x00000000 }, | ||
{ 0x0048, 0x00000000 }, | ||
{ 0x004C, 0x00000000 }, | ||
{ 0x0050, 0x00000000 }, | ||
{ 0x0054, 0x00000000 }, | ||
{ 0x0058, 0x00000000 }, | ||
{ 0x005C, 0x00000000 }, | ||
{ 0x0060, 0x0f2aa02a }, | ||
{ 0x0064, 0x003f3005 }, | ||
{ 0x0068, 0x02020202 }, | ||
{ 0x0070, 0x00000000 }, | ||
{ 0x0074, 0x00000000 }, | ||
{ 0x0078, 0x00000000 }, | ||
{ 0x007C, 0x00000000 }, | ||
{ 0x0034, 0x00000001 }, | ||
{ 0xFF00, 0x00000043 }, | ||
{ 0x002C, 0x00000942 }, | ||
{ 0x0030, 0x00000040 }, | ||
{ 0x0028, 0x00000005 }, | ||
{ 0x0028, 0x00000007 }, | ||
{ 0x0028, 0x00000003 }, | ||
{ 0x0028, 0x00000001 }, | ||
{ 0x000C, 0x00005a08 }, | ||
{ 0x002C, 0x00000842 }, | ||
{ 0x0028, 0x00000001 }, | ||
{ 0x0030, 0x000003c0 }, | ||
{ 0x0028, 0x00000003 }, | ||
{ 0x0030, 0x00000040 }, | ||
{ 0x0028, 0x00000003 }, | ||
{ 0x000C, 0x00005a21 }, | ||
{ 0x0034, 0x00007c03 }, | ||
{ 0x0120, 0x00005061 }, | ||
{ 0xffff, 0xffffffff }, | ||
}; | ||
|
||
#endif |
Oops, something went wrong.