[Kernel Request] OTA Gingerbread w/ Audio Boost - Nexus One Q&A, Help & Troubleshooting
I'm posting this request to all of the kernel devs out there. I was wondering if someone could take the stock kernel and add the audio boost hack in it.
IR said he could when he gets a chance, but he's busy on other projects at the moment.
I forgot how low my volume is on stock, so I could really use the audio boost hack.
Thanks to anyone that does this!
mindfrost82 said:
I'm posting this request to all of the kernel devs out there. I was wondering if someone could take the stock kernel and add the audio boost hack in it.
IR said he could when he gets a chance, but he's busy on other projects at the moment.
I forgot how low my volume is on stock, so I could really use the audio boost hack.
Thanks to anyone that does this!
Click to expand...
Click to collapse
+1
Really miss having custom kernel w/AB for a stock Gingerbread rom.
Try THIS
Compiled it from github source using .config file extracted from boot.img of latest OTA package. Applied pershoot's audio gain for your aural pleasure. I'm on CM7 meself, so not really certain if it'll work well on stock GB.
Sorry for the semi off topic question. But why is there a fork between OTA gingerbread and the aosp gingerbread, which leads to these types of differences? I haven't followed closely enough to know why the OTA code was not made public into aosp.
OTA builds include proprietary closed source apps and have been optimized for the specific device by the manufacturer. AOSP builds (mostly) come w/o proprietary apps and optimization depends on the ROM builder. Otherwise, source should be the same.
But we see differences like the call bug on aosp but not OTA versions. I thought the code was different for some reason.
I'd blame those differences on the closed source drivers, but can't be 100% sure, unless you're an insider ...
ch33kybutt said:
Try THIS
Compiled it from github source using .config file extracted from boot.img of latest OTA package. Applied pershoot's audio gain for your aural pleasure. I'm on CM7 meself, so not really certain if it'll work well on stock GB.
Click to expand...
Click to collapse
I ran it for a little while before I loaded up CM7 and it seemed to work fine.
Today I might be going back to an OTA Gingerbread ROM, so I'll try it again. The wonk issue on CM7 really seems to affect my phone for some reason.
mindfrost82 said:
I'm posting this request to all of the kernel devs out there. I was wondering if someone could take the stock kernel and add the audio boost hack in it.
IR said he could when he gets a chance, but he's busy on other projects at the moment.
I forgot how low my volume is on stock, so I could really use the audio boost hack.
Thanks to anyone that does this!
Click to expand...
Click to collapse
+1
I really can't hear my phone ringing in the strrets with stock gingerbread :-(
So does this work with cm7?
amzter said:
So does this work with cm7?
Click to expand...
Click to collapse
This hack is the exact audio boost already included in cyan 7. People just wanted a stock kernel version of it.
Trust me CM7 has no audio boost he turned it down because people were complaining to much
amzter said:
Trust me CM7 has no audio boost he turned it down because people were complaining to much
Click to expand...
Click to collapse
really? i'll have to go look at the code cause i thought he justturned it down a bit, but it was still boosted over the stock values.
i'm running a custom kernel anyway which does have the boost.
ch33kybutt said:
Try THIS
Compiled it from github source using .config file extracted from boot.img of latest OTA package. Applied pershoot's audio gain for your aural pleasure. I'm on CM7 meself, so not really certain if it'll work well on stock GB.
Click to expand...
Click to collapse
Thank you so much for this!! I was having issues with wifi on wildmonks old froyo kernel but really needed the audio boost
ok here is the audio boost info for the kernels i found.
Stock
PHP:
[Q6_HW_HANDSET] = {
.min_gain = -2000,
.max_gain = 0,
},
[Q6_HW_HEADSET] = {
.min_gain = -2000,
.max_gain = 0,
},
[Q6_HW_SPEAKER] = {
.min_gain = -1500,
.max_gain = 0,
},
[Q6_HW_TTY] = {
.min_gain = -2000,
.max_gain = 0,
},
[Q6_HW_BT_SCO] = {
.min_gain = -2000,
.max_gain = 0,
},
[Q6_HW_BT_A2DP] = {
.min_gain = -2000,
.max_gain = 0,
},
Cyanogen
PHP:
[Q6_HW_HANDSET] = {
.min_gain = -1600,
.max_gain = 400,
},
[Q6_HW_HEADSET] = {
.min_gain = -1600,
.max_gain = 400,
},
[Q6_HW_SPEAKER] = {
.min_gain = -1100,
.max_gain = 400,
},
[Q6_HW_TTY] = {
.min_gain = -1600,
.max_gain = 400,
},
[Q6_HW_BT_SCO] = {
.min_gain = -1600,
.max_gain = 400,
},
[Q6_HW_BT_A2DP] = {
.min_gain = -1600,
.max_gain = 400,
},
Boost (all common kernels out there, including the fix in this thread)
PHP:
[Q6_HW_HANDSET] = {
.min_gain = -1500,
.max_gain = 1100,
},
[Q6_HW_HEADSET] = {
.min_gain = -1500,
.max_gain = 1100,
},
[Q6_HW_SPEAKER] = {
.min_gain = -2000,
.max_gain = 800,
},
[Q6_HW_TTY] = {
.min_gain = -1500,
.max_gain = 1100,
},
[Q6_HW_BT_SCO] = {
.min_gain = -2000,
.max_gain = 800,
},
[Q6_HW_BT_A2DP] = {
.min_gain = -2000,
.max_gain = 800,
},
so it does indeed look like cyanogen backed off, but still louder than stock, but not as loud as it used to be with the boost from the other kernels out there (pershoot, IR's, etc).
Updated kernel to 2.6.35.12 by merging AOSP with http://git.kernel.org/?p=linux/kernel/git/longterm/linux-2.6.35.y.git
Dowload from http://www.mediafire.com/?pdv22c89ro644vk
ch33kybutt said:
Updated kernel to 2.6.35.12 by merging AOSP with http://git.kernel.org/?p=linux/kernel/git/longterm/linux-2.6.35.y.git
Dowload from http://www.mediafire.com/?pdv22c89ro644vk
Click to expand...
Click to collapse
I just try this kernel and it works. Thx
RogerPodacter said:
ok here is the audio boost info for the kernels i found.
Stock
PHP:
[Q6_HW_HANDSET] = {
.min_gain = -2000,
.max_gain = 0,
},
[Q6_HW_HEADSET] = {
.min_gain = -2000,
.max_gain = 0,
},
[Q6_HW_SPEAKER] = {
.min_gain = -1500,
.max_gain = 0,
},
[Q6_HW_TTY] = {
.min_gain = -2000,
.max_gain = 0,
},
[Q6_HW_BT_SCO] = {
.min_gain = -2000,
.max_gain = 0,
},
[Q6_HW_BT_A2DP] = {
.min_gain = -2000,
.max_gain = 0,
},
Cyanogen
PHP:
[Q6_HW_HANDSET] = {
.min_gain = -1600,
.max_gain = 400,
},
[Q6_HW_HEADSET] = {
.min_gain = -1600,
.max_gain = 400,
},
[Q6_HW_SPEAKER] = {
.min_gain = -1100,
.max_gain = 400,
},
[Q6_HW_TTY] = {
.min_gain = -1600,
.max_gain = 400,
},
[Q6_HW_BT_SCO] = {
.min_gain = -1600,
.max_gain = 400,
},
[Q6_HW_BT_A2DP] = {
.min_gain = -1600,
.max_gain = 400,
},
Boost (all common kernels out there, including the fix in this thread)
PHP:
[Q6_HW_HANDSET] = {
.min_gain = -1500,
.max_gain = 1100,
},
[Q6_HW_HEADSET] = {
.min_gain = -1500,
.max_gain = 1100,
},
[Q6_HW_SPEAKER] = {
.min_gain = -2000,
.max_gain = 800,
},
[Q6_HW_TTY] = {
.min_gain = -1500,
.max_gain = 1100,
},
[Q6_HW_BT_SCO] = {
.min_gain = -2000,
.max_gain = 800,
},
[Q6_HW_BT_A2DP] = {
.min_gain = -2000,
.max_gain = 800,
},
so it does indeed look like cyanogen backed off, but still louder than stock, but not as loud as it used to be with the boost from the other kernels out there (pershoot, IR's, etc).
Click to expand...
Click to collapse
Is there anyway I could edit the kernel so its as loud as I want it to be without muffing up my phone. Because now my phone keeps on force closing DSP manager when in call or making a call.
amzter said:
Is there anyway I could edit the kernel so its as loud as I want it to be without muffing up my phone. Because now my phone keeps on force closing DSP manager when in call or making a call.
Click to expand...
Click to collapse
yes you could compile just the kernel, which is rather quick and easy. but i'm pretty sure the values in all th custom kernels have been sufficiently tested to be jsut at that breaking point of working perfect without any speaker distortion. i remember cyan 5.0.8 was so loud it distorted the speakers, so they backed off.
but got ahead and load up values you want and compile. follow the cyanogen guide, its a long process, but once you pull down all the source code, changing and compiling is not long at all. you need a linux distro setup, use ubuntu 10 in a virtual machine, its by far the easiest way.
both kernels post are for stock rooted GB, correct? Thanks.
Related
[APP] Netflix from LG ROM Dump
http://www.androidcentral.com/leaked-lg-revolution-system-dump-has-netflix I was able to login and browse/manage queue.
I tried on my xoom, able to login and manage queue. Looks like it is gonna start streaming and then gives unable to connect to netflix error. Sent from my Xoom using XDA App
wgarrido said: http://www.androidcentral.com/leaked-lg-revolution-system-dump-has-netflix I was able to login and browse/manage queue. Click to expand... Click to collapse Pffft...I can already do that using Movela Netflix from Market.
skullvet said: I tried on my xoom, able to login and manage queue. Looks like it is gonna start streaming and then gives unable to connect to netflix error. Sent from my Xoom using XDA App Click to expand... Click to collapse Same here.
Miami_Son said: Pffft...I can already do that using Movela Netflix from Market. Click to expand... Click to collapse Yeah but this app is official and is setup to stream. Just doesn't work yet. Plus I feel safer entering my login than a 3rd party app.
Read on a thread that it was a drm issue. He had posted a log. Sent from my Xoom using XDA App
skullvet said: Read on a thread that it was a drm issue. He had posted a log. Sent from my Xoom using XDA App Click to expand... Click to collapse Which mean it might be something that can be "fixed".
so my Java script isn't that great, but as far as I can tell, the nrdp.js file might lead us in the right direction. In the script it is grabbing a lot of information about the device and passing across. Pulled from the file Code: if (typeof nrdp != 'undefined') { return; } nrdp = new Object(); nrdp.debug = ##NRDP_DEBUG##; nrdp.exit = function() { n_device_api.exit(); }; nrdp.device = new Object(); nrdp.device.getSoftwareVersion = function() { return String(n_device_api.getSoftwareVersion()); }; nrdp.device.getCertificationVersion = function() { return String(n_device_api.getCertificationVersion()); }; nrdp.device.getESN = function() { return String(n_device_api.getESN()); }; nrdp.device.getESNPrefix = function() { return String(n_device_api.getESNPrefix()); }; nrdp.device.setUIVersion = function(version) { n_device_api.setUIVersion(version); }; nrdp.device.isScreensaverOn = function() { return (n_device_api.isScreensaverOn() == 'true'); }; nrdp.device.hasPointer = function() { return (n_device_api.hasPointer() == 'true'); }; nrdp.device.hasKeyboard = function() { return (n_device_api.hasKeyboard() == 'true'); }; nrdp.device.hasOnScreenKeyboard = function() { return (n_device_api.hasOnScreenKeyboard() == 'true'); }; nrdp.device.getLanguage = function() { return String(n_device_api.getLanguage()); }; nrdp.device.launchUrl = function(url) { n_device_api.launchUrl(url); }; nrdp.device.notifyOnLogin = function() { n_device_api.notifyOnLogin(); }; nrdp.device.notifyOnLogout = function() { n_device_api.notifyOnLogout(); }; nrdp.device.injectKey = function(keyCode) { n_device_api.injectKey(keyCode); }; nrdp.device.isConnected = function() { return (n_device_api.isConnected() == 'true'); }; nrdp.webapi = new Object(); nrdp.webapi.getConsumerKey = function() { return n_web_api.getConsumerKey(); }; nrdp.webapi.getConsumerSecret = function() { return String(n_web_api.getConsumerSecret()); }; nrdp.webapi.hmacSha1 = function(key, plaintext, handler) { try { if (typeof(handler) !== 'undefined' && handler !== null) { var encValue = n_web_api.hmacSha1(key, plaintext); handler(encValue); } } catch (e) { console.log('ERROR: ' + e); } }; nrdp.video = new Object(); nrdp.video.setGlobalEventListener = function(listener) { var events = String(n_video_api.getEvents()); var eventArray = events.split(" "); if(typeof(listener) != 'undefined' && listener != null) { for(i = 0; i < eventArray.length; i++){ document.addEventListener(eventArray[i], listener, false); } } else { for(i = 0; i < eventArray.length; i++){ document.removeEventListener(eventArray[i], nrdp.video._globalEventListener, false); } } nrdp.video._globalEventListener = listener; }; nrdp.video.addEventListener = function(type, listener, useCapture) { document.addEventListener(type, listener, useCapture); }; nrdp.video.removeEventListener = function(type, listener, useCapture) { document.removeEventListener(type, listener, useCapture); }; nrdp.video.dispatchEvent = function(evt) { document.dispatchEvent(evt); }; nrdp.video._dispatchEvent = function(evt_type, evt_name) { var evt = document.createEvent(evt_type); evt.initEvent(evt_name, true, true); nrdp.video.dispatchEvent(evt); }; nrdp.video._dispatchProgressEvent = function(evt_type, evt_name, loaded, total) { var evt = document.createEvent(evt_type); evt.initEvent(evt_name, false, false); evt.loaded = loaded; evt.total = total; evt.lengthComputable = true; evt.loadedItems = 0; evt.totalItems = 0; nrdp.video.dispatchEvent(evt); }; nrdp.video.getLastPlayedMovieData = function() { return eval('(' + String(n_video_api.getLastPlayedMovieData()) + ')'); }; nrdp.debug = new Object(); nrdp.debug.console = new Object(); nrdp.debug.console.log = function(message) { console.log(message); }; nrdp.debug.console.warn = function(message) { console.log('WARN: ' + message); }; nrdp.debug.console.error = function(message) { console.log('ERROR: ' + message); };
Theres probably a device check in there somewhere. The app was made to work on Snapdragon processors.
caleb4992 said: Theres probably a device check in there somewhere. The app was made to work on Snapdragon processors. Click to expand... Click to collapse But not all snapdragon's. Only ones that support DRM, which would be the newer ones.
[APP] Netflix APK
Just leaked. Whether it works or not seems to be hit or miss. See 2 posts down for apk.
Just leaked where? This thread is useless without a link.
Where is it?
Sorry...here is the actual apk
Thank you....checking it out now.
It let me log in and could view my queue but when tried to play 3 different movies it said could not reach the netflix service. Good find though. Maybe it will start working soon.
Just tested, no dice. streaming doesn't seem to be working correctly Sent from my Captivate
I just get either an endless loading screen or an error regarding not reaching the netflix server... I heard someone has it working on their Fascinate.
I tried it on my captivate running cognition 4.1.1 but it didn't work Sent from my SAMSUNG-SGH-I897 using XDA Premium App
Its the foot print the phone leaves. I logged into my account and it showed sgh-i897 as an obsolete device on my account. Any chance we can get the binary embedded in the app for a compatible device? Sent from my SAMSUNG-SGH-I897 using XDA Premium App
didnt work for me :/
Doesn't work. Dammit.
jferg5 said: Its the foot print the phone leaves. I logged into my account and it showed sgh-i897 as an obsolete device on my account. Any chance we can get the binary embedded in the app for a compatible device? Sent from my SAMSUNG-SGH-I897 using XDA Premium App Click to expand... Click to collapse Yeah, it seems to be a drm issue, maybe we can find a possible work around? Sent from my Galaxy S Captivate with Serendipity
wont even let me sign in:/
Just found this thread with the DRM files and Revolution system dump (full): http://forum.xda-developers.com/showthread.php?t=994768
so my Java script isn't that great, but as far as I can tell, the nrdp.js file might lead us in the right direction. In the script it is grabbing a lot of information about the device and passing across. Pulled from the file Code: if (typeof nrdp != 'undefined') { return; } nrdp = new Object(); nrdp.debug = ##NRDP_DEBUG##; nrdp.exit = function() { n_device_api.exit(); }; nrdp.device = new Object(); nrdp.device.getSoftwareVersion = function() { return String(n_device_api.getSoftwareVersion()); }; nrdp.device.getCertificationVersion = function() { return String(n_device_api.getCertificationVersion()); }; nrdp.device.getESN = function() { return String(n_device_api.getESN()); }; nrdp.device.getESNPrefix = function() { return String(n_device_api.getESNPrefix()); }; nrdp.device.setUIVersion = function(version) { n_device_api.setUIVersion(version); }; nrdp.device.isScreensaverOn = function() { return (n_device_api.isScreensaverOn() == 'true'); }; nrdp.device.hasPointer = function() { return (n_device_api.hasPointer() == 'true'); }; nrdp.device.hasKeyboard = function() { return (n_device_api.hasKeyboard() == 'true'); }; nrdp.device.hasOnScreenKeyboard = function() { return (n_device_api.hasOnScreenKeyboard() == 'true'); }; nrdp.device.getLanguage = function() { return String(n_device_api.getLanguage()); }; nrdp.device.launchUrl = function(url) { n_device_api.launchUrl(url); }; nrdp.device.notifyOnLogin = function() { n_device_api.notifyOnLogin(); }; nrdp.device.notifyOnLogout = function() { n_device_api.notifyOnLogout(); }; nrdp.device.injectKey = function(keyCode) { n_device_api.injectKey(keyCode); }; nrdp.device.isConnected = function() { return (n_device_api.isConnected() == 'true'); }; nrdp.webapi = new Object(); nrdp.webapi.getConsumerKey = function() { return n_web_api.getConsumerKey(); }; nrdp.webapi.getConsumerSecret = function() { return String(n_web_api.getConsumerSecret()); }; nrdp.webapi.hmacSha1 = function(key, plaintext, handler) { try { if (typeof(handler) !== 'undefined' && handler !== null) { var encValue = n_web_api.hmacSha1(key, plaintext); handler(encValue); } } catch (e) { console.log('ERROR: ' + e); } }; nrdp.video = new Object(); nrdp.video.setGlobalEventListener = function(listener) { var events = String(n_video_api.getEvents()); var eventArray = events.split(" "); if(typeof(listener) != 'undefined' && listener != null) { for(i = 0; i < eventArray.length; i++){ document.addEventListener(eventArray[i], listener, false); } } else { for(i = 0; i < eventArray.length; i++){ document.removeEventListener(eventArray[i], nrdp.video._globalEventListener, false); } } nrdp.video._globalEventListener = listener; }; nrdp.video.addEventListener = function(type, listener, useCapture) { document.addEventListener(type, listener, useCapture); }; nrdp.video.removeEventListener = function(type, listener, useCapture) { document.removeEventListener(type, listener, useCapture); }; nrdp.video.dispatchEvent = function(evt) { document.dispatchEvent(evt); }; nrdp.video._dispatchEvent = function(evt_type, evt_name) { var evt = document.createEvent(evt_type); evt.initEvent(evt_name, true, true); nrdp.video.dispatchEvent(evt); }; nrdp.video._dispatchProgressEvent = function(evt_type, evt_name, loaded, total) { var evt = document.createEvent(evt_type); evt.initEvent(evt_name, false, false); evt.loaded = loaded; evt.total = total; evt.lengthComputable = true; evt.loadedItems = 0; evt.totalItems = 0; nrdp.video.dispatchEvent(evt); }; nrdp.video.getLastPlayedMovieData = function() { return eval('(' + String(n_video_api.getLastPlayedMovieData()) + ')'); }; nrdp.debug = new Object(); nrdp.debug.console = new Object(); nrdp.debug.console.log = function(message) { console.log(message); }; nrdp.debug.console.warn = function(message) { console.log('WARN: ' + message); }; nrdp.debug.console.error = function(message) { console.log('ERROR: ' + message); };
The day this is hacked is the day netflix removes it from the list of allowable streaming apps.
Did some packet sniffing and found references to this XML: http://uiboot.netflix.com/apps/android/config Code: <config> <current_version>1</current_version> <min_version>1</min_version> <mandatory>true</mandatory> <current_version_url>http://mcdn.netflix.com/us/mobile/android/01/netflix-01-release.apk</current_version_url> <size>2943920</size> </config> The "current_version_url" is not found though.. Looks like they pulled it after the leak or something.
It's probably due to the fact that they intially released the Netflix APK to run only on Phones with a Snapdragon Processor, not a hummingbird. At least that's what I read in the news a week or two ago.
id10terror said: Did some packet sniffing and found references to this XML: http://uiboot.netflix.com/apps/android/config Code: <config> <current_version>1</current_version> <min_version>1</min_version> <mandatory>true</mandatory> <current_version_url>http://mcdn.netflix.com/us/mobile/android/01/netflix-01-release.apk</current_version_url> <size>2943920</size> </config> The "current_version_url" is not found though.. Looks like they pulled it after the leak or something. Click to expand... Click to collapse So, I toyed around with the 'current_version_url' you mentioned and changed the end to the following "...android/02/netflix-02-release.apk" and it downloaded. I loaded it on my cappy...I can browse around and whatnot but still no watch instantly. It just sits there...doesn't even say loading.
diffing kj4 - kj6 kernels
as kj6 is supposed to bring some bug fixes, I thought I'd check the kernel source. there's not a huge amount of difference, but some looks interesting, hopefully of use to anyone wanting to building it. Code: --- drivers/input/touchscreen/mxt540e.c 2011-10-20 02:58:48.000000000 +++ drivers/input/touchscreen/mxt540e.c 2011-10-25 17:58:10.000000000 @@ -907,16 +907,16 @@ } if (object_type == PROCG_NOISESUPPRESSION_T48) { if (msg[4] == 5) { /* Median filter error */ printk("[TSP] Median filter Error\n"); get_object_info(data, PROCG_NOISESUPPRESSION_T48, &size, &obj_address); - value = data->calcfg_batt_e; + value = 0; error = write_mem(data, obj_address+2, 1, &value); - msleep(5); - value |= 0x20; + msleep(15); + value = data->calcfg_batt_e; error |= write_mem(data, obj_address+2, 1, &value); if(error) printk(KERN_ERR "[TSP] failed to reenable CHRGON\n"); } } if (object_type == TOUCH_MULTITOUCHSCREEN_T9) { Code: --- drivers/input/keyboard/cypress/cypress-touchkey.c 2011-10-20 02:58:48.000000000 +++ drivers/input/keyboard/cypress/cypress-touchkey.c 2011-10-25 17:58:10.000000000 @@ -1909,18 +1909,20 @@ int ret = 0; #ifdef TEST_JIG_MODE unsigned char get_touch = 0x40; #endif +#ifndef CONFIG_MACH_Q1_REV02 if (gpio_request(_3_TOUCH_SDA_28V, "_3_TOUCH_SDA_28V")) WARN(1, "Fail to request gpio (_3_TOUCH_SDA_28V)\n"); if (gpio_request(_3_TOUCH_SCL_28V, "_3_TOUCH_SCL_28V")) WARN(1, "Fail to request gpio (_3_TOUCH_SCL_28V)\n"); if (gpio_request(_3_GPIO_TOUCH_EN, "_3_GPIO_TOUCH_EN")) WARN(1, "Fail to request gpio (_3_GPIO_TOUCH_EN)\n"); +#endif if (gpio_request(_3_GPIO_TOUCH_INT, "_3_GPIO_TOUCH_INT")) WARN(1, "Fail to request gpio (_3_GPIO_TOUCH_INT)\n"); /*20110222 N1_firmware_sync*/ sec_touchkey = device_create(sec_class, NULL, 0, NULL, "sec_touchkey"); @@ -2212,18 +2214,20 @@ misc_deregister(&touchkey_update_device); if (touchkey_wq) { destroy_workqueue(touchkey_wq); } +#ifndef CONFIG_MACH_Q1_REV02 gpio_free(_3_TOUCH_SDA_28V); gpio_free(_3_TOUCH_SCL_28V); gpio_free(_3_GPIO_TOUCH_EN); +#endif gpio_free(_3_GPIO_TOUCH_INT); } late_initcall(touchkey_init); module_exit(touchkey_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("@@@"); MODULE_DESCRIPTION("melfas touch keypad");
Code: --- drivers/leds/leds-max8997.c 2011-10-20 02:58:48.000000000 +++ drivers/leds/leds-max8997.c 2011-10-25 17:58:10.000000000 @@ -242,19 +242,30 @@ regulator_led_disable(led); regulator_put(led->vcc); kfree(led); return 0; } +static void regulator_led_shutdown(struct platform_device *pdev) +{ + struct regulator_led *led = platform_get_drvdata(pdev); + + if (regulator_is_enabled(led->vcc)) { + regulator_led_disable(led); + } + return; +} + static struct platform_driver regulator_led_driver = { .driver = { .name = "leds-max8997", .owner = THIS_MODULE, }, .probe = regulator_led_probe, .remove = __devexit_p(regulator_led_remove), + .shutdown = regulator_led_shutdown, }; static int __init regulator_led_init(void) { return platform_driver_register(®ulator_led_driver); } Code: --- drivers/media/video/samsung/mali/common/mali_kernel_mem_os.c 2011-10-20 02:58:48.000000000 +++ drivers/media/video/samsung/mali/common/mali_kernel_mem_os.c 2011-10-25 17:58:10.000000000 @@ -251,12 +251,13 @@ { if ( allocation_order > 0 ) { --allocation_order; } else { /* return OOM */ _mali_osk_lock_signal(info->mutex, _MALI_OSK_LOCKMODE_RW); + MALI_PRINT(("Failed to allocate consistent memory in all sizes.\n")); return MALI_MEM_ALLOC_NONE; } } /* try to allocate 2^(allocation_order) pages, if that fails, try * allocation_order-1 to allocation_order 0 (inclusive) */ @@ -270,18 +271,21 @@ --allocation_order; } if ( NULL == virt ) { MALI_DEBUG_PRINT(1, ("Failed to allocate consistent memory. Is CONSISTENT_DMA_SIZE set too low?\n")); + MALI_PRINT(("Failed to allocate consistent memory. Is CONSISTENT_DMA_SIZE set too low?\n")); /* return OOM */ _mali_osk_lock_signal(info->mutex, _MALI_OSK_LOCKMODE_RW); return MALI_MEM_ALLOC_NONE; } MALI_DEBUG_PRINT(5, ("os_allocator_allocate_page_table_block: Allocation of order %i succeeded\n", + allocation_order)); + MALI_PRINT(("os_allocator_allocate_page_table_block: Allocation of order %i succeeded\n", allocation_order)); /* we now know the size of the allocation since we know for what * allocation_order the allocation succeeded */ size = _MALI_OSK_CPU_PAGE_SIZE << allocation_order;
Code: --- drivers/media/video/m5mo.c 2011-10-20 02:58:48.000000000 +++ drivers/media/video/m5mo.c 2011-10-25 17:58:10.000000000 @@ -1707,13 +1707,13 @@ } #endif static int m5mo_set_touch_auto_focus(struct v4l2_subdev *sd, int val) { struct m5mo_state *state = to_state(sd); - int err = -EINVAL; + int err; cam_info("%s\n", val ? "start" : "stop"); state->focus.touch = val; if (val) { err = m5mo_set_af_mode(sd, FOCUS_MODE_TOUCH); @@ -1727,13 +1727,13 @@ err = m5mo_writew(sd, M5MO_CATEGORY_LENS, M5MO_LENS_AF_TOUCH_POSY, state->focus.pos_y); CHECK_ERR(err); } cam_trace("X\n"); - return err; + return 0; } static int m5mo_set_zoom(struct v4l2_subdev *sd, struct v4l2_control *ctrl) { struct m5mo_state *state = to_state(sd); struct v4l2_queryctrl qc = {0,};
Code: --- drivers/power/smb328_charger.c 2011-10-20 02:58:49.000000000 +++ drivers/power/smb328_charger.c 2011-10-25 17:58:10.000000000 @@ -820,18 +820,26 @@ { struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent); struct smb328_chip *chip; int ret = 0; int gpio = 0; u8 data; + int i; - if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE)) - return -EIO; + i = 10; + while (1) { + if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE)) + goto I2CERROR; - if (smb328_i2c_read(client, 0x36, &data)<0) /* check HW */ - return -EIO; + if (smb328_i2c_read(client, 0x36, &data)>=0) /* check HW */ + break; + +I2CERROR: + if (!i--) return -EIO; + msleep(300); + } dev_info(&client->dev, "%s : SMB328 Charger Driver Loading\n", __func__); chip = kzalloc(sizeof(struct smb328_chip), GFP_KERNEL); if (!chip) return -ENOMEM;
Code: --- drivers/video/samsung/s3cfb_s6e8aa0.c 2011-10-20 02:58:50.000000000 +++ drivers/video/samsung/s3cfb_s6e8aa0.c 2011-10-25 17:58:10.000000000 @@ -1009,19 +1009,27 @@ return 0; } int s6e8ax0_read_mtp(struct lcd_info *lcd, u8 *mtp_data) { int ret; + u8 retry_cnt = 3; s6e8ax0_write(lcd, enable_mtp_register, ARRAY_SIZE(enable_mtp_register)); + +read_retry: ret = s6e8ax0_read(lcd, LDI_MTP_ADDR, LDI_MTP_LENGTH, mtp_data); if (!ret) { - printk("ERROR:MTP read failed\n"); - return 0; + if (retry_cnt) { + printk("[WARN:LCD] : %s : retry cnt : %d\n", __func__, retry_cnt); + retry_cnt--; + goto read_retry; + } else + printk("ERROR:MTP read failed\n"); } + s6e8ax0_write(lcd, disable_mtp_register, ARRAY_SIZE(disable_mtp_register)); return ret; } #endif static ssize_t lcdtype_show(struct device *dev, struct @@ -1228,12 +1236,13 @@ struct s5p_platform_dsim *pd = (struct s5p_platform_dsim *)pdev->dev.platform_data; #endif #ifdef SMART_DIMMING u8 mtp_data[LDI_MTP_LENGTH] = {0,}; u32 i; u8 id_buf[3] = {0,}; + u8 retry_cnt = 3; #endif lcd = kzalloc(sizeof(struct lcd_info), GFP_KERNEL); if (!lcd) { pr_err("failed to allocate for lcd\n"); ret = -ENOMEM; @@ -1330,17 +1339,24 @@ dev_info(&lcd->ld->dev, "s6e8aa0 lcd panel driver has been probed.\n"); #ifdef SMART_DIMMING mutex_init(&lcd->bl_lock); - //read mpt +read_retry: ret = s6e8ax0_read(lcd, PANEL_ID_COMMAND, 3, id_buf); if (!ret) { - printk("[LCD:ERROR] : %s read id failed\n", __func__); - //return -1; + if (retry_cnt) { + printk("[WARN:LCD] : %s : retry cnt : %d\n", __func__, retry_cnt); + retry_cnt--; + goto read_retry; + } else { + printk("[ERROR:LCD] : %s : Read ID Failed\n", __func__); + /*To protect ELVSS Wrong Operation*/ + id_buf[2] = 0x33; + } } printk("Read ID : %x, %x, %x\n", id_buf[0], id_buf[1], id_buf[2]); if (id_buf[2] == 0x33) { lcd->support_elvss = 0; @@ -1361,22 +1377,23 @@ init_table_info(&lcd->smart); ret = s6e8ax0_read_mtp(lcd, mtp_data); if (!ret) { printk("[LCD:ERROR] : %s read mtp failed\n", __func__); - //return -1; + lcd->connected = 0; + dev_info(&lcd->ld->dev, "panel is not connected well\n"); + /*return -1;*/ } calc_voltage_table(&lcd->smart, mtp_data); s6e8ax0_adb_brightness_update(lcd, lcd->bd->props.brightness, 1); #endif - if (id_buf[0] == 0xa2) { - lcd->connected = 1; + if (lcd->connected) { INIT_DELAYED_WORK(&hs_clk_re_try, hs_clk_re_try_work); lcd->irq = gpio_to_irq(GPIO_OLED_DET); s3c_gpio_cfgpin(GPIO_OLED_DET, S3C_GPIO_SFN(0xf)); s3c_gpio_setpull(GPIO_OLED_DET, S3C_GPIO_PULL_NONE); @@ -1384,15 +1401,12 @@ if (request_irq(lcd->irq, oled_det_int, IRQF_TRIGGER_FALLING, "vgh_toggle", 0)) { pr_err("failed to reqeust irq. %d\n", lcd->irq); ret = -EINVAL; goto out_free_backlight; } - } else { - lcd->connected = 0; - dev_info(&lcd->ld->dev, "panel is not connected\n"); } return 0; out_free_backlight: lcd_device_unregister(lcd->ld);
Code: --- drivers/video/samsung/s5p-dsim.c 2011-10-20 02:58:50.000000000 +++ drivers/video/samsung/s5p-dsim.c 2011-10-25 17:58:10.000000000 @@ -115,13 +115,13 @@ #define MIPI_CMD_GENERIC_RD_2 0x24 #define MIPI_CMD_DSI_RD_0 0x06 #define MIPI_CMD_DSI_SET_PKT_SZ 0x37 -#define MIPI_RX_TIMEOUT HZ +#define MIPI_RX_TIMEOUT msecs_to_jiffies(250) #define DSMI_RX_FIFO_READ_DONE 0x30800002 #define DSIM_MAX_RX_FIFO 20 #define S5P_DSIM_INT_SFR_FIFO_EMPTY 29 #define S5P_DSIM_INT_BTA 25 #define S5P_DSIM_INT_MSK_FRAME_DONE 24 @@ -358,13 +358,13 @@ } rxhd = readl(reg_base + S5P_DSIM_RXFIFO); printk("rxhd : %x\n", rxhd); if ((u8)(rxhd & 0xff) != response) { printk(KERN_ERR "[DSIM:ERROR]:%s wrong response rxhd : %x, response:%x\n" - ,__func__, rxhd, response); + , __func__, rxhd, response); goto clear_rx_fifo; } // for short packet if (count <= 2) { for (i = 0; i < count; i++) buf[i] = (rxhd >> (8+(i*8))) & 0xff; @@ -379,21 +379,21 @@ goto clear_rx_fifo; } for (i = 0; i < rxsize>>2; i++) { temp = readl(reg_base + S5P_DSIM_RXFIFO); printk("pkt : %08x\n", temp); - for(j=0; j < 4; j++) { + for (j = 0; j < 4; j++) { buf[(i*4)+j] = (u8)(temp>>(j*8))&0xff; //printk("Value : %02x\n",(temp>>(j*8))&0xff); } } if (rxsize % 4) { temp = readl(reg_base + S5P_DSIM_RXFIFO); printk("pkt-l : %08x\n", temp); - for(j=0; j < rxsize%4; j++) { + for (j = 0; j < rxsize%4; j++) { buf[(i*4)+j] = (u8)(temp>>(j*8))&0xff; //printk("Value : %02x\n",(temp>>(j*8))&0xff); } } } @@ -1089,30 +1089,30 @@ writel(int_stat, dsim.reg_base + S5P_DSIM_INTMSK); } int s5p_dsim_fifo_clear(void) { - int dsim_count=0,ret; + int dsim_count = 0, ret; writel(SwRstRelease, dsim.reg_base + S5P_DSIM_INTSRC); - + writel(DSIM_FUNCRST, dsim.reg_base + S5P_DSIM_SWRST); - do{ - if(++dsim_count>90000){ - printk("dsim fifo clear fail re_try dsim resume\n"); - ret=0; + do { + if (++dsim_count > 90000) { + printk("dsim fifo clear fail re_try dsim resume\n"); + ret = 0; break; - } - - if(readl(dsim.reg_base + S5P_DSIM_INTSRC) & SwRstRelease){ - s5p_dsim_interrupt_mask_set(); - ret=1; + } + + if (readl(dsim.reg_base + S5P_DSIM_INTSRC) & SwRstRelease) { + s5p_dsim_interrupt_mask_set(); + ret = 1; break; } - }while(1); + } while (1); return ret; } #ifdef CONFIG_HAS_EARLYSUSPEND void s5p_dsim_early_suspend(void) @@ -1140,24 +1140,24 @@ if (dsim.mipi_drv->suspend) dsim.mipi_drv->suspend(dsim.dev, state); if (dsim.mipi_ddi_pd->lcd_power_on) dsim.mipi_ddi_pd->lcd_power_on(dsim.dev, 0); - + s5p_dsim_enable_hs_clock(dsim.reg_base, 0); s5p_dsim_set_clock(dsim.reg_base, dsim.dsim_info->e_byte_clk, 0); - + writel(0xffff, dsim.reg_base + S5P_DSIM_CLKCTRL); writel(0x0, dsim.reg_base + S5P_DSIM_PLLCTRL); writel(0x0, dsim.reg_base + S5P_DSIM_PLLTMR); writel(0x0, dsim.reg_base + S5P_DSIM_PHYACCHR); - writel(0x0, dsim.reg_base + S5P_DSIM_PHYACCHR1); + writel(0x0, dsim.reg_base + S5P_DSIM_PHYACCHR1); writel(0x1, dsim.reg_base + S5P_DSIM_SWRST); - + clk_disable(dsim.clock); #if 0 if (dsim.pd->mipi_power) dsim.pd->mipi_power(0); else
Code: --- drivers/video/samsung/s6e8aa0_param.h 2011-10-20 02:58:50.000000000 +++ drivers/video/samsung/s6e8aa0_param.h 2011-10-25 17:58:10.000000000 @@ -66,13 +66,14 @@ static const unsigned char SEQ_APPLY_LEVEL_2_KEY[] = { 0xFC, 0x5A, 0x5A }; static const unsigned char SEQ_SLEEP_OUT[] = { - 0x11 + 0x11, + 0x00,0x00 }; static const unsigned char SEQ_PANEL_CONDITION_SET[] = { 0xF8, 0x25, 0x34, 0x00, 0x00, 0x00, 0x95, 0x00, 0x3C, 0x7D, 0x08, 0x27, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, @@ -83,13 +84,14 @@ static const unsigned char SEQ_DISPLAY_CONDITION_SET[] = { 0xF2, 0x80, 0x03, 0x0D }; static const unsigned char SEQ_GAMMA_UPDATE[] = { - 0xF7, 0x03 + 0xF7, 0x03, + 0x00 }; static const unsigned char SEQ_ETC_SOURCE_CONTROL[] = { 0xF6, 0x00, 0x02, 0x00 }; @@ -116,30 +118,35 @@ 0x14, 0x40, 0x0C, 0xCB, 0xCE, 0x6E, 0xC4, 0x0F, 0x40, 0x41, 0xD9, 0x00, 0x00, 0x00 }; static const unsigned char SEQ_DISPLAY_ON[] = { - 0x29 + 0x29, + 0x00,0x00 }; static const unsigned char SEQ_DISPLAY_OFF[] = { - 0x28 + 0x28, + 0x00,0x00 }; static const unsigned char SEQ_STANDBY_ON[] = { - 0x01 + 0x01, + 0x00,0x00 }; static const unsigned char SEQ_ACL_ON[] = { 0xC0, 0x01, + 0x00 }; static const unsigned char SEQ_ACL_OFF[] = { 0xC0, 0x00, + 0x00 }; static const unsigned char SEQ_ACL_CUTOFF_20[] = { 0xC1, 0x47, 0x53, 0x13, 0x53, 0x00, 0x00, 0x03, 0x1F, 0x00, 0x00,
and they changed to codesourcery for toolchain +CROSS_COMPILE ?= /opt/toolchains/arm-2009q3/bin/arm-none-linux-gnueabi- Not a massive amount of differences, the screen driver changes looks most interesting to me.
fards said: and they changed to codesourcery for toolchain +CROSS_COMPILE ?= /opt/toolchains/arm-2009q3/bin/arm-none-linux-gnueabi- Not a massive amount of differences, the screen driver changes looks most interesting to me. Click to expand... Click to collapse Is there a new kernel source? Sent from my GT-I9100
yes, kj6 is up, the diffs are between kj4 and that kj6 to show the file differences (there's also some docs changes but they aren't really needed)
fards said: yes, kj6 is up, the diffs are between kj4 and that kj6 to show the file differences (there's also some docs changes but they aren't really needed) Click to expand... Click to collapse Where did you get the kernel source?
https://opensource.samsung.com/index.jsp search for N7000 I presume the kkx build will be there under the other device code.
fards said: https://opensource.samsung.com/index.jsp search for N7000 I presume the kkx build will be there under the other device code. Click to expand... Click to collapse LOL you have the Hong Kong version source code xD
netchip said: LOL you have the Hong Kong version source code xD Click to expand... Click to collapse kj6 as I said... to compare against kj4 as 6 is supposed to bring bugfixes..
fards said: Not a massive amount of differences, the screen driver changes looks most interesting to me. Click to expand... Click to collapse Maybe that diff solves my screen issue. Just to explain, sometimes my screen does not wake up even if the phone is still running (long pressing the on/off button makes the phone vibrate which means that it is still working) and when I hard reboot it (8 seconds long on/off button press), it restarts and in the battery usage I can see that the phone has been awake for a long time instead of having been idle (when it happens, it is generally during the night). As I am facing it globally (with both European stock and Hong Kong ROMs), I hope this kernel change corrects it.
The_Steph said: Maybe that diff solves my screen issue. Just to explain, sometimes my screen does not wake up even if the phone is still running (long pressing the on/off button makes the phone vibrate which means that it is still working) and when I hard reboot it (8 seconds long on/off button press), it restarts and in the battery usage I can see that the phone has been awake for a long time instead of having been idle (when it happens, it is generally during the night). As I am facing it globally (with both European stock and Hong Kong ROMs), I hope this kernel change corrects it. Click to expand... Click to collapse I've seen the same thing a couple of times. Still haven't tested the KJ6 kernel to see the effect of those patches yet.
Actually thats spurred me onto testing the KJ6.. Initialtesting suggests Screen powers back up Much quicker from standby
KJ6, where did you get it? Edit: I have Baseband version N7000XXKJ6 but Kernel N7000ZSKK1. Is is this version you are talking about?
The_Steph said: KJ6, where did you get it? Edit: I have Baseband version N7000XXKJ6 but Kernel N7000ZSKK1. Is is this version you are talking about? Click to expand... Click to collapse no there's threads with the kj6 kernel, including the CF root thread. I've just built kernel with the patches, working well so far.
Basically, what you did is you installed KJ6 kernel, rooted it and install the kernel you built? If yes, do you mind, allowing me to download the kernel you built in order to use it?
[PROJ] Lets overclock this baby!
The msm8960 can go upto 1.8ghz without voltage tweak, some have the batteries too to support it. With the unlocked BL, I gather we can flash kernel modules? Thats what the oc is done with most of the time. If you dont like the idea of oc, you can still undervolt for more battery. I gathered the kernel sources are here, but the module could maybe loaded without modding? I'm thinking of this one from the HOX. I did the guide but got stuck at the same error the guy did on page2. I added my edited file so you don't have to go through step 1-5.
Would this kernel be based on stock 4.1.1 or Cyanogenmod 10 / 10.1?
Not really looking to compile it into a kernel, it would be a touch-to-activate-on-every-boot kind of thing.
oh if i jeust know how to do it.............. we really need a superkernel now.....
I think the first worry should be to develop a recovery. Without a recovery what you with all these development? Sent from my SAMSUNG-SGH-I747 using xda premium
bankanidhi said: I think the first worry should be to develop a recovery. Without a recovery what you with all these development? Sent from my SAMSUNG-SGH-I747 using xda premium Click to expand... Click to collapse We have a working CWM already. Would be nice to have the types of recoveries the HTC devices had lol:silly:
jbatacan said: We have a working CWM already. Would be nice to have the types of recoveries the HTC devices had lol:silly: Click to expand... Click to collapse The cwm we have is buggy. Doesn't support gaining flashing of ROM buckle nicely.I have tried it. It its awful. Sent from my MB886 using xda app-developers app
bankanidhi said: The cwm we have is buggy. Doesn't support gaining flashing of ROM buckle nicely.I have tried it. It its awful. Sent from my MB886 using xda app-developers app Click to expand... Click to collapse what exactly wrong? im using it with no problems.........
CWM working just like I remember on HTC for me.
Youngunn2008 said: CWM working just like I remember on HTC for me. Click to expand... Click to collapse Can you link back to the thread you got it from? Also the bootloader unlock you used? Many thanks!
Stock 4.1.2 Bell kernel on github https://github.com/skeevy420/android_kernel_qinara_bell Figured this could help. source frequency table Code: static struct acpu_level acpu_freq_tbl_8960_kraitv2_slow[] = { { 0, { STBY_KHZ, QSB, 0, 0, 0x00 }, L2(0), 950000 }, { 1, { 384000, PLL_8, 0, 2, 0x00 }, L2(1), 950000 }, { 0, { 432000, HFPLL, 2, 0, 0x20 }, L2(7), 975000 }, { 1, { 486000, HFPLL, 2, 0, 0x24 }, L2(7), 975000 }, { 0, { 540000, HFPLL, 2, 0, 0x28 }, L2(7), 1000000 }, { 1, { 594000, HFPLL, 1, 0, 0x16 }, L2(7), 1000000 }, { 0, { 648000, HFPLL, 1, 0, 0x18 }, L2(7), 1025000 }, { 1, { 702000, HFPLL, 1, 0, 0x1A }, L2(7), 1025000 }, { 0, { 756000, HFPLL, 1, 0, 0x1C }, L2(7), 1075000 }, { 1, { 810000, HFPLL, 1, 0, 0x1E }, L2(7), 1075000 }, { 0, { 864000, HFPLL, 1, 0, 0x20 }, L2(7), 1100000 }, { 1, { 918000, HFPLL, 1, 0, 0x22 }, L2(7), 1100000 }, { 0, { 972000, HFPLL, 1, 0, 0x24 }, L2(7), 1125000 }, { 1, { 1026000, HFPLL, 1, 0, 0x26 }, L2(7), 1125000 }, { 0, { 1080000, HFPLL, 1, 0, 0x28 }, L2(16), 1175000 }, { 1, { 1134000, HFPLL, 1, 0, 0x2A }, L2(16), 1175000 }, { 0, { 1188000, HFPLL, 1, 0, 0x2C }, L2(16), 1200000 }, { 1, { 1242000, HFPLL, 1, 0, 0x2E }, L2(16), 1200000 }, { 0, { 1296000, HFPLL, 1, 0, 0x30 }, L2(16), 1225000 }, { 1, { 1350000, HFPLL, 1, 0, 0x32 }, L2(16), 1225000 }, { 0, { 1404000, HFPLL, 1, 0, 0x34 }, L2(16), 1237500 }, { 1, { 1458000, HFPLL, 1, 0, 0x36 }, L2(16), 1237500 }, { 1, { 1512000, HFPLL, 1, 0, 0x38 }, L2(16), 1250000 }, { 0, { 0 } } }; static struct acpu_level acpu_freq_tbl_8960_kraitv2_nom[] = { { 0, { STBY_KHZ, QSB, 0, 0, 0x00 }, L2(0), 900000 }, { 1, { 384000, PLL_8, 0, 2, 0x00 }, L2(1), 900000 }, { 0, { 432000, HFPLL, 2, 0, 0x20 }, L2(7), 925000 }, { 1, { 486000, HFPLL, 2, 0, 0x24 }, L2(7), 925000 }, { 0, { 540000, HFPLL, 2, 0, 0x28 }, L2(7), 950000 }, { 1, { 594000, HFPLL, 1, 0, 0x16 }, L2(7), 950000 }, { 0, { 648000, HFPLL, 1, 0, 0x18 }, L2(7), 975000 }, { 1, { 702000, HFPLL, 1, 0, 0x1A }, L2(7), 975000 }, { 0, { 756000, HFPLL, 1, 0, 0x1C }, L2(7), 1025000 }, { 1, { 810000, HFPLL, 1, 0, 0x1E }, L2(7), 1025000 }, { 0, { 864000, HFPLL, 1, 0, 0x20 }, L2(7), 1050000 }, { 1, { 918000, HFPLL, 1, 0, 0x22 }, L2(7), 1050000 }, { 0, { 972000, HFPLL, 1, 0, 0x24 }, L2(7), 1075000 }, { 1, { 1026000, HFPLL, 1, 0, 0x26 }, L2(7), 1075000 }, { 0, { 1080000, HFPLL, 1, 0, 0x28 }, L2(16), 1125000 }, { 1, { 1134000, HFPLL, 1, 0, 0x2A }, L2(16), 1125000 }, { 0, { 1188000, HFPLL, 1, 0, 0x2C }, L2(16), 1150000 }, { 1, { 1242000, HFPLL, 1, 0, 0x2E }, L2(16), 1150000 }, { 0, { 1296000, HFPLL, 1, 0, 0x30 }, L2(16), 1175000 }, { 1, { 1350000, HFPLL, 1, 0, 0x32 }, L2(16), 1175000 }, { 0, { 1404000, HFPLL, 1, 0, 0x34 }, L2(16), 1187500 }, { 1, { 1458000, HFPLL, 1, 0, 0x36 }, L2(16), 1187500 }, { 1, { 1512000, HFPLL, 1, 0, 0x38 }, L2(16), 1200000 }, { 0, { 0 } } }; static struct acpu_level acpu_freq_tbl_8960_kraitv2_fast[] = { { 0, { STBY_KHZ, QSB, 0, 0, 0x00 }, L2(0), 850000 }, { 1, { 384000, PLL_8, 0, 2, 0x00 }, L2(1), 850000 }, { 0, { 432000, HFPLL, 2, 0, 0x20 }, L2(7), 875000 }, { 1, { 486000, HFPLL, 2, 0, 0x24 }, L2(7), 875000 }, { 0, { 540000, HFPLL, 2, 0, 0x28 }, L2(7), 900000 }, { 1, { 594000, HFPLL, 1, 0, 0x16 }, L2(7), 900000 }, { 0, { 648000, HFPLL, 1, 0, 0x18 }, L2(7), 925000 }, { 1, { 702000, HFPLL, 1, 0, 0x1A }, L2(7), 925000 }, { 0, { 756000, HFPLL, 1, 0, 0x1C }, L2(7), 975000 }, { 1, { 810000, HFPLL, 1, 0, 0x1E }, L2(7), 975000 }, { 0, { 864000, HFPLL, 1, 0, 0x20 }, L2(7), 1000000 }, { 1, { 918000, HFPLL, 1, 0, 0x22 }, L2(7), 1000000 }, { 0, { 972000, HFPLL, 1, 0, 0x24 }, L2(7), 1025000 }, { 1, { 1026000, HFPLL, 1, 0, 0x26 }, L2(7), 1025000 }, { 0, { 1080000, HFPLL, 1, 0, 0x28 }, L2(16), 1075000 }, { 1, { 1134000, HFPLL, 1, 0, 0x2A }, L2(16), 1075000 }, { 0, { 1188000, HFPLL, 1, 0, 0x2C }, L2(16), 1100000 }, { 1, { 1242000, HFPLL, 1, 0, 0x2E }, L2(16), 1100000 }, { 0, { 1296000, HFPLL, 1, 0, 0x30 }, L2(16), 1125000 }, { 1, { 1350000, HFPLL, 1, 0, 0x32 }, L2(16), 1125000 }, { 0, { 1404000, HFPLL, 1, 0, 0x34 }, L2(16), 1137500 }, { 1, { 1458000, HFPLL, 1, 0, 0x36 }, L2(16), 1137500 }, { 1, { 1512000, HFPLL, 1, 0, 0x38 }, L2(16), 1150000 }, { 0, { 0 } } };
That looks awesome, how well are these compatible with 4.0? I tried it only 4.0 because thats what I have because of lapdock.
souljaboy said: That looks awesome, how well are these compatible with 4.0? I tried it only 4.0 because thats what I have because of lapdock. Click to expand... Click to collapse Should, just use the ICS kernel sources on sourceforge. table located in the file arch/arm/mach-msm/acpuclock-8960.c I'll be straight up with ya, kernel modding is new to me. I'm learning it one day at a time. My plan is to find a similar device with a 3.0.40 kernel (Bells version) and pull in mods and tweaks that way.
pianoman102 said: Can you link back to the thread you got it from? Also the bootloader unlock you used? Many thanks! Click to expand... Click to collapse Its all in our forum here, on the general section
pianoman102 said: Can you link back to the thread you got it from? Also the bootloader unlock you used? Many thanks! Click to expand... Click to collapse http://forum.xda-developers.com/showthread.php?t=2226504 Boot Loader Unlock http://forum.xda-developers.com/showthread.php?t=2227938 Root
I pm-ed the said guy in first post, he replied and wrote he didnt get it to work because his one S had different SoC than one x. We have same chipset though, so not sure whats going wrong... I'll long into these modules skeevy is writing about soon as I get a little free time.
souljaboy said: I pm-ed the said guy in first post, he replied and wrote he didnt get it to work because his one S had different SoC than one x. We have same chipset though, so not sure whats going wrong... I'll long into these modules skeevy is writing about soon as I get a little free time. Click to expand... Click to collapse I'm not referring to modules, tweaking the above would be the start of a new AHD kernel. As for your module idea, even though its the same soc, ya gotta find a module from a similar kernel. MR has 3.0.42 kernel. Look at it like its an alternator. Mazda Miata and RX8 have the same underlying frame (soc), but the have different bodies (the phone you see) and different engines (kernel). RX8 alternator won't bolt onto Miata w/o some fabrication (the tweaking), where as you could go to the scrapyard (xda) and find an alternator from a similar engine that will bolt on...or you go to a machine shop (github) and fabricate your own (mess with the source). Hope that makes since.
So we could just change the table and recompile kernel and its done?
skeevydude said: I'm not referring to modules, tweaking the above would be the start of a new AHD kernel. As for your module idea, even though its the same soc, ya gotta find a module from a similar kernel. MR has 3.0.42 kernel. Look at it like its an alternator. Mazda Miata and RX8 have the same underlying frame (soc), but the have different bodies (the phone you see) and different engines (kernel). RX8 alternator won't bolt onto Miata w/o some fabrication (the tweaking), where as you could go to the scrapyard (xda) and find an alternator from a similar engine that will bolt on...or you go to a machine shop (github) and fabricate your own (mess with the source). Hope that makes since. Click to expand... Click to collapse Nice analogy.
Youngunn2008 said: Nice analogy. Click to expand... Click to collapse Agreed. That was beautiful! http://android-gz.com
Parse nested JSON Objects/Arrays ?
I am pretty new to android and am trying to understand how to parse JSON data. How would I for example acces the data int the "age" key ? This is the JSON: Code: { "images": [ { "status": "Complete", "width": 475, "height": 475, "file": "content_5a28298675c96", "faces": [ { "topLeftX": 109, "topLeftY": 107, "height": 241, "rightEyeCenterY": 167, "rightEyeCenterX": 179, "pitch": -11, "quality": 0.75184, "confidence": 0.99938, "chinTipX": 229, "yaw": -5, "chinTipY": 369, "eyeDistance": 109, "width": 241, "leftEyeCenterY": 167, "leftEyeCenterX": 288, "attributes": { "lips": "Apart", "asian": 0.00006, "gender": { "femaleConfidence": 0.00001, "type": "M", "maleConfidence": 0.99999 }, "age": 34, "hispanic": 0.00023, "other": 0.00034, "black": 0.99936, "white": 0, "glasses": "Eye" }, "face_id": 1, "roll": 1 } ] } ], }