yashsingh1/xdaforums huggingface dataset:
[Nook Color Android Development] fattire:
Sound report...

So due to some huge changes in some headers in 3.0, we apparently need to get or write an updated driver for the DAC3100 that is used in 2.6.32.

We're not the first who have requested this, but unless TI gives us one, someone's gonna have to somehow backport it I guess. (Unless someone can follow up on this thread) Or maybe get the acclaim one (AIC3100) working for us.
[Nook Color Android Development] mateorod:
You are probably well aware of this, but just in case.

If this is what you wanted followed up on...

Then ti posted some replies over the last couple days answering all the above with settings scripts that work for the DAC3100.

http://e2e.ti.com/support/data_converters/audio_converters/f/64/p/191884/688264.aspx#688264
[Nook Color Android Development] fattire:
If only I knew what the hell they were talking about :) Anyone else, feel free to jump in...
[Nook Color Android Development] nook_lover:
This is the latest TLV320AIC3100 drop straight from TI (thanks to Hari).
[Nook Color Android Development] afzalarsalan:
Isn't that the same driver as the acclaim's?
[Nook Color Android Development] nook_lover:
It is. I posted it here in case somebody needs it.

UPD: The DAC3100 is a subset of the AIC3111. We shouldn't use the ADC and MiniDSPs and the same driver will work. The register set is a strict subset of the AIC3111 (as stated by a guy from TI about TLV320DAC3100).
[Nook Color Android Development] fattire:
Do you know where this thread is? And where the AIC3111 driver for 3.0 is? Will aic3xxx from acclaim work?

Guess I'll try it again.
[Nook Color Android Development] mateorod:
I just pm'd you, but TI sent me the acclaim driver after I requested the DAC as well. I have reiterated my request for the DAC specifically, but am wondering if I won't get the same response nook_lover did. I will at minimum try and get some specifics about how the AIC can be made usable for us.

Edit: my bet is that the added info nook_lover added to the above post was the response he go directly from the TI driver/codec guy in response to a second request for the DAC. But hopefully I can wring some specifics out of him.
[Nook Color Android Development] nook_lover:
Yes, I mentioned OMAP3 and was asking for any 3.x drivers for TLV320DAC3100 and got that reply. Is there anything else I can ask for from him?
[Nook Color Android Development] fattire:
Well, I think this is the part of omap4_aic3100.c that's crashing the boot. I need to compare it with our 2.6.32 driver and see if I can figure out what the deal is. If I comment the below out, it boots (but still i don't see anything in /dev/ or anything and sound doesn't work). I still have all the define CONFIG_MINIDSP stuff commented out.

/*

* Enable the GPIO related code-base on the ACCLAIM Board for

* Headphone/MIC Detection

*/

// phymux_base = ioremap (0x4a100000, 0x1000);

// val = __raw_readl(phymux_base + 0x90);

// val = ((val & 0xFEFCFFFE) | 0x01030003);

/*__raw_writel (0x01030003, phymux_base + 0x90); */

// __raw_writel (val, phymux_base + 0x90);

// iounmap(phymux_base);

// DBG("exiting %s\n",__func__);
[Nook Color Android Development] meteorrock:
I got the same canned response from my TI rep here. He sent me the response that we could use the driver from the B&N source code via GPL requirements found here. http://images.barnes...source-code.zip You should find the audio driver under sound/soc/codecs/tlv320aic31xx.c and sound/soc/omap

Here is the thread down in cyanogenMod where I have been working at it. Note page 2. Box 23 http://forum.cyanogenmod.com/topic/52924-is-it-true/page__st__20

Right now I am posting up on different forums up in TI to see if they will drop an updated driver for you guys. The driver they got is for android 2.1 from what I have gleamed on the site. I am sure they got one written up though but who knows?
[Nook Color Android Development] meteorrock:
I got an outsourced electronics company that handles the same chip as the one you need. I will request one and ask for the driver. I just sent them an email.

http://www.alibaba.com/product-gs/472568869/TLV320DAC3100.html

I think it would be best to try to work around TI as they are not going to drop it. Just got another canned response. If I need to I will order one and ask for the driver to come with it. Its only a few dollars. Small price to pay for cyanogenMod development.:)

I also think someone is going up to TI to hold back development. ( Apple fanbois.) So I will go around this. Give me a few days and if I come up with the driver I will drop you a private email ( to Fattire) where it is so you don't have to keep an eye on the thread here.

~~~~~~~~~~~~~

Update June 14th, 2012. 10 AM. I just got done talking to a TI rep on the phone for 20 minutes, he kept claiming they don't have any drivers for this chip written up beyond android 2.2 for it, BUT he said there are TI developers that hang on the beagleboard.org forums that might have that driver written up for ICS 3.0. Might want to follow up there guys. Been up for hours so I am off to bed :))

Update June 15th, 2012 5 pm. That outsourced electronics distributor told me they don't have the driver for that TLV320DAC3100. I hope someone is looking into trying to write up that audio driver. Its looking grim. I will go up to beagleboard.org today and ask though. The beagleboard.org looks like its a hobby motherboard build site for tablets from the electronics on up to the software build.

I also got a reply back here on the TI forums. (Jerry Smith is my User name up there) http://e2e.ti.com/support/data_converters/audio_converters/f/64/p/194884/696773.aspx#696773

Looks to be the same driver as listed before. I will keep an eye on the beagleboard.
[Nook Color Android Development] Dj-Gutz:
[PROJECT] Kernel 3.x For Galaxy SL is in motion for anyone who cares

hillbeast finally recieved his device and started working on it , I hope it means some good news to us nook users too :)

He is using a 3.4 base

Does he know something we don't or is he just getting ready for JB :D ? Would we eventually need to rebase to 3.4 or higher too?

EDIT :

Nevermind , He rebased his kernel to 3.0.8 - I guess he didn't know something we don't :D
[Nook Color Android Development] Kuzma30:
Do you have a uart log with sound driver enabled? I know it hangs.
[Nook Color Android Development] fattire:
Oh hey kuzma30--

No one has uart on the NC that I know of... I can show you dmesg.. it doesn't hang any more.. now it just doesn't create any devices at /dev/*

I can post updated logs and stuff later today.
[Nook Color Android Development] fattire:
linaro toolchain buildin'

Sorry I got sidetracked with building with the linaro toolchain w/3.0-

Here's my progress. I'm out for the night if not longer, but someone can follow up maybe..
[Nook Color Android Development] meteorrock:
Operation Audio Recovery

I have sent out objectives to our team leaders on this.

REMEMBER GENTLEMEN this is a Stealth Operation. Only report in when the you have confirmation on the item. We might have Apple spies among us.

Failure is not an option, just like in War.

Good luck Gentlemen and God Speed.
[Nook Color Android Development] fattire:
div usage mismatch .. the fix for older kernels w/linaro gcc 4.7

A couple tips for anyone googling this. I see a few posts about this issue and no one has posted the solution.

Anyway, if you get this error building the kernel using the linaro 4.7 toolchain...

/opt/toolchains/linaro/bin/arm-eabi-ld: error: DIV usage mismatch between arch/arm/boot/compressed/misc.o and output

/opt/toolchains/linaro/bin/arm-eabi-ld: error: DIV usage mismatch between arch/arm/boot/compressed/lib1funcs.o and output

(or something to that effect)

The solution is likely this patch. After some futzing to make the file match my kernel exactly, I found that just copying in the entire arch/arm/boot/compressed/Makefile and security/smc/Makefile worked as well.

Pershoot deserves credit for pointing the way.

Also, if you are using a kernel older than 3.2, you will need to do this backport as well. See this blog post for more info.

Again, all thanks to pershoot for the heads up.

ft
[Nook Color Android Development] fattire:
And more stuff no one cares about...

tried building the latest 2.6.32 from keyodi's tree.

Made only these changes and it built with 4.7:

$ git diff
diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
index 94fc9e0..b0b927a 100644
--- a/arch/arm/boot/compressed/Makefile
+++ b/arch/arm/boot/compressed/Makefile
@@ -4,7 +4,10 @@
# create a compressed vmlinuz image from the original vmlinux
#

+plus_sec := $(call as-instr,.arch_extension sec,+sec)
+
HEAD = head.o
+AFLAGS_head.o += -Wa,-march=armv7-a$(plus_sec)
OBJS = misc.o
FONTC = $(srctree)/drivers/video/console/font_acorn_8x8.c

@@ -42,6 +45,7 @@ endif

ifeq ($(CONFIG_ARCH_OMAP),y)
OBJS += head-omap.o
+AFLAGS_head-omap.o += -Wa,-march=armv7-a$(plus_sec)
endif

ifeq ($(CONFIG_CPU_ENDIAN_BE32),y)
@@ -102,11 +106,15 @@ $(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.o \
$(addprefix $(obj)/, $(OBJS)) FORCE
$(call if_changed,ld)
@:
+AFLAGS_piggy.o += -Wa,-march=armv7-a$(plus_sec)

+AFLAGS_piggy.$(suffix_y).o += -Wa,-march=armv7-a$(plus_sec)
$(obj)/piggy.gz: $(obj)/../Image FORCE
$(call if_changed,gzip)

$(obj)/piggy.o: $(obj)/piggy.gz FORCE
+AFLAGS_piggy.o += -Wa,-march=armv7-a$(plus_sec)
+

CFLAGS_font.o := -Dstatic=

diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
index eb62bf9..f391553 100644
--- a/arch/arm/kernel/head.S
+++ b/arch/arm/kernel/head.S
@@ -158,7 +158,7 @@ __secondary_data:
* registers.
*/
__enable_mmu:
-#ifdef CONFIG_ALIGNMENT_TRAP
+#if defined(CONFIG_ALIGNMENT_TRAP) && __LINUX_ARM_ARCH__ < 6
orr r0, r0, #CR_A
#else
bic r0, r0, #CR_A
(END)

Unfortunately, while this WILL build and run fine with the normal compiler, it won't run built with linaro's compiler.
[Nook Color Android Development] frankusb:
I wouldn't go as far as to say that no one cares. I also attempted a CM7 kernel build with 4.7 with the quoted change and did not get a boot either. So at this point I can only confirm your results.

Frank
[Nook Color Android Development] mateorod:
I have been following along at home and have been building with a 4.7 tool chain I built from source after it was released. I haven't ever gotten the rom to progress past the upgrade notification.

I figured i was missing patches or possibly because I can only get the kernel to build by itself, not within a CM9 build. Both your and krylons local.manifest are erroring out on me.

But yeah, consider this another report on the tool chain while also encouraging you to continue with the technical updates. I known they take time, but they are being put to use.
[Nook Color Android Development] fattire:
have you tried deleting the file /system/lib/hw/audio_primary.encore.so <--- this is totally from memory and not likley to be the name of the file.. but it's something like that. in case it's getting stuck there?
[Nook Color Android Development] fattire:
Okay, another brief update:

1. rebuilt w/linaro 4.7 & 3.0 kernel using slightly different cflags.

2. it got stuck again on netd.

3. I straced to see where it was getting stuck. replaced libjpeg.so with a recent nightly.

4. It boots!

Update: I think I need to redo this. I'm not 100% sure which compiler it used actually.. Update #2-- Hmm, no I actually suspect I did it right. but jic I'm gonna rebuild and try it again.

Here's what I used. Hopefully it still picked up the -O3 stuff, though i wasn't looking while it was building.

-TARGET_GLOBAL_CFLAGS += -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
-TARGET_GLOBAL_CPPFLAGS += -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
+TARGET_GLOBAL_CFLAGS += -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
+TARGET_GLOBAL_CPPFLAGS += -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
+TARGET_arm_CFLAGS := -O3 -fomit-frame-pointer -fstrict-aliasing -funswitch-loops \
+ -fmodulo-sched -fmodulo-sched-allow-regmoves
+TARGET_thumb_CFLAGS := -mthumb \
+ -Os \
+ -fomit-frame-pointer \
+ -fstrict-aliasing
+TARGET_TOOLS_PREFIX=/home/fattire/Development/linaro/android-toolchain-eabi-4.7/bin/arm-linux-androideabi-
TARGET_BOOTLOADER_BOARD_NAME := encore
TARGET_PROVIDES_INIT_TARGET_RC := true
TARGET_USERIMAGES_USE_EXT4 := true
+CROSS_COMPILE=~/Development/arm-2010q1/bin/arm-none-linux-gnueabi-

Looks like the kernel modules didn't load for some reason, so no wifi so I can't test quadrant or anything. Just wanted to update in case anyone was following along.
[Nook Color Android Development] fattire:
A last thought...

Okay, so cyanogen has ruled out gcc 4.7 for the foreseeable future, so really anyone wanting to try this can do so once the changes for 3.0 are checked into the kernel. At that point, assuming the framework and bionic stuff are accepted by AOSP and/or CM9, it's just a few changes to the BoardConfig and then you can build it w/4.7 yourself as described above. It's all less important anyway than getting an actual, reliable working 3.0 kernel.

Keyodi has been out of town while I've been playing with linaro stuff, but I'm hoping to focus on the other 3.0 kernel things, as my time is available, which in the next few weeks, it may not be as much...
[Nook Color Android Development] aludal:
Could you please elaborate a little more on:

1) why current cyanogen builds preclude the use of GCC 4.7?

2) to hell with CyangenMod, are there any independent/kang GCC-4.7-compatible ICS AOSP builds for omapzoom/encore available, to play with?

3) if for the proof of concept only, could be some Ubuntu built with Linaro Enhancements for Encore?

Thank you for your excellent work.

---------- Post added at 10:37 AM ---------- Previous post was at 10:33 AM ----------

Sorry, I have just discovered this in other thread:

So can Linaro Enhancements be built basing on GCC 4.6?
[Nook Color Android Development] cybertimber2007:
I think you figured it out, but if not...

The upstream source (AOSP - from Google) isn't (yet) compatible with gcc 4.7. Infact, if I understood Cyanogen, they are just now moving to 4.6.

Secondly... Linaro support for gcc 4.7 "is the current focus of development"... so while there have been some 4.7 releases, it doesn't sound solid yet.

So it sounds like gcc 4.6 is what you want to use.
[Nook Color Android Development] frankusb:
Hey CM9 kernel people,

I'm still running CM7 but compile my own kernel with Linaro 4.6. I found that if I turn off optimize for size and change -O2 to -O3, I get a measurable increase in Quadrant performance for a slight memory usage increase.

Diffs here and here. Results here.

Frank
[Nook Color Android Development] adm1jtg:
Any chance you can post your work in a cw flashable format so others can test and play with it?
[Nook Color Android Development] frankusb:
Be glad to, here is the thread.

I've since backed down to -O2, it reduced the kernel size with no impact on Quadrant scores. I'm also running a 16 bit frame buffer. Other than it's the same as mrg666's kernel. It is a CM7 kernel, not CM9.

Frank
[Nook Color Android Development] krylon360:
omapzoom now has the A1 ICS Kernel source.

http://git.omapzoom.org/?p=kernel/omap.git;a=commit;h=cc780bf7f14fe757228e8787d840c558ab6a87c3
[Nook Color Android Development] MДЯCЦSДИT:
Why no pastebin? At least use spoiler tags

I think
[Nook Color Android Development] fattire:
Meh. I tried it, it looks crappy. But whatever. I kinda figured that on a dev thread, people could handle inline code and might want to use parts of it in requoted replies... Also I think it's easier to read. but whatever. Now you get to click 14 times..
[Nook Color Android Development] Dj-Gutz:
heh , now it's just showing empty spaces so it's useless IMO
[Nook Color Android Development] eyeballer:
Keep it inline, very easy to read.

/my2cents
[Nook Color Android Development] fattire:
Stuff that didn't work.

Going to sleep. But here's a couple quick notes for the night for keyodi and anyone else--

1. If you're building the latest hardware/ti/omap3 stuff, don't forget to pull the sound stuff out of the proprietary vendor folder. It's all being rebuilt, so don't want to use old libraries and things (I think).

2. To get hardware/ti/omap3 to build in its entirety, I did three things:

a. These hacky patches

b. killed the entire camera directory.

c. To omx/Android.mk:

-include $(TI_OMX_VIDEO)/video_encode/Android.mk

You can also get rid of omx/video/src/openmax_il/video_encode entirely if you want.

3. The card inits, but now Android is not happy:

(E/AudioFlinger( 2285): couldn't open audio hw device in audio.primary (Invalid argument))

tinyplay is not happy either:

root@android:/ # tinyplay /sdcard/sound.wav

Unable to open PCM device 0 (cannot set hw params: Invalid argument)

same error. And it's the same issue that plagues alsa_aplay too.

4. Inspired by comment #6 here I tried adding this to the kernel. It didn't seem to fix anything. But feels right.

5. Anyone know what this is? If we can fix it, that would be good:

open("/dev/snd/pcmC0D0p", O_RDWR) = 4

ioctl(4, AGPIOC_ACQUIRE or APM_IOC_STANDBY, 0xbef9c7ec) = 0

ioctl(4, 0xc25c4111, 0xbef9c590) = -1 EINVAL (Invalid argument)

close(4) = 0

write(2, "Unable to open PCM device 0 (can"..., 69Unable to open PCM device 0 (cannot set hw params: Invalid argument)

) = 69

Update: According to this I may need to play with tinymix some more (?). Tomorrow.
[Nook Color Android Development] krylon360:
FYI: TI's source IS in fact BROKE!

Look at hardware/ti/omap3/video/src/openmax_il/video_decode/src/OMX_VideoDecoder.c starting at line 534 all the way to the bottom. It's all commented out. almost 3500 lines! that's sad.

I tweeted them the error, and the fix. a simple // lol. They didn't comment out the entire string; just one line of it.

Something is up with the patch btw.

#ifdef __PERF_INSTRUMENTATION__
PERF_SendingFrame(pComponentPrivate_CC->pPERFcomp,
pComponentPrivate_CC->pOutputBufferList->pBufHdr[pComponentPrivate_CC->nInvalidFrameCount+1]->pBuffer,
pComponentPrivate_CC->pOutputBufferList->pBufHdr[pComponentPrivate_CC->nInvalidFrameC
PERF_ModuleHLMM);
pComponentPrivate_CC->nInvalidFrameCount++;
pComponentPrivate_CC->nInvalidFrameCount++;
#endif

causes this:

target thumb C: libOMX.TI.WMA.decode <= hardware/ti/omap3/omx/audio/src/openmax_il/wma_dec/src/OMX_WmaDec_Utils.c

hardware/ti/omap3/omx/audio/src/openmax_il/wma_dec/src/OMX_WmaDec_Utils.c:2083:50: error: macro "PERF_SendingFrame" requires 4 arguments, but only 3 given

hardware/ti/omap3/omx/audio/src/openmax_il/wma_dec/src/OMX_WmaDec_Utils.c: In function 'WMADECLCML_Callback':

hardware/ti/omap3/omx/audio/src/openmax_il/wma_dec/src/OMX_WmaDec_Utils.c:2079: error: 'PERF_SendingFrame' undeclared (first use in this function)

hardware/ti/omap3/omx/audio/src/openmax_il/wma_dec/src/OMX_WmaDec_Utils.c:2079: error: (Each undeclared identifier is reported only once

hardware/ti/omap3/omx/audio/src/openmax_il/wma_dec/src/OMX_WmaDec_Utils.c:2079: error: for each function it appears in.)

make: *** [out/target/product/encore/obj/SHARED_LIBRARIES/libOMX.TI.WMA.decode_intermediates/OMX_WmaDec_Utils.o] Error 1

Workaround for now.

I just used a prebuilt and removed it from building in device.mk. WMA isn't even coded into the OMXCodec.cpp as a valid codec to use. Same with WMV. So doesn't matter to much if it's built or not.
[Nook Color Android Development] fattire:
It looks like the end got cut off when I copy/pasted or something. This is the worst of the hackyness anyway but it should look like this.

- pComponentPrivate_CC->pOutputBufferList->pBufHdr[pComponentPrivate_CC->nInvalidFrameCount++]->pBuffer,
- pComponentPrivate_CC->pOutputBufferList->pBufHdr[pComponentPrivate_CC->nInvalidFrameCount++]->nFilledLen,
+ pComponentPrivate_CC->pOutputBufferList->pBufHdr[
+pComponentPrivate_CC->nInvalidFrameCount+1]->pBuffer,
+ pComponentPrivate_CC->pOutputBufferList->pBufHdr[pComponentPrivate_CC->nInvalidFrameCount+2]->nFilledLen,
PERF_ModuleHLMM);
+ pComponentPrivate_CC->nInvalidFrameCount++;
+ pComponentPrivate_CC->nInvalidFrameCount++;

In other words, "nInvalidFrameC" is cut off.

And actually I believe these patches were to resolve a GCC 4.7 error, so you can probably just go back to the original and you'll be fine :) Heh
[Nook Color Android Development] krylon360:
The ion.h patch was needed. Though with my code error finding it might just work.

Got this from TI:

@TXInstruments @krylon360 thank you for pointing that out. We’ve alerted our software team.

:-)

I'll fix the missing piece that got cut off in a little bit. Thank you.
[Nook Color Android Development] fattire:
Yup the ion one was first and the others I did quickly when hopping through 4.7 errors during my linaro phase :) it was like just whatever I needed to do fast to not trip gcc's more sensitive syntax checking.
[Nook Color Android Development] krylon360:
audio should be fixed within a few days by TI.

We are using the wrong Audio_Hal drivers.

http://review.omapzoom.org/#/c/21488/

They are going to add omap3 support to device/ti/common_open/audio
[Nook Color Android Development] fattire:
I guess we should wait a few days then :)
[Nook Color Android Development] krylon360:
I've already coded it. Just need to resolve a make error due the kernel and hopefully we'll have audio

EDIT: OHAI THERE!

Install: out/target/product/encore/system/lib/hw/audio.primary.omap3.so
[Nook Color Android Development] Kuzma30:
Look to this commits too

https://github.com/Kuzma30/kernel3NookTablet/commit/545eef2f9a49935df0ba7a22d15bf078f4617715

https://github.com/Kuzma30/kernel3NookTablet/commit/a73a4b3752b96eba6da41a3e38f917f2d2a21b13
[Nook Color Android Development] deeper-blue:
Awesome!

Also good news that there will be sound in omapzoom source soon.

I guess we have to fix this weird touchscreen/timing stuff next.
[Nook Color Android Development] cybertimber2007:
OP update requested

Fattire, when you get a moment can you update the OP information?
[Nook Color Android Development] bled82:
Thanks for all the hard work you devs are the reason i still have my nook color looking forward to the next release
[Nook Color Android Development] krylon360:
Keyodi,

Something is up with the current source on git for the kernel. Boots to backlit screen. doesnt init so not able to get to logcat.

Thought maybe it was a ramdisk issue, so used the one from last month before fattire pushed audio stuff.

still no go.

Since you have a booting kernel, try these audio drivers I built last night.

http://krylon360.com/file_host/nook_drivers/lib/
[Nook Color Android Development] keyodi:
Try commenting out write /sys/kernel/debug/smartreflex/sr_mpu_iva/autocomp 1

in the init.encore.rc

I think there's an issue when smartflex is enabled on the mpu that may cause the device to fail to boot passed the backlight init.

I won't be able to test out the lib files til tomorrow.
[Nook Color Android Development] krylon360:
Will try it tonight.
[Nook Color Android Development] keyodi:
We have sound!!!

I just got sound working...I pushed all the changes so we at least have the source, but the codec needs to be cleaned up a little and I still need to compare the current source w/ the .32 to make sure we're not missing anything.

The legacy audio (BOARD_USES_AUDIO_LEGACY := true), also needs to be enabled in the BoardConfig in order for audio to work.
[Nook Color Android Development] fattire:
This is quite awesome.

Here's some amazing things that have happened today:

* jellybean has been built by krylon360 from AOSP and he's testing it out. I'm doing the same with the cm10 repo. I've already created some jellybean branches in the device_repo and I'll push that.

* epsylon3 has a module for defy that allow full video/omx stuff to work on omap3. It's for the .32 kernel and it may be a fast way to get omx using the old kernel. nemith has expressed interest if no one else wants to try it.

* I started a 3.4 kernel port and got it to build. it's a mess so I want to start over at some point. I haven't tried it, I know it won't work and I lost all my microUSB cables for the moment.

* oh, and keyodi has sound working in 3.0!!!

Holy crap!
[Nook Color Android Development] deeper-blue:
Sound on 3.0, omx for the old kernel - pretty sweet news!

Looks like I can lean back ;)