AppleIntelFramebufferAzul.sh v2.5 released

A new update of AppleIntelFramebufferAzul.sh is available for download. Have a look at the commits to see what I changed. Here is one big improvement. Enter:

./AppleIntelFramebufferAzul.sh

Gone with the error. Next up. Colorised output with contextual information. Something I previewed here.
AppleFramebufferAzul_v22
Ok. This is actually a screenshot made with v2.2 and thus the output is slightly different. Thing is. Most people will find this improvement handy. Hey. Even I do.

What’s next

If you think that this is it… think again! I am going to change things even further. And big time. I tell you this. When I am done with the update to v3.0 then patching your frame buffer(s) will be much easier. Key point: Forget editors :-)

Bugs

You know the drill. All possible bugs (so called ‘issues’) should be filed at:

https://github.com/Piker-Alpha/AppleIntelFramebufferAzul.sh/issues

Please do not use my blog for this.

Thank you!

AppleIntelFramebufferAzul.sh v2.1 released

You may have missed two earlier updates of AppleIntelFramebufferAzul.sh already, but today adds a third one. It’s available for download right now so get it while it’s still hot. Take a look at the latest commits to see what I changed. Here is one big improvement. Enter:

./AppleIntelFramebufferAzul.sh 0

It starts by showing this error:

Error: AAPL,ig-platform-id: 0 NOT found!

But then it shows this list:

The supported platformIDs are:
------------------------------

[ 1] : 0x0c060000 - Haswell SDV Mobile GT1
[ 2] : 0x0c160000 - Haswell SDV Mobile GT2
[ 3] : 0x0c260000 - Haswell SDV Mobile GT3
[ 4] : 0x04060000 - Haswell Mobile GT1
[ 5] : 0x04160000 - Haswell Mobile GT2
[ 6] : 0x04260000 - Haswell Mobile GT3
[ 7] : 0x0d260000 - Haswell CRW Mobile GT3
[ 8] : 0x0a160000 - Haswell ULT Mobile GT2
[ 9] : 0x0a260000 - Haswell ULT Mobile GT3
[10] : 0x0a260005 - Haswell ULT Mobile GT3
[11] : 0x0a260006 - Haswell ULT Mobile GT3
[12] : 0x0a2e0008 - Haswell ULT E GT3
[13] : 0x0a16000c - Haswell ULT Mobile GT2
[14] : 0x0d260007 - Haswell CRW Mobile GT3
[15] : 0x0d220003 - Haswell CRW GT3
[16] : 0x0a2e000a - Haswell ULT E GT3
[17] : 0x0a26000a - Haswell ULT Mobile GT3
[18] : 0x0a2e000d - Haswell ULT E GT3
[19] : 0x0a26000d - Haswell ULT Mobile GT3
[20] : 0x04120004 - Haswell GT2
[21] : 0x0412000b - Haswell GT2
[22] : 0x0d260009 - Haswell CRW Mobile GT3

Please choose a target platformID (0/1-22) ?

Same thing for AppleIntelFramebufferCapri.sh:

The supported platformIDs are:
------------------------------

[ 1] : 0x01660000 - Ivy Bridge Mobile GT2
[ 2] : 0x01620006 - Ivy Bridge GT2
[ 3] : 0x01620007 - Ivy Bridge GT2
[ 4] : 0x01620005 - Ivy Bridge GT2
[ 5] : 0x01660001 - Ivy Bridge Mobile GT2
[ 6] : 0x01660002 - Ivy Bridge Mobile GT2
[ 7] : 0x01660008 - Ivy Bridge Mobile GT2
[ 8] : 0x01660009 - Ivy Bridge Mobile GT2
[ 9] : 0x01660003 - Ivy Bridge Mobile GT2
[10] : 0x01660004 - Ivy Bridge Mobile GT2
[11] : 0x0166000a - Ivy Bridge Mobile GT2
[12] : 0x0166000b - Ivy Bridge Mobile GT2

Please choose a target platformID (0/1-12) ?

All you need to do is to rename AppleIntelFramebufferAzul.sh to AppleIntelFramebufferCapri.sh but the patch and unto options can only work after you’ve replaced the data in function _initPatchedPlatformInfo and _initFactoryPlatformInfo. Duh!

This is just a start, because boy you want the next update. Badly. Yeah. Another massive improvement ;)

Edit: Here is a first glimpse of something that I want to introduce in a next update; colorised output with contextual information about the data.

AppleFramebufferAzul_v22

And that is just one of the many improvements that I have in mind for you.

Bugs

You know the drill. All possible bugs (so called ‘issues’) should be filed at:

https://github.com/Piker-Alpha/AppleIntelFramebufferAzul.sh/issues

Please do not use my blog for this.

Thank you!

New repository for AppleIntelInfo.kext

I have updated AppleIntelCPUPowerManagementInfo.kext and renamed it to AppleIntelInfo.kext. It is now also much easier to get from my Github repository, and without having to pull/clone RevoBoot.

Intel GPU Register Dumper for OS X

AppleIntelInfo.kext is currently at version 1.0 and includes a new feature which I named: Intel GPU Register Dumper for OS X. This new feature is controlled by another setting in Info.plist (logIntelRegs) and it is set to True by default. The latter may be a problem for people without the IGPU being active/visible but that is something we have to figure out together.

Have a look at Yosemite DP6 with HD4600 to see what it dumps, and it dumps even more now.

Anyway. Now we don’t need to boot into Linux anymore, just to obtain the Intel GPU register data (think: intel_reg_dumper).

Warning

AppleIntelInfo.kext is brand new and may crash!!! In fact I would be surprised if it doesn’t so be prepared.

Bugs

All possible bugs (so called ‘issues’) should be filed at:

https://github.com/Piker-Alpha/AppleIntelInfo/issues

Please do not use my blog for this.

Thank you!

Yosemite DP6 with HD4600

I have very little time to explain what I did, but here is one of the framebuffers that works for me – edit the frame buffers for your setup, follow the links under ‘See also’ for additional information.

Note: 0x0d220003 is just an example – my first Haswell boot was done with 0x0c260000 (see also: Intel HD4600 with full resolution) but I changed it to 0x0a160000 the same day (see _DSM method) but now I let RevoBoot inject 0x04120000.

AAPL,ig-platform-id: 0x0d220003 located @ 296688
———————————————————

00486f0: 0300 220d 0003 0303 0000 0002 0000 3001
0048700: 0000 6000 0000 0060 9914 0000 9914 0000
0048710: 0000 0000 0000 0000 0000 0800 0001 0000
0048720: 3000 0000 0105 0800 0008 0000 0600 0000
0048730: 0204 0a00 0002 0000 8700 0000 ff00 0000
0048740: 0100 0000 4000 0000 0f00 0000 0101 0000
0048750: 0400 0000 0000 0000 0000 0000 0000 0000
0048760: 0000 0000 0000 0000 0000 0000 0e00 0000

AAPL,ig-platform-id = 0300 220d
fStolenMemorySize: 00 00 00 02 = 0x2000000 = 32 MB
fFramebufferMemorySize: 00 00 30 01 = 0x1300000 = 19 MB
fCursorBytes: 00 00 60 00 = 0x600000 = 6291456 / 10 = 629145
VRAM: 00 00 00 60 = 1536 MB
fBacklightFrequency = 9914 00 00 = 5273
fBacklightMax = 9914 0000 = 5273
connector-type: three different connector types are being used here:
0001 0000 = VGA
0008 0000 = HDMI
0002 0000 = DVI

Tip: VRAM (Video RAM) is not the (UEFI) BIOS settings. That is ‘fStolenMemorySize’. Representing the amount of pre-allocated DRAM memory to support the IGPU in VGA (non-linear) and Native (linear) modes. Not that you need it, because VGA is disabled.

Update

Still not perfect, but this one is getting close:

00486f0: 0300 220d 0003 0403 0000 0002 0000 3001
0048700: 0000 9000 0000 0060 9914 0000 9914 0000
0048710: 0000 0000 0000 0000 0000 0800 0001 0000
0048720: 3000 0000 0105 0800 0008 0000 0600 0000
0048730: 0204 0a00 0002 0000 8700 0000 0306 0900
0048740: 0004 0000 4000 0000 d600 0000 0505 0000
0048750: 0400 0000 0000 0000 0000 0000 0000 0000
0048760: 0000 0000 0000 0000 0000 0000 0e00 0000

HDMI only (1 active frame buffer)

00486f0: 0300 220d 0103 0103 0000 0002 0000 3001
0048700: 0000 9000 0000 0060 9914 0000 9914 0000
0048710: 0000 0000 0000 0000 0105 0a00 0008 0000
0048720: 0600 0000 ff00 0000 0000 0000 0000 0000
0048730: ff00 0000 0000 0000 0000 0000 ff00 0000
0048740: 0000 0000 4000 0000 d600 0000 0505 0000
0048750: 0400 0000 0000 0000 0000 0000 0000 0000
0048760: 0000 0000 0000 0000 0000 0000 0e00 0000

DVI only (1 active frame buffer)

00486f0: 0300 220d 0103 0103 0000 0002 0000 3001
0048700: 0000 9000 0000 0060 9914 0000 9914 0000
0048710: 0000 0000 0000 0000 0204 0a00 0002 0000
0048720: 8700 0000 ff00 0000 0000 0000 0000 0000
0048730: ff00 0000 0000 0000 0000 0000 ff00 0000
0048740: 0000 0000 4000 0000 d600 0000 0505 0000
0048750: 0400 0000 0000 0000 0000 0000 0000 0000
0048760: 0000 0000 0000 0000 0000 0000 0e00 0000

DP only (1 active frame buffer)

00486f0: 0300 220d 0103 0103 0000 0002 0000 3001
0048700: 0000 9000 0000 0060 9914 0000 9914 0000
0048710: 0000 0000 0000 0000 0306 0a00 0004 0000
0048720: 0000 0000 ff00 0000 0000 0000 0000 0000
0048730: ff00 0000 0000 0000 0000 0000 ff00 0000
0048740: 0000 0000 4000 0000 d600 0000 0505 0000
0048750: 0400 0000 0000 0000 0000 0000 0000 0000
0048760: 0000 0000 0000 0000 0000 0000 0e00 0000

That should get you started:

1.) No boot loader changes!
2.) No reboot.
3.) No frame buffer crashes.
4.) Boot with single DVI/HDMI/DP connector possible.
5.) Connects to pipe 0.
6.) APPL,boot-display property (Boolean) set to True.
7.) IOFBNeedsRefresh property (Boolean) set to False.

Yosemite_AppleIntelFramebufferAzul_DP6

Output of my Intel Register Dumper for OS X:

HSW_PWR_WELL_CTL1 : 0xc0000000
HSW_PWR_WELL_CTL2 : 0x40000000
HSW_PWR_WELL_CTL3 : 0x40000000
HSW_PWR_WELL_CTL4 : 0x40000000
HSW_PWR_WELL_CTL5 : 0x0004050f
HSW_PWR_WELL_CTL6 : 0x00000000
PIPE_DDI_FUNC_CTL_A : 0xa1010200 (enabled, DDIC, DVI, 8 bpc, -VSync, +HSync, EDP A ON, x1)
PIPE_DDI_FUNC_CTL_B : 0x00030000 (disabled, no port, HDMI, 8 bpc, +VSync, +HSync, EDP A ON, x1)
PIPE_DDI_FUNC_CTL_C : 0x00030000 (disabled, no port, HDMI, 8 bpc, +VSync, +HSync, EDP A ON, x1)
PIPE_DDI_FUNC_CTL_EDP: 0x00030000 (disabled, no port, HDMI, 8 bpc, +VSync, +HSync, EDP A ON, x1)
DP_TP_CTL_A : 0x00000000
DP_TP_CTL_B : 0x00000000
DP_TP_CTL_C : 0x00000000
DP_TP_CTL_D : 0x00000000
DP_TP_CTL_E : 0x00000000
DP_TP_STATUS_A : 0x00000000
DP_TP_STATUS_B : 0x00000000
DP_TP_STATUS_C : 0x00000000
DP_TP_STATUS_D : 0x00000000
DP_TP_STATUS_E : 0x00000000
DDI_BUF_CTL_A : 0x00000080 (disabled not reversed x1 not detected)
DDI_BUF_CTL_B : 0x00000000 (disabled not reversed x1 not detected)
DDI_BUF_CTL_C : 0x80000000 (enabled not reversed x1 not detected)
DDI_BUF_CTL_D : 0x00000000 (disabled not reversed x1 not detected)
DDI_BUF_CTL_E : 0x00000000 (disabled not reversed x1 not detected)
SPLL_CTL : 0x00000000
LCPLL_CTL : 0x44000037
WRPLL_CTL1 : 0xb01e0811
WRPLL_CTL2 : 0x00202418
PORT_CLK_SEL_A : 0xe0000000 (None)
PORT_CLK_SEL_B : 0xe0000000 (None)
PORT_CLK_SEL_C : 0x80000000 (WRPLL 1)
PORT_CLK_SEL_D : 0xe0000000 (None)
PORT_CLK_SEL_E : 0xe0000000 (None)
PIPE_CLK_SEL_A : 0x60000000 (DDIC)
PIPE_CLK_SEL_B : 0x00000000 (None)
PIPE_CLK_SEL_C : 0x00000000 (None)
SFUSE_STRAP : 0x00000007 (display enabled, crt no, lane reversal no, port b yes, port c yes, port d yes)
PIPEASRC : 0x068f0419 (1680, 1050)
DSPACNTR : 0xd8000400 (enabled)
DSPASTRIDE : 0x00001c00 (112)
DSPASURF : 0x10261000
DSPATILEOFF : 0x00000000 (0, 0)
PIPEBSRC : 0x00000000 (1, 1)
DSPBCNTR : 0x00000000 (disabled)
DSPBSTRIDE : 0x00000000 (0)
DSPBSURF : 0x00000000
DSPBTILEOFF : 0x00000000 (0, 0)
PIPECSRC : 0x00000000 (1, 1)
DSPCCNTR : 0x00000000 (disabled)
DSPCSTRIDE : 0x00000000 (0)
DSPCSURF : 0x00000000
DSPCTILEOFF : 0x00000000 (0, 0)
PIPEACONF : 0xc0000000 (enabled, active, pf-pd, rotate 0, 8bpc)
HTOTAL_A : 0x072f068f (1680 active, 1840 total)
HBLANK_A : 0x072f068f (1680 start, 1840 end)
HSYNC_A : 0x06df06bf (1728 start, 1760 end)
VTOTAL_A : 0x04370419 (1050 active, 1080 total)
VBLANK_A : 0x04370419 (1050 start, 1080 end)
VSYNC_A : 0x0422041c (1053 start, 1059 end)
VSYNCSHIFT_A : 0x00000000
PIPEA_DATA_M1 : 0x00000000 (TU 1, val 0x0 0)
PIPEA_DATA_N1 : 0x00000000 (val 0x0 0)
PIPEA_LINK_M1 : 0x00000000 (val 0x0 0)
PIPEA_LINK_N1 : 0x00000000 (val 0x0 0)
PIPEBCONF : 0x00000000 (disabled, inactive, pf-pd, rotate 0, 8bpc)
HTOTAL_B : 0x00000000 (1 active, 1 total)
HBLANK_B : 0x00000000 (1 start, 1 end)
HSYNC_B : 0x00000000 (1 start, 1 end)
VTOTAL_B : 0x00000000 (1 active, 1 total)
VBLANK_B : 0x00000000 (1 start, 1 end)
VSYNC_B : 0x00000000 (1 start, 1 end)
VSYNCSHIFT_B : 0x00000000
PIPEB_DATA_M1 : 0x00000000 (TU 1, val 0x0 0)
PIPEB_DATA_N1 : 0x00000000 (val 0x0 0)
PIPEB_LINK_M1 : 0x00000000 (val 0x0 0)
PIPEB_LINK_N1 : 0x00000000 (val 0x0 0)
PIPECCONF : 0x00000000 (disabled, inactive, pf-pd, rotate 0, 8bpc)
HTOTAL_C : 0x00000000 (1 active, 1 total)
HBLANK_C : 0x00000000 (1 start, 1 end)
HSYNC_C : 0x00000000 (1 start, 1 end)
VTOTAL_C : 0x00000000 (1 active, 1 total)
VBLANK_C : 0x00000000 (1 start, 1 end)
VSYNC_C : 0x00000000 (1 start, 1 end)
VSYNCSHIFT_C : 0x00000000
PIPEC_DATA_M1 : 0x00000000 (TU 1, val 0x0 0)
PIPEC_DATA_N1 : 0x00000000 (val 0x0 0)
PIPEC_LINK_M1 : 0x00000000 (val 0x0 0)
PIPEC_LINK_N1 : 0x00000000 (val 0x0 0)
PIPEEDPCONF : 0x00000000 (disabled, inactive, pf-pd, rotate 0, 8bpc)
HTOTAL_EDP : 0x00000000 (1 active, 1 total)
HBLANK_EDP : 0x00000000 (1 start, 1 end)
HSYNC_EDP : 0x00000000 (1 start, 1 end)
VTOTAL_EDP : 0x00000000 (1 active, 1 total)
VBLANK_EDP : 0x00000000 (1 start, 1 end)
VSYNC_EDP : 0x00000000 (1 start, 1 end)
VSYNCSHIFT_EDP : 0x00000000
PIPEEDP_DATA_M1 : 0x00000000 (TU 1, val 0x0 0)
PIPEEDP_DATA_N1 : 0x00000000 (val 0x0 0)
PIPEEDP_LINK_M1 : 0x00000000 (val 0x0 0)
PIPEEDP_LINK_N1 : 0x00000000 (val 0x0 0)
PFA_CTL_1 : 0x00000000 (disable, auto_scale yes, auto_scale_cal no, v_filter enable, vadapt disable, mode least, filter_sel programmed,chroma pre-filter disable, vert3tap auto, v_inter_invert field 1)
PFA_WIN_POS : 0x00000000 (0, 0)
PFA_WIN_SIZE : 0x00000000 (0, 0)
PFB_CTL_1 : 0x00000000 (disable, auto_scale yes, auto_scale_cal no, v_filter enable, vadapt disable, mode least, filter_sel programmed,chroma pre-filter disable, vert3tap auto, v_inter_invert field 1)
PFB_WIN_POS : 0x00000000 (0, 0)
PFB_WIN_SIZE : 0x00000000 (0, 0)
PFC_CTL_1 : 0x00000000 (disable, auto_scale yes, auto_scale_cal no, v_filter enable, vadapt disable, mode least, filter_sel programmed,chroma pre-filter disable, vert3tap auto, v_inter_invert field 1)
PFC_WIN_POS : 0x00000000 (0, 0)
PFC_WIN_SIZE : 0x00000000 (0, 0)
TRANS_HTOTAL_A : 0x00000000 (1 active, 1 total)
TRANS_HBLANK_A : 0x00000000 (1 start, 1 end)
TRANS_HSYNC_A : 0x00000000 (1 start, 1 end)
TRANS_VTOTAL_A : 0x00000000 (1 active, 1 total)
TRANS_VBLANK_A : 0x00000000 (1 start, 1 end)
TRANS_VSYNC_A : 0x00000000 (1 start, 1 end)
TRANS_VSYNCSHIFT_A : 0x00000000
TRANSACONF : 0x00000000 (disable, inactive, progressive)
FDI_RXA_MISC : 0x0a200090 (FDI Delay 144)
FDI_RXA_TUSIZE1 : 0x7e000000
FDI_RXA_IIR : 0x00000000
FDI_RXA_IMR : 0x00000fff
BLC_PWM_CPU_CTL2 : 0x60000000 (enable 0, pipe EDP, blinking 0, granularity 128)
BLC_PWM_CPU_CTL : 0x00000000 (cycle 0, freq 0)
BLC_PWM2_CPU_CTL2 : 0x60000000 (enable 0, pipe EDP, blinking 0, granularity 128)
BLC_PWM2_CPU_CTL : 0x00000000 (cycle 0, freq 0)
BLC_MISC_CTL : 0x00000000 (PWM1-PCH PWM2-CPU)
BLC_PWM_PCH_CTL1 : 0x00000000 (enable 0, override 0, inverted polarity 0)
BLC_PWM_PCH_CTL2 : 0x00000000 (freq 0, cycle 0)
UTIL_PIN_CTL : 0x00000000 (enable 0, transcoder A, mode data, data 0 inverted polarity 0)
PCH_PP_STATUS : 0x00000000 (off, not ready, sequencing idle)
PCH_PP_CONTROL : 0x00000000 (blacklight disabled, do not power down on reset, panel off)
PCH_PP_ON_DELAYS : 0x00000000
PCH_PP_OFF_DELAYS : 0x00000000
PCH_PP_DIVISOR : 0x00186906
PIXCLK_GATE : 0x00000000
SDEISR : 0x00400000 (port d:0, port c:1, port b:0, crt:0)
RC6_RESIDENCY_TIME : 0x338a5d5f

See also:
Haswell CPU/iGPU power management with a GA-Z87M-D3H
AppleIntelFramebufferAzul.kext
AppleIntelFramebufferAzul.kext (part II)
AppleIntelFramebufferAzul.kext (part III)

AppleIntelInfo.kext

I want to rename AppleIntelCPUPowerManagementInfo.kext to AppleIntelinfo.kext and give it its own Github repository. That way I can update the source code more easily and add the new Intel Register Dumper tool code. A must have for IGPU only users. The problem is that I do not have the time for it… so is anyone reading this willing to do this for me? Don’t bother. Already done!

You can find the latest public source code in my github repository. Extra bonus points for adding a logfile to stop us from polluting the system.log

Please note that the new kext must run on a Yosemite system so you need the Xcode Beta!

Note: The new Intel Register Dumper for OS X enables you to dump the Intel IGPU registers to /var/log/system.log without having to use Linux! The output may come in handy if you are experiencing a black screen, reboots and other graphics issues with Yosemite. Take a look at my Haswell example below:

CPU_VGACNTRL : 0x8000298E
HSW_PWR_WELL_CTL1 : 0xc0000000
HSW_PWR_WELL_CTL2 : 0x40000000
HSW_PWR_WELL_CTL3 : 0x40000000
HSW_PWR_WELL_CTL4 : 0x40000000
HSW_PWR_WELL_CTL5 : 0x0004050f
HSW_PWR_WELL_CTL6 : 0x00000000
PIPE_DDI_FUNC_CTL_A : 0xb2030006 (enabled, DDID, DP SST, 8 bpc, +VSync, +HSync, EDP A ON, x4)
PIPE_DDI_FUNC_CTL_B : 0x00030000 (disabled, no port, HDMI, 8 bpc, +VSync, +HSync, EDP A ON, x1)
PIPE_DDI_FUNC_CTL_C : 0x00030000 (disabled, no port, HDMI, 8 bpc, +VSync, +HSync, EDP A ON, x1)
PIPE_DDI_FUNC_CTL_EDP: 0x00030000 (disabled, no port, HDMI, 8 bpc, +VSync, +HSync, EDP A ON, x1)
DP_TP_CTL_A : 0x00000000
DP_TP_CTL_B : 0x00000000
DP_TP_CTL_C : 0x00000000
DP_TP_CTL_D : 0x80040300
DP_TP_CTL_E : 0x00000000
DP_TP_STATUS_A : 0x00000000
DP_TP_STATUS_B : 0x00000000
DP_TP_STATUS_C : 0x00000000
DP_TP_STATUS_D : 0x00000000
DP_TP_STATUS_E : 0x00000000
DDI_BUF_CTL_A : 0x00000080 (disabled not reversed x1 not detected)
DDI_BUF_CTL_B : 0x00000000 (disabled not reversed x1 not detected)
DDI_BUF_CTL_C : 0x00000000 (disabled not reversed x1 not detected)
DDI_BUF_CTL_D : 0x86000006 (enabled not reversed x4 not detected)
DDI_BUF_CTL_E : 0x00000000 (disabled not reversed x1 not detected)
SPLL_CTL : 0x00000000
LCPLL_CTL : 0x44000037
WRPLL_CTL1 : 0x00202418
WRPLL_CTL2 : 0x00202418
PORT_CLK_SEL_A : 0xe0000000 (None)
PORT_CLK_SEL_B : 0xe0000000 (None)
PORT_CLK_SEL_C : 0xe0000000 (None)
PORT_CLK_SEL_D : 0x20000000 (LCPLL 1350)
PORT_CLK_SEL_E : 0xe0000000 (None)
PIPE_CLK_SEL_A : 0x80000000 (DDID)
PIPE_CLK_SEL_B : 0x00000000 (None)
PIPE_CLK_SEL_C : 0x00000000 (None)
SFUSE_STRAP : 0x00000007 (display enabled, crt no, lane reversal no, port b yes, port c yes, port d yes)
PIPEASRC : 0x077f04af (1920, 1200)
DSPACNTR : 0x98000000 (enabled)
DSPASTRIDE : 0x00001e00 (120)
DSPASURF : 0x00000000
DSPATILEOFF : 0x00000000 (0, 0)
PIPEBSRC : 0x00000000 (1, 1)
DSPBCNTR : 0x00000000 (disabled)
DSPBSTRIDE : 0x00000000 (0)
DSPBSURF : 0x00000000
DSPBTILEOFF : 0x00000000 (0, 0)
PIPECSRC : 0x00000000 (1, 1)
DSPCCNTR : 0x00000000 (disabled)
DSPCSTRIDE : 0x00000000 (0)
DSPCSURF : 0x00000000
DSPCTILEOFF : 0x00000000 (0, 0)
PIPEACONF : 0xc0000010 (enabled, active, pf-pd, rotate 0, 8bpc)
HTOTAL_A : 0x081f077f (1920 active, 2080 total)
HBLANK_A : 0x081f077f (1920 start, 2080 end)
HSYNC_A : 0x07cf07af (1968 start, 2000 end)
VTOTAL_A : 0x04d204af (1200 active, 1235 total)
VBLANK_A : 0x04d204af (1200 start, 1235 end)
VSYNC_A : 0x04b804b2 (1203 start, 1209 end)
VSYNCSHIFT_A : 0x00000000
PIPEA_DATA_M1 : 0x7e36c16c (TU 64, val 0x36c16c 3588460)
PIPEA_DATA_N1 : 0x00800000 (val 0x800000 8388608)
PIPEA_LINK_M1 : 0x0004901e (val 0x4901e 299038)
PIPEA_LINK_N1 : 0x00080000 (val 0x80000 524288)
PIPEBCONF : 0x00000000 (disabled, inactive, pf-pd, rotate 0, 8bpc)
HTOTAL_B : 0x00000000 (1 active, 1 total)
HBLANK_B : 0x00000000 (1 start, 1 end)
HSYNC_B : 0x00000000 (1 start, 1 end)
VTOTAL_B : 0x00000000 (1 active, 1 total)
VBLANK_B : 0x00000000 (1 start, 1 end)
VSYNC_B : 0x00000000 (1 start, 1 end)
VSYNCSHIFT_B : 0x00000000
PIPEB_DATA_M1 : 0x00000000 (TU 1, val 0x0 0)
PIPEB_DATA_N1 : 0x00000000 (val 0x0 0)
PIPEB_LINK_M1 : 0x00000000 (val 0x0 0)
PIPEB_LINK_N1 : 0x00000000 (val 0x0 0)
PIPECCONF : 0x00000000 (disabled, inactive, pf-pd, rotate 0, 8bpc)
HTOTAL_C : 0x00000000 (1 active, 1 total)
HBLANK_C : 0x00000000 (1 start, 1 end)
HSYNC_C : 0x00000000 (1 start, 1 end)
VTOTAL_C : 0x00000000 (1 active, 1 total)
VBLANK_C : 0x00000000 (1 start, 1 end)
VSYNC_C : 0x00000000 (1 start, 1 end)
VSYNCSHIFT_C : 0x00000000
PIPEC_DATA_M1 : 0x00000000 (TU 1, val 0x0 0)
PIPEC_DATA_N1 : 0x00000000 (val 0x0 0)
PIPEC_LINK_M1 : 0x00000000 (val 0x0 0)
PIPEC_LINK_N1 : 0x00000000 (val 0x0 0)
PIPEEDPCONF : 0x00000000 (disabled, inactive, pf-pd, rotate 0, 8bpc)
HTOTAL_EDP : 0x00000000 (1 active, 1 total)
HBLANK_EDP : 0x00000000 (1 start, 1 end)
HSYNC_EDP : 0x00000000 (1 start, 1 end)
VTOTAL_EDP : 0x00000000 (1 active, 1 total)
VBLANK_EDP : 0x00000000 (1 start, 1 end)
VSYNC_EDP : 0x00000000 (1 start, 1 end)
VSYNCSHIFT_EDP : 0x00000000
PIPEEDP_DATA_M1 : 0x00000000 (TU 1, val 0x0 0)
PIPEEDP_DATA_N1 : 0x00000000 (val 0x0 0)
PIPEEDP_LINK_M1 : 0x00000000 (val 0x0 0)
PIPEEDP_LINK_N1 : 0x00000000 (val 0x0 0)
PFA_CTL_1 : 0x80800000 (enable, auto_scale yes, auto_scale_cal no, v_filter enable, vadapt disable, mode least, filter_sel hardcoded,chroma pre-filter disable, vert3tap auto, v_inter_invert field 1)
PFA_WIN_POS : 0x00000000 (0, 0)
PFA_WIN_SIZE : 0x078004b0 (1920, 1200)
PFB_CTL_1 : 0x00000000 (disable, auto_scale yes, auto_scale_cal no, v_filter enable, vadapt disable, mode least, filter_sel programmed,chroma pre-filter disable, vert3tap auto, v_inter_invert field 1)
PFB_WIN_POS : 0x00000000 (0, 0)
PFB_WIN_SIZE : 0x00000000 (0, 0)
PFC_CTL_1 : 0x00000000 (disable, auto_scale yes, auto_scale_cal no, v_filter enable, vadapt disable, mode least, filter_sel programmed,chroma pre-filter disable, vert3tap auto, v_inter_invert field 1)
PFC_WIN_POS : 0x00000000 (0, 0)
PFC_WIN_SIZE : 0x00000000 (0, 0)
TRANS_HTOTAL_A : 0x00000000 (1 active, 1 total)
TRANS_HBLANK_A : 0x00000000 (1 start, 1 end)
TRANS_HSYNC_A : 0x00000000 (1 start, 1 end)
TRANS_VTOTAL_A : 0x00000000 (1 active, 1 total)
TRANS_VBLANK_A : 0x00000000 (1 start, 1 end)
TRANS_VSYNC_A : 0x00000000 (1 start, 1 end)
TRANS_VSYNCSHIFT_A : 0x00000000
TRANSACONF : 0x00000000 (disable, inactive, progressive)
FDI_RXA_MISC : 0x0a200090 (FDI Delay 144)
FDI_RXA_TUSIZE1 : 0x7e000000
FDI_RXA_IIR : 0x00000000
FDI_RXA_IMR : 0x00000fff
BLC_PWM_CPU_CTL2 : 0x60000000 (enable 0, pipe EDP, blinking 0, granularity 128)
BLC_PWM_CPU_CTL : 0x00000000 (cycle 0, freq 0)
BLC_PWM2_CPU_CTL2 : 0x60000000 (enable 0, pipe EDP, blinking 0, granularity 128)
BLC_PWM2_CPU_CTL : 0x00000000 (cycle 0, freq 0)
BLC_MISC_CTL : 0x00000000 (PWM1-PCH PWM2-CPU)
BLC_PWM_PCH_CTL1 : 0x00000000 (enable 0, override 0, inverted polarity 0)
BLC_PWM_PCH_CTL2 : 0x00000000 (freq 0, cycle 0)
UTIL_PIN_CTL : 0x00000000 (enable 0, transcoder A, mode data, data 0 inverted polarity 0)
PCH_PP_STATUS : 0x00000000 (off, not ready, sequencing idle)
PCH_PP_CONTROL : 0x00000000 (blacklight disabled, do not power down on reset, panel off)
PCH_PP_ON_DELAYS : 0x00000000
PCH_PP_OFF_DELAYS : 0x00000000
PCH_PP_DIVISOR : 0x00186906
PIXCLK_GATE : 0x00000000
SDEISR : 0x00800000 (port d:1, port c:0, port b:0, crt:0)
RC6_RESIDENCY_TIME : 0x70b38d42

New repository for AppleIntelFramebufferAzul.sh

I have updated AIFBAzul.sh and renamed it to AppleIntelFramebufferAzul.sh. It is now also much easier to get, from my Github repository instead of my Dropbox.

sudo curl -o ~/AppleIntelFramebufferAzul.sh https://raw.githubusercontent.com/Piker-Alpha/AppleIntelFramebufferAzul.sh/master/AppleIntelFramebufferAzul.sh

That will download the file to your user directory. The next step is to change the file mode (+x) with:

chmod +x ~/AppleIntelFramebufferAzul.sh

Usage

Usage: sudo ~/AppleIntelFramebufferAzul.sh AAPL,ig-platform-id [dump|show|patch|replace|undo|restore] [TARGET_FILE]

Examples

~/AppleIntelFramebufferAzul.sh dump

~/AppleIntelFramebufferAzul.sh 0x0d220003 show

~/AppleIntelFramebufferAzul.sh 0x0d220003 patch

Note: You must modify the data below this line:
0x0d220003) PATCHED_PLATFORM_INFO=”0:
before anything can be patched, of course.

~/AppleIntelFramebufferAzul.sh 0x0d220003 [undo or restore]

Bugs

All possible bugs (so called ‘issues’) should be filed at:

https://github.com/Piker-Alpha/AppleIntelFramebufferAzul.sh/issues

Please do not use my blog for this.

Thank you!

Update

In version 1.6 I added some lines to ask to reboot, which I found handy, and in version 1.7 I also added new code to make the dump option work without Xcode’s nm.

Long mode

Just wondering; why wasn’t the 32-bit Chameleon code ported to 64-bit?

Think about it guys. That would really have made our life easier. Here is one example. Porting the disassembled _lzvn_decode function would have been pretty easy …

I first changed the Makefiles to make it compile the selected build target i.e. i386 or x86_64. For this I also had to copy the i386 directory to x86_64 and then I changed libsaio/libsaio.h like so:

-#include "io_inline.h"
+#include <architecture/i386/pio.h>

This way it includes: /usr/include/architecture/i386/pio.h instead of libsaio.h and now the errors for the x86_64 target in this file are solved.

I also added a new function called _prot_to_long to asm.s and it compiles without errors, but now I have to solve a reboot issue. And yes. I decided to switch from protected mode to long mode so that I can call decode_lzvn() without issues. Theoretically that is, because it isn’t working yet.

p.s. Oops. I clicked on “Update” instead of “Preview Change”. Now you see an incomplete article. Sorry about that. Hang in…