2011年8月5日金曜日

[KERNEL] Galaxy S2 SC-02C KG5 アップデート後のgamma等

KG5のアップデートは自分で調べた限り
1.initramfsは同一と思われる(ドライバ除く)
2.framework-res.apkはちがうぽい
3.gammaはKF2のSC-02Cと近く、Samsungのopensourceから落とした初期のソースを
    ビルドしたものよりガンマ設定が暗めになる(本来のガンマ?)
4.設定メニューのスクロールがスムースになったかも?
5.ワンセグ終了時のシャープネス戻し
くらいですかね。はっきりいってこんなん刻まなくていいから、はやいとこ2.3.4出してよって感じでしょうか。

前回のエントリでも書いたとおり、純正KG5のkernelには/dev/tunが存在していましたので、そのようなconfigでビルドされていると思いますが、samsung opensourceのGT-I9100_OpenSource_Update1.zipにあるconfigでは、このあたりがdisableされています。
cat c1_rev02_jpn_ntt_defconfig
代わりにNFCがenableだったりと、Update1はなんとなくdocomoがビルドに使ってるのより全然古いような気がしちゃいます。
#気がするだけですよ。まぁ、なんというか、気持ち悪い?

とりあえずいままでの、作業を反映させたkernelをビルドしてみて、以前のエントリに書いた方法でそのまま問題なくビルドできましたので、手順等は過去のエントリを参照してください。そのままです。で、そのkernelを焼いたのですがガンマがちょっと馴染めない感じです。暗いところが非常に暗く、明るいところもピークが伸びてない。画面の明るさを自動設定にしている自分にはちょっと違和感あります。初期リリースのkernelビルドして改善して喜んだのもつかの間です。
#もしかしたら自動設定でつかっちゃだめなのか??

というわけで、ガンマを制御しているパネルドライバの部分をdiffしてみると、どうやらUpdate1では新しいパネルのサポートがはいっているようです。sysfsでわかるパネルタイプの読み出し部分も下記の用な感じです。以前はSM2とM2という2つだけでしたね。そこが、今回新たにSM2がSM2_A1とSM2_A2にわかれたようです。

drivers/video/samsung/ld9040.c
static ssize_t octa_lcdtype_show(struct device *dev, struct
device_attribute *attr, char *buf)
{
        char temp[15];
        switch (get_lcdtype) {
        case LCDTYPE_SM2_A1:
                sprintf(temp, "OCTA : SM2 (A1 line)\n");
                strcat(buf, temp);
                break;
        case LCDTYPE_M2:
                sprintf(temp, "OCTA : M2\n");
                strcat(buf, temp);
                break;
        case LCDTYPE_SM2_A2:
                sprintf(temp, "OCTA : SM2 (A2 line)\n");
                strcat(buf, temp);
                break;
        default:
                sprintf(temp, "error\n");
                strcat(buf, temp);
                dev_info(dev, "read octa lcd type failed. \n");
                break;
        }
        return strlen(buf);

}
自分のパネルタイプを確認してみます。
adb shell
cat /sys/devices/platform/samsung-pd.2/s3cfb.0/spi_gpio.3/spi3.0/octa_lcdtype
OCTA : SM2 (A2 line)
SM2のA2らしいですw。ということは参照しているガンマテーブルはgamma_sm2_a2*みたいですが、c1-panel.cのdiffをとってみたところ、初期リリースのSM2のガンマがSM2のA1と同一です。とりあえず、これを参照するように変更してみます。変更点としては、ガンマテーブルを保持しているc1_panelストラクチャのメンバを直接変更してもいいですけど、自分ははロジック側を変更してみました

drivers/video/samsung/ld9040.c
        if (get_lcdtype == LCDTYPE_M2) { /* M2 */
                if (lcd->gamma_mode)
                        gamma = pdata->gamma19_table[lcd->bl];
                else
                        gamma = pdata->gamma22_table[lcd->bl];
        } else if (get_lcdtype == LCDTYPE_SM2_A2) { /* SM2 A2 line */
#if 0 /* creams A2 -> A1 */
                if (lcd->gamma_mode)
                        gamma = pdata->gamma_sm2_a2_19_table[lcd->bl];
                else
                        gamma = pdata->gamma_sm2_a2_22_table[lcd->bl];
#else
                if (lcd->gamma_mode)
                        gamma = pdata->gamma_sm2_a1_19_table[lcd->bl];
                else
                        gamma = pdata->gamma_sm2_a1_22_table[lcd->bl];
#endif
        } else { /* SM2 A1 line*/
                if (lcd->gamma_mode)
                        gamma = pdata->gamma_sm2_a1_19_table[lcd->bl];
                else
                        gamma = pdata->gamma_sm2_a1_22_table[lcd->bl];
        }
そしてビルド。
make -j2
出来上がったzImageをいつものようにheimdallでSGS2へフラッシュします。すると。。おー!以前のような明るさです。黒つぶれもなく、白のピークも伸びてる感じ。自分は絶対このほうがいいと思うのですが、、DSにでもいって比べてきますかなー。バグとも思えないので、個人の感じ方の差なんでしょうけど。もしくは、パネルタイプがまちがってるか。いずれにせよ自分の好きな感じになったのでよしとしましょう。

2.3.4早くコイ!

0 コメント:

コメントを投稿