summaryrefslogtreecommitdiff
path: root/README.coding
blob: a2691b2ce9165bf005fd9c0f2293dd1d4298c30e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
Developer's Documentation
=========================

This is a stub only ATM. Please fill in stuff as you find something out that
has been non-trivial (which means that you had to actually think about what
that piece of cra^H^Hode is actually doing).

There is no explicit style guide ATM. Please consider to code in a similar way
as it is already done. Please add abstraction where it is useful, but don't
overdesign. The AtomBIOS layer is probably a bit overdesigned, but that has
only been understood when the code was already there and working fine. So we'll
keep it that way.


Source Code Layout
==================

All source code files - they still need a oneliner as description...


General Stuff
-------------

rhd.h
rhd_acpi.[ch]
rhd_audio.[ch]
rhd_card.h
rhd_connector.[ch]
rhd_crtc.[ch]
rhd_cursor.[ch]
rhd_driver.c
rhd_edid.c
rhd_hdmi.[ch]
rhd_helper.c
rhd_i2c.[ch]
rhd_id.c
rhd_lut.[ch]
rhd_mc.[ch]
rhd_modes.[ch]
rhd_monitor.[ch]
rhd_output.[ch]
rhd_pll.[ch]
rhd_pm.[ch]
rhd_randr.[ch]
rhd_vga.[ch]
rhd_video.[ch]

Register Definitions
--------------------

r5xx_3dregs.h
r5xx_regs.h
r600_reg.h
r600_reg_auto_r6xx.h
r600_reg_r6xx.h
r600_reg_r7xx.h
rhd_regs.h

AtomBIOS related
----------------

atombios_rev.h:		Reverse engineered AtomBIOS table definitions
AtomBios/
rhd_atombios.[ch]
rhd_atomcrtc.c
rhd_atomout.[ch]
rhd_atompll.c
rhd_atomwrapper.[ch]
rhd_biosscratch.[ch]

Output Drivers
--------------
rhd_dac.c
rhd_ddia.c
rhd_dig.c
rhd_lvtma.c
rhd_tmds.c

Acceleration
------------

r5xx_accel.[ch]
r5xx_exa.c
r5xx_xaa.c
r600_exa.c
r600_shader.[ch]
r600_state.h
r600_textured_videofuncs.c
r6xx_accel.[ch]
radeon_exa_render.c
radeon_textured_videofuncs.c
rhd_cs.[ch]
rhd_shadow.[ch]

3D Support
----------

radeon_3d.c
radeon_dri.h
radeon_drm.h
rhd_dri.[ch]


Digital blocks
==============

There are 4 known digital output blocks you can meet on cards:
1) TMDSA (can transmit TMDS)
2) LVTMA (can transmit TMDS or LVDS)
3) DDIA (can transmit TMDS)
4) UNIPHY (can transmit TMDS or LVDS or DisplayPort's signal)

TMDS signal is used for DVI and HDMI
LVDS signal is used for PANEL
DisplayPort's signal is used for DisplayPort of course

Generally:
DDIA can be found on RS600, RS690 and RS740
UNIPHY can be found on DCE 3+ devices (RV620+)
TMDSA can be found on rest of R5xx, R6xx

Note there are cards with external DisplayPort chip which uses DVO
data protocol with an i2c control bus for communication with GPU