Commit Graph

422 Commits

Author SHA1 Message Date
Alexander von Gluck IV
025d4eed52 * reorganize register definitions
There were a large number if incorrect, duplicated, misplaced
  registers that were leading to bugs in the code.  This is my first
  shot at cleaning them up.  Luckly as we are using AtomBIOS the number
  of registers we need to know about is shrinking.
* remove registers left over from register banging days
* r770 is less then r710, r720 in the drm sources. Fix in code.
* enable newer radeons for testing


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42930 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-28 04:30:54 +00:00
Alexander von Gluck IV
46af81655d * redesign pretty much everything frame buffer related
* don't resize the frame buffer after mapping it.. doesn't make sense
* add memory controller code and program the memory controller for r600
* remove unneeded frame_buffer_int
* don't malloc mc_info, waste of time
* fix scaler setting
* vramStart in mc should be 0... get vertical colored lines however when this
  this is set properly (everything in mc_info is the MC view of FB BAR)
  When vramStart is the FB physical address... i get proper video on some cards
  ... thoughts?


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42924 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-26 04:51:51 +00:00
Alexander von Gluck IV
d5c8ef5d69 * add chipset flags vs isIGP
* we can now utilize these chipset
  flags throughout the driver to better id
  cards and features
* remove leftover BIOS size define from intel skel
* no *real* functional change


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42904 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-24 17:53:22 +00:00
Alexander von Gluck IV
98421bb887 * simplify some trace statements
* add potential support for IGP chipsets
* igp code is *untested* and should work *in theory*
* potentially resolves #8040 / #8046 ?


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42901 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-24 14:58:27 +00:00
Alexander von Gluck IV
a4ba3a0f61 * pass dceMajor and dceMinor to accelerant
* will fix other var names to match style guidelines
  shortly


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42891 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-21 14:32:01 +00:00
Alexander von Gluck IV
9774c58f55 * remove un-used registers that were left over from
base intel_extreme driver long ago
* no functional change


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42880 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-18 18:11:26 +00:00
Alexander von Gluck IV
afbd52f16a * improve framebuffer programming on newer cards
* correct? color mode setting bug
* fix var naming to match style guidelines
* add a few missing register defines


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42879 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-18 05:54:28 +00:00
Michael Lotz
4254fc3705 Fix wrong register values introduced in r42870.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42872 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-16 22:00:30 +00:00
Michael Lotz
1f75663ca6 Remove the interrupt register block. These aren't actually identitiy mapped
(they are actually reversed), so introduce a find_reg() inline function to map
such regs individually instead. Should fix interrupt storms on SandyBridge.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42870 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-16 20:48:54 +00:00
Michael Lotz
c0cb09baee * Add a couple more SandyBridge IDs. They might work, but I can't test them.
* Also add the definitions and some specifics for IronLake (ILK), but keep the
  IDs disabled as at least the one version I can test with doesn't work yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42869 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-16 20:02:56 +00:00
Michael Lotz
9e2e0d8dac Make some more SandyBridge specifics into Platform Control Hub (PCH) specifics.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42868 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-16 19:36:02 +00:00
Michael Lotz
c788baed28 Style cleanups only, no functional change.
* Make the pointer style consistent accross all components, which should make it
  easier when working all over the place.
* 80 char limits.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42863 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-16 15:15:03 +00:00
Michael Lotz
2d004e3e89 Fix register definition for image size registers. They are in the north pipe
control block. Doesn't matter on (G)MCH (they are the same register block tehre)
but fixes mode setting on PCH again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42862 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-16 14:38:44 +00:00
Michael Lotz
f0468be384 * Rework how registers are accessed. Most registers are now grouped into
register blocks and we encode their block into the register definition. On
  register access these blocks are then translated into the final address.
* Set up the register blocks for (G)MCH and PCH variants.
* Remove most SandyBridge code that was actually PCH specific and is now taken
  care of automatically.
* This will temporarily break SandyBridge support again until the right
  transcoders are actually programmed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42857 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-15 15:35:35 +00:00
Michael Lotz
16cc59778b Attempt at panel control for SandyBridge, still disabled though as it doesn't
work yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42856 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-15 11:20:40 +00:00
Michael Lotz
b4f4ac9237 Group the PCH registers logically.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42852 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-14 20:15:33 +00:00
Michael Lotz
bff57edf94 Add indexed color mode support for SandyBridge.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42851 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-14 19:30:20 +00:00
Michael Lotz
395d16a9bd Some more SandyBridge specifics to get V-blank interrupts going.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42850 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-14 19:11:29 +00:00
Michael Lotz
951b5e5147 More SandyBridge specifics: Use the proper registers for display detection and
DPMS. Still needs to be reworked...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42846 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-13 16:56:11 +00:00
Michael Lotz
e436a27e5f * Add preliminary support for one SandyBridge mobile integrated graphics device
(the one in my new ThinkPad X1). The PLL is still off a bit so it has a few
  blurry stripes, but EDID and mode setting basically works.
* Starting with IronLake the north/south bridge or (G)MCH/ICH setup was moved
  into a platform control hub (PCH) which means that many registers previously
  located in the GMCH are now in the PCH and have a new address.
* I'm committing this mostly because this way the additions are more easy to
  follow. It is a bit messy and I'll clean it up more and possibly make it a
  bit more generic. Also most of these changes actually apply to IronLake and up
  and aren't SandyBridge specific, so a few of those additions will still get a
  broader scope and new chips will be added.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42839 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-13 09:07:33 +00:00
Axel Dörfler
83187b29d3 * Added helper functions for the "propose mode" accelerant hook.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42741 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-09-11 18:29:50 +00:00
Alexander von Gluck IV
440381c60f * rename video_electronics to video_configuration as per Axel
* rename decode_* to get_*
* clean up get_* text when unknown connector/encoder


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42717 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-09-06 16:01:33 +00:00
Alexander von Gluck IV
3671476941 * add video_electronics.c
(.c to keep compatibility with older C accelerants)
* use functions for decoding video_electronics
* thanks for the guidance Axel!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42668 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-21 17:30:55 +00:00
Alexander von Gluck IV
cd73cccda7 * add a new generic video electronics define,
this seems like it could be useful for more then
  just radeon_hd.
* idea from linux drm driver
* feedback / flames welcome
* can move into radeon_hd private defines if requested


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42662 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-21 16:00:45 +00:00
Alexander von Gluck IV
d3e8b64208 * introduce mc control calls
* malloc storage for mc state info
* redo pll range struct
* change to ATOM_ENCODER_MODE for connector info
* redo pll calculations to match AtomBIOS requirements
* some structure changes
* no longer init already posted AtomBIOS as it
  causes an infinite loop of AtomBIOS calls


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42644 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-19 23:07:45 +00:00
Alexander von Gluck IV
a823207363 * add card instance to accelerant shared info
* when TRACE_ATOM is enabled in bios.c, we dump
  each accelerant instance of the AtomBIOS rom
  to disk in /boot/common/cache/tmp/ (next to usb
  hid descriptors in the same file name format)
* these images can be parsed with the AtomDis application


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42622 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-11 05:17:34 +00:00
Alexander von Gluck IV
d356bf5033 * consolidate and remove unneeded Xorg headers
* move mc code to more generic gpu source/header
* add gpu reset functions (with r600 documented)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42616 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-10 15:48:20 +00:00
Alexander von Gluck IV
c9c7be9a54 * add initial set of Northern Island cards
* add igp property to pciid map
* add disabled bios pull for r700 and ni cards
* refactor model numbering as >R700 AMD switched
  to named card families


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42596 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-07 20:16:32 +00:00
Alexander von Gluck IV
6da3f7d4c1 * lots of changes
* add missing header for some radeon registers
* begin removing now un-needed direct register calls
* move and refactor crtc functions
* fix function naming to be clearer
* create more AtomBIOS style calls
* this will eat your cat at the moment, don't bother testing


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42582 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-05 22:24:57 +00:00
Alexander von Gluck IV
3f98c1831c * create area for AtomBIOS
* clone mapped AtomBIOS area into accelerant


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42560 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-03 23:23:16 +00:00
Alexander von Gluck IV
5cf44dda39 * move obtaining / copying the vga bios into the driver.
* add missing r500 header
* replace r600 headers with newer one from kernel


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42554 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-03 18:16:10 +00:00
Alexander von Gluck IV
1d5cfc649a * move bios functions into bios.cpp
* implement various methods to pull AtomBIOS from card
* add some missing registers to headers from linux drm driver


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42553 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-03 03:02:57 +00:00
Alexander von Gluck IV
52aeea2482 * Register additions
* No functional change


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42545 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-02 22:14:13 +00:00
Alexander von Gluck IV
22582a297c * Map AtomBIOS specified by PCI rom into virtual memory
* Point AtomBIOS to PCI rom mapped in memory
* Things no longer crash, but we get an Invalid BIOS Magic error
  in the logs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42543 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-02 18:05:52 +00:00
Alexander von Gluck IV
ef2909a10f * Move bios_info into shared info
* Pull pci_rom base address from pci subsystem
* Point AtomBIOS parser to pci rom address
  to set up and malloc atom_context
* This is untested! Don't run on an
  expensive card until I test it on a cheaper
  one!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42541 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-02 14:58:56 +00:00
Alexander von Gluck IV
eb02753779 * Little cleanup
* Add missing Idle call for connectors
* Reformulate blanking.. this should match what the
  register is after the GTF vesa call
* Set FrameBuffer to card internal address


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42509 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-07-29 06:10:52 +00:00
Axel Dörfler
d3d53515a9 * Add the width, and height to fill_display_mode(). This should help with #7751
this time.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42454 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-07-19 18:16:58 +00:00
Axel Dörfler
95009aeeb0 * Imported Andy Ritger's GTF code in compute_display_timing.cpp, and mangled it
into a usable function - this has some coding style issues I did not care to
  fix.
* _AddBaseMode() now computes the mode in case it is not present in the list
  yet.
* This should help with bug #7787.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42420 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-07-13 23:26:26 +00:00
Alexander von Gluck IV
b6c5f46896 * Add D2 GRPH update lock register to priv headers
* Add crtControl global register
* Add grphUpdate storage
* Do some logical reordering of register writes
* Correct crt final power-on checks
* Enhance tracing
* Disable PLL, it is needed but seems to completely break
  the modesetting resulting in black-screen-of-doom.
  (fixing PLL set/calibration is now priority one)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42380 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-07-04 22:24:17 +00:00
Rene Gollent
124cdd4f57 Applied patch by Gerald Zajac: Adds hardware overlay support to the ATI
mach64/Rage driver. Resolves #5314. Thanks!



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42335 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-28 19:13:49 +00:00
Alexander von Gluck IV
f7f3828178 pass device pciid through to accelerant
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42203 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-16 03:10:17 +00:00
Alexander von Gluck IV
58ddd30b23 add universal RadeonHD power states
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42189 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-15 15:44:14 +00:00
Alexander von Gluck IV
217c0b1d48 Add surface address high handling; set primary and secondary surface frame buffer offset
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41769 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-27 02:14:54 +00:00
Alexander von Gluck IV
fffb954b89 add D2 secondary surface address, not sure why it was missing in radeonhd driver
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41761 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-26 18:10:43 +00:00
Alexander von Gluck IV
3be5e03652 * rename graphics_memory to frame_buffer. lets keep consistant
* pass mapped frame buffer area id to accelerant
* remove my temporary hacked together frame buffer memory mapping
* completely rely on PCI BAR for now for aperture size / location instead of
  R6XX_CONFIG_FB_BASE reg.
* Remove my temporary AllocateFB function.
* set grphPrimarySurfaceAddr to physical memory frame buffer location (offset 0)
* fix P/N sync setting.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41722 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-24 22:08:54 +00:00
Alexander von Gluck IV
51a43d0ff4 ensure framebuffer doesn't exceed PCI bar; add basic monitoring of frame buffer memory allocation; fix return of framebuffer to OS to be the correct area
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41586 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-19 17:39:07 +00:00
Alexander von Gluck IV
882e2ef79b remove frame_buffer_pci as it duplicates frame_buffer_phys, remove frame_buffer_base as it duplicates framebuffer_area
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41570 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-18 18:43:28 +00:00
Alexander von Gluck IV
90af954387 * actually set device_chipset before reading it.
* make shared memory info naming clearer.
* move frame buffer internal offset read to driver
* remove check of > 512MB as we really should always use frame_buffer_size


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41569 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-18 18:38:28 +00:00
Alexander von Gluck IV
56e6d991bb make math easier to read; fix chipset int length; additions to CardScale
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41561 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-18 04:25:05 +00:00
Alexander von Gluck IV
6c43ea6336 read and store aperture size (will be used in fblocation calculations)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41543 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-16 18:10:49 +00:00