[KERNEL][JB][JSS15J / JWR66V / CM] hells-Core b41 [28/11/2013]

  • 6.562 Antworten
  • Letztes Antwortdatum
den Hyper würde ich gerne testen, nur weiß ich nicht wirklich welche Verison es bei den Downloads ist bzw. wie ich ihn wo aktivieren kann..
 
Bim aktuellen B26-t und dann mit Hilfe von Trickster einstellen.
 
  • Danke
Reaktionen: bandit1976
Besser noch den b26-t2, der "-t" bootete bei einigen nicht.

edit. Hab den "-t" mal gelöscht, nicht dass noch Jemand im Boot Loop landet ^^

hells
 
  • Danke
Reaktionen: bandit1976
Ich habe "-t" und bin nicht im "bl" gelandet :)


CAHO
 
Glückssache mein Freund ;) :D

hells
 
smile-icon.png
.........Können mein Freund^^


CAHO
 
Zuletzt bearbeitet von einem Moderator:
ocp11 schrieb:
hier einmal mit google und einmal mit lg farbprofil

Das ist imo doppelt gemoppelt, mach mal in das script beides jeweils rein (.._b & .._blue, .._g & .._green, usw.)
Vll. schaut ja hells nochmal drüber und macht entweder das von faux oder motley rein. Normal sollte da nur eins von beiden sein (..._b oder ..._blue)


Aus mipi.lgit:
Code:
/******************* begin faux123 sysfs interface *******************/
static bool calc_checksum(int intArr[]) {
    int i = 0;
    unsigned char chksum = 0;
    
    if (intArr[5] > 31 || (intArr[6] > 31)) {
        pr_info("gamma 0 and gamma 1 values can't be over 31, got %d %d instead!", intArr[5], intArr[6]);
        return false;
    }
    
    for (i=1; i<10; i++) {
        if (intArr[i] > 255) {
            pr_info("color values  can't be over 255, got %d instead!", intArr[i]);
            return false;
        }
        chksum += intArr[i];
    }
    
    if (chksum == (unsigned char)intArr[0]) {
        return true;
    } else {
        pr_info("expecting %d, got %d instead!", chksum, intArr[0]);
        return false;
    }
}


static ssize_t kgamma_r_store(struct device *dev, struct device_attribute *attr,
                              const char *buf, size_t count)
{
    int kgamma[10];
    int i;
    
    sscanf(buf, "%d %d %d %d %d %d %d %d %d %d",
           &kgamma[0], &kgamma[1], &kgamma[2], &kgamma[3],
           &kgamma[4], &kgamma[5], &kgamma[6], &kgamma[7],
           &kgamma[8], &kgamma[9]);
    
    if (calc_checksum(kgamma)) {
        kgamma[0] = 0xd0;
        for (i=0; i<10; i++) {
            pr_info("kgamma_r_p [%d] => %d \n", i, kgamma[i]);
            new_color_vals[5].payload[i] = kgamma[i];
        }
        
        kgamma[0] = 0xd1;
        for (i=0; i<10; i++) {
            pr_info("kgamma_r_n [%d] => %d \n", i, kgamma[i]);
            new_color_vals[6].payload[i] = kgamma[i];
        }
    }
    return count;
}


static ssize_t kgamma_r_show(struct device *dev, struct device_attribute *attr,
                             char *buf)
{
    int kgamma[10];
    int i;
    
    for (i=0; i<10; i++)
        kgamma[i] = new_color_vals[5].payload[i];
    
    return sprintf(buf, "%d %d %d %d %d %d %d %d %d %d", 
                   kgamma[0], kgamma[1], kgamma[2], kgamma[3],
                   kgamma[4], kgamma[5], kgamma[6], kgamma[7],
                   kgamma[8], kgamma[9]);
}


static ssize_t kgamma_g_store(struct device *dev, struct device_attribute *attr,
                              const char *buf, size_t count)
{
    int kgamma[10];
    int i;
    
    sscanf(buf, "%d %d %d %d %d %d %d %d %d %d",
           &kgamma[0], &kgamma[1], &kgamma[2], &kgamma[3],
           &kgamma[4], &kgamma[5], &kgamma[6], &kgamma[7],
           &kgamma[8], &kgamma[9]);
    
    if (calc_checksum(kgamma)) {
        kgamma[0] = 0xd2;
        for (i=0; i<10; i++) {
            pr_info("kgamma_g_p [%d] => %d \n", i, kgamma[i]);
            new_color_vals[7].payload[i] = kgamma[i];
        }
        
        kgamma[0] = 0xd3;
        for (i=0; i<10; i++) {
            pr_info("kgamma_g_n [%d] => %d \n", i, kgamma[i]);
            new_color_vals[8].payload[i] = kgamma[i];
        }
    }
    return count;
}


static ssize_t kgamma_g_show(struct device *dev, struct device_attribute *attr,
                             char *buf)
{
    int kgamma[10];
    int i;
    
    for (i=0; i<10; i++)
        kgamma[i] = new_color_vals[7].payload[i];
    
    return sprintf(buf, "%d %d %d %d %d %d %d %d %d %d", 
                   kgamma[0], kgamma[1], kgamma[2], kgamma[3],
                   kgamma[4], kgamma[5], kgamma[6], kgamma[7],
                   kgamma[8], kgamma[9]);
}


static ssize_t kgamma_b_store(struct device *dev, struct device_attribute *attr,
                              const char *buf, size_t count)
{
    int kgamma[10];
    int i;
    
    sscanf(buf, "%d %d %d %d %d %d %d %d %d %d",
           &kgamma[0], &kgamma[1], &kgamma[2], &kgamma[3],
           &kgamma[4], &kgamma[5], &kgamma[6], &kgamma[7],
           &kgamma[8], &kgamma[9]);
    
    if (calc_checksum(kgamma)) {
        kgamma[0] = 0xd4;
        for (i=0; i<10; i++) {
            pr_info("kgamma_b_p [%d] => %d \n", i, kgamma[i]);
            new_color_vals[9].payload[i] = kgamma[i];
        }
        
        kgamma[0] = 0xd5;
        for (i=0; i<10; i++) {
            pr_info("kgamma_b_n [%d] => %d \n", i, kgamma[i]);
            new_color_vals[10].payload[i] = kgamma[i];
        }
    }
    return count;
}


static ssize_t kgamma_b_show(struct device *dev, struct device_attribute *attr,
                             char *buf)
{
    int kgamma[10];
    int i;
    
    for (i=0; i<10; i++)
        kgamma[i] = new_color_vals[9].payload[i];
    
    return sprintf(buf, "%d %d %d %d %d %d %d %d %d %d", 
                   kgamma[0], kgamma[1], kgamma[2], kgamma[3],
                   kgamma[4], kgamma[5], kgamma[6], kgamma[7],
                   kgamma[8], kgamma[9]);
}


static ssize_t kgamma_ctrl_store(struct device *dev,
                                 struct device_attribute *attr, const char *buf, size_t count)
{
    pr_info("kgamma_ctrl count: %d\n", count);
    return count;
}


static ssize_t kgamma_ctrl_show(struct device *dev,
                                struct device_attribute *attr, char *buf)
{
    return 0;
}


static DEVICE_ATTR(kgamma_r, 0644, kgamma_r_show, kgamma_r_store);
static DEVICE_ATTR(kgamma_g, 0644, kgamma_g_show, kgamma_g_store);
static DEVICE_ATTR(kgamma_b, 0644, kgamma_b_show, kgamma_b_store);
static DEVICE_ATTR(kgamma_ctrl, 0644, kgamma_ctrl_show, kgamma_ctrl_store);
/******************* end faux123 sysfs interface *******************/


/******************* motley sysfs interface ********************/


/** check for for reasonable values and ones that are too large for the
 * destination char data type
 * */
static bool calc_checksum_generic(unsigned int intArr[]) {
    int i = 0;
    unsigned int chksum = 0;
    
    if (intArr[5] > 31 || (intArr[6] > 31)) {
        pr_info("gamma 0 and gamma 1 values can't be over 31, got %d %d instead!", intArr[5], intArr[6]);
        return false;
    }
    
    for (i=1; i<10; i++) {
        if (intArr[i] > 255) {
            pr_info("char values  can't be over 255, got %d instead!", intArr[i]);
            return false;
        }
        chksum += intArr[i];
    }
    
    if (chksum == intArr[0]) {
        return true;
    } else {
        pr_info("expecting %d, got %d instead!", chksum, intArr[0]);
        return false;
    }
}


static ssize_t kgamma_red_store(struct device *dev, struct device_attribute *attr,
                                const char *buf, size_t count)
{
    unsigned int kgamma[10];
    int i;
    
    sscanf(buf, "%d %d %d %d %d %d %d %d %d %d",
           &kgamma[0], &kgamma[1], &kgamma[2], &kgamma[3],
           &kgamma[4], &kgamma[5], &kgamma[6], &kgamma[7],
           &kgamma[8], &kgamma[9]);
    
    if (calc_checksum_generic(kgamma)) {
        kgamma[0] = 0xd0;
        for (i=0; i<10; i++) {
            pr_info("kgamma_r_p [%d] => %d \n", i, kgamma[i]);
            new_color_vals[5].payload[i] = (char)kgamma[i];
        }
        
        kgamma[0] = 0xd1;
        for (i=0; i<10; i++) {
            pr_info("kgamma_r_n [%d] => %d \n", i, kgamma[i]);
            new_color_vals[6].payload[i] = (char)kgamma[i];
        }
    }
    return count;
}


static ssize_t kgamma_red_show(struct device *dev, struct device_attribute *attr,
                               char *buf)
{
    unsigned int kgamma[10];
    int i;
    unsigned int check_sum =0;
    
    for (i=1; i<10; i++) {
        kgamma[i] = (unsigned int)new_color_vals[5].payload[i];
        check_sum += kgamma[i];
    }
    
    kgamma[0] = check_sum;
    
    return sprintf(buf, "%d %d %d %d %d %d %d %d %d %d",
                   kgamma[0], kgamma[1], kgamma[2], kgamma[3],
                   kgamma[4], kgamma[5], kgamma[6], kgamma[7],
                   kgamma[8], kgamma[9]);
}


static ssize_t kgamma_green_store(struct device *dev, struct device_attribute *attr,
                                  const char *buf, size_t count)
{
    unsigned int kgamma[10];
    int i;
    
    sscanf(buf, "%d %d %d %d %d %d %d %d %d %d",
           &kgamma[0], &kgamma[1], &kgamma[2], &kgamma[3],
           &kgamma[4], &kgamma[5], &kgamma[6], &kgamma[7],
           &kgamma[8], &kgamma[9]);
    
    if (calc_checksum_generic(kgamma)) {
        kgamma[0] = 0xd2;
        for (i=0; i<10; i++) {
            pr_info("kgamma_g_p [%d] => %d \n", i, kgamma[i]);
            new_color_vals[7].payload[i] = (char)kgamma[i];
        }
        
        kgamma[0] = 0xd3;
        for (i=0; i<10; i++) {
            pr_info("kgamma_g_n [%d] => %d \n", i, kgamma[i]);
            new_color_vals[8].payload[i] = (char)kgamma[i];
        }
    }
    return count;
}


static ssize_t kgamma_green_show(struct device *dev, struct device_attribute *attr,
                                 char *buf)
{
    unsigned int kgamma[10];
    int i;
    unsigned int check_sum =0;
    
    for (i=1; i<10; i++) {
        kgamma[i] = (unsigned int)new_color_vals[7].payload[i];
        check_sum += kgamma[i];
    }
    
    kgamma[0] = check_sum;
    
    return sprintf(buf, "%d %d %d %d %d %d %d %d %d %d",
                   kgamma[0], kgamma[1], kgamma[2], kgamma[3],
                   kgamma[4], kgamma[5], kgamma[6], kgamma[7],
                   kgamma[8], kgamma[9]);
}


static ssize_t kgamma_blue_store(struct device *dev, struct device_attribute *attr,
                                 const char *buf, size_t count)
{
    unsigned int kgamma[10];
    int i;
    
    sscanf(buf, "%d %d %d %d %d %d %d %d %d %d",
           &kgamma[0], &kgamma[1], &kgamma[2], &kgamma[3],
           &kgamma[4], &kgamma[5], &kgamma[6], &kgamma[7],
           &kgamma[8], &kgamma[9]);
    
    if (calc_checksum_generic(kgamma)) {
        kgamma[0] = 0xd4;
        for (i=0; i<10; i++) {
            pr_info("kgamma_b_p [%d] => %d \n", i, kgamma[i]);
            new_color_vals[9].payload[i] = (char)kgamma[i];
        }
        
        kgamma[0] = 0xd5;
        for (i=0; i<10; i++) {
            pr_info("kgamma_b_n [%d] => %d \n", i, kgamma[i]);
            new_color_vals[10].payload[i] = (char)kgamma[i];
        }
    }
    return count;
}


static ssize_t kgamma_blue_show(struct device *dev, struct device_attribute *attr,
                                char *buf)
{
    unsigned int kgamma[10];
    int i;
    unsigned int check_sum =0;
    
    for (i=1; i<10; i++) {
        kgamma[i] = (unsigned int)new_color_vals[9].payload[i];
        check_sum += kgamma[i];
    }
    
    kgamma[0] = check_sum;
    
    return sprintf(buf, "%d %d %d %d %d %d %d %d %d %d",
                   kgamma[0], kgamma[1], kgamma[2], kgamma[3],
                   kgamma[4], kgamma[5], kgamma[6], kgamma[7],
                   kgamma[8], kgamma[9]);
}


static ssize_t refresh_screen_go (struct device *dev, struct device_attribute *attr,
                        const char *buf, size_t count) {


    unsigned int i = 0;
    int ret = 0;


    sscanf(buf, "%i", &i);
    if (i == 1) {
        msleep(20);
        MIPI_OUTP(MIPI_DSI_BASE + 0x38, 0x10000000);
        ret = mipi_dsi_cmds_tx(&lgit_tx_buf,
                new_color_vals,
                    mipi_lgit_pdata->power_on_set_size_1);
            MIPI_OUTP(MIPI_DSI_BASE + 0x38, 0x14000000);
            if (ret < 0)
                pr_err("%s: failed to transmit power_on_set_1 cmds\n", __func__);
    }
    
    return count;
}


static ssize_t refresh_screen_show(struct device *dev, struct device_attribute *attr,
                                char *buf)
{
    return sprintf(buf, "%d", 0);
}


static DEVICE_ATTR(kgamma_red, 0644, kgamma_red_show, kgamma_red_store);
static DEVICE_ATTR(kgamma_green, 0644, kgamma_green_show, kgamma_green_store);
static DEVICE_ATTR(kgamma_blue, 0644, kgamma_blue_show, kgamma_blue_store);
static DEVICE_ATTR(refresh_screen, 0644, refresh_screen_show, refresh_screen_go);
/******************* end motley sysfs interface ********************/

@CAHO
an was lags denn?
 
Das motley Interface ist doch eigendlich nur zur Ergänzung. Sprich man kann das faux oder motley sysfs Interface nehmen und das von motley braucht das von faux, oder nicht? Das ist kein Eigenständiges Gamma Control.

hells
 
Meines wissen 2 versch. "Versionen" vom gleichen (motley hat bei seinem blue statt b, usw.) Was bringt den das von Motley zusätzlich (Ergänzung zu was?)?

grüße.
 
Kannst es dir ja selber mal anschauen: klick

hells
 
so beides eingefügt und keine änderung des farbprofiles. :(
 
Ich glaube ich hab den Fehler gefunden. Compiliere gleich.

hells
 
hellsgod schrieb:
Kannst es dir ja selber mal anschauen: klick

hells

Keine Ahnung auf die schnelle was genau der unterschied ist :) (einzig

motley hat ja iwann mal auf das franco interface umgestellt, er hats aber auch wie du schon schriebst doppelt drin (_b & _blue, usw. ; wie bei dir), aber dann müsste es so auch klappen (s.u.) :confused:, ich diff heut mal beide dateien was noch, neben dem franco interface, anders ist.
Braucht man das zeug von Motley zwingend? Hab nur das von faux drin und noch keine Probleme damit gehabt.
echo xyz > /sys/devices/platform/mipi_lgit.1537/kgamma_red echo xyz > /sys/devices/platform/mipi_lgit.1537/kgamma_green echo xyz > /sys/devices/platform/mipi_lgit.1537/kgamma_blue
 
@Vetzki: Die Sachen von motley braucht man sicher nicht zwingend. Das Gamma Control gehörte zu den ersten Sachen die ich gepickt habe und ich dachte zuerst, man brauche das sysfs von motley, damit das mit Trickster funktioniert. Ich habe gemerkt, dass ich da beim Picken etwas gepatzt hab. Es gab einige Konflikte, welche ich anscheinend nicht ganz sauber gelöst habe. Das habe ich jetzt gefixt und hoffe, dass es jetzt mit dem Script klappt. Falls nicht, werfe ich die motley Sachen raus.

hells-Core-b26-t3
-hyper Governor etwas batteriefreundlicher gemacht (up_threshold_min_freq auf 60 und up_threshold auf 80 erhöht)
-idle stats entfernt (brauchts nicht thx an anarkia1976)
-PAGE_ALLOC_COSTLY_ORDER entfernt (+/- 3% boost thx an anarkia1976)
-Genauere Wakelog Stats (thx tungstwenty)
-Gamma Control Patzer beseitigt (facepalm to myself...)
-Standard GPU Governor wieder auf ondemand (Ich hasse diese Mikroruckler in den Animationen... Simple kann per Trickster natürlich weiterhin ausgewählt werden)

Ich bin jetzt die Commits vom 25er nochmals durchgegangen. Was da drin ist, ist in meinen Augen sinnvoll und sollte, man beachte das Wort "sollte", nicht zu mehr Wärme führen. Solange das Teil nicht heiss wird, sehe ich da kein Problem. Etwas mehr Performance fordert meistens etwas (Wärme, Batterie u.a.)

Ich weiss nicht und mir ist es auch egal wie das andere Kernel Devs handhaben, ICH mache den Kernel primär für mich und passe ihn auf mein Nutzungsverhalten an. Sofern ICH und eine Mehrheit (ca. 80%+) keine Probleme haben, sehe ich mich nicht gezwungen alles über den Haufen zu schmeissen. Probleme sollen nicht verschwiegen werden, doch auf alle Sonderwünsche gehe ich nicht ein. Ich veröffentliche nichts, was bei mir zu Neustarts, Freeze, Lags oder tanzenden Handies führt.

Ich werde in Zukunft auf Niemanden mehr eingehen, der einen Neustart meldet ohne einen Kernel Log. In diesem Sinne, Viel Spass mit -t3 und probiert doch bitte mal die neuen Governors und den bfq Scheduler aus, damit ich etwas Feedback habe.

DOWNLOADS

hells

 
  • Danke
Reaktionen: Redbull320, Fabipro und mj084
Welche Version kann ich jetzt ohne por installieren ?
 
Ohne was? Ohne Probleme meinst du?

hells
 
Habe jetzt den t2 drauf mit hyper und es dauert ein wenig bis er vom ds rund läuft. Kann ich da etwas ändern, dass er nach dem deepsleep nicht lagged??
 
einmal mit b und einmal mit blue ausprobiert . immernoch keine änderung.


funktioniert das bei anderen oder bin ich der einzigste?
 
Ist mir noch nie aufgefallen... Der hyper ist darauf ausgelegt, den DS zu erkennen und somit einen höheren DS Anteil zu erreichen. Er ist nicht für das N4 entwickelt worden, somit kann es da Probleme geben. Ich beobachte das bei mir jetzt mal genauer. Fällt mir etwas auf, spiele ich mit den Werten rum und melde mich wieder :)

@ocp11: Was ist so schlimm daran die Farben mit Trickster einzustellen...? Ich kann schon versuchen die motley ergänzungen rauszuschmeissen, doch wenn es mit Trickster geht, sehe ich den Sinn nicht so ganz...

hells
 
  • Danke
Reaktionen: bandit1976

Ähnliche Themen

IceDevil
Antworten
85
Aufrufe
15.944
alibiy
alibiy
H
Antworten
1.549
Aufrufe
263.835
darthmarco
darthmarco
C
Antworten
141
Aufrufe
27.189
Caho
C
Zurück
Oben Unten