Send commitlog mailing list submissions to
        commitlog@lists.openmoko.org

To subscribe or unsubscribe via the World Wide Web, visit
        http://lists.openmoko.org/mailman/listinfo/commitlog
or, via email, send a message with subject or body 'help' to
        [EMAIL PROTECTED]

You can reach the person managing the list at
        [EMAIL PROTECTED]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of commitlog digest..."
Today's Topics:

   1. r4111 - branches/src/target/kernel/2.6.24.x/patches
      ([EMAIL PROTECTED])
   2. r4112 - trunk/src/target/gpio ([EMAIL PROTECTED])
   3. r4113 - trunk/src/host/devirginator ([EMAIL PROTECTED])
   4. r4114 - branches/src/target/kernel/2.6.24.x/patches
      ([EMAIL PROTECTED])
   5. r4115 - in trunk/src/target/gsm: include/gsmd include/libgsmd
      src/gsmd src/libgsmd src/util ([EMAIL PROTECTED])
   6. r4116 - trunk/src/target/gsm/include/gsmd
      ([EMAIL PROTECTED])
   7. r4117 - trunk/src/host/devirginator ([EMAIL PROTECTED])
--- Begin Message ---
Author: werner
Date: 2008-02-26 01:28:56 +0100 (Tue, 26 Feb 2008)
New Revision: 4111

Added:
   branches/src/target/kernel/2.6.24.x/patches/fix-i2c-s3c2410-resume-race.patch
Modified:
   branches/src/target/kernel/2.6.24.x/patches/series
Log:
fix-i2c-s3c2410-resume-race.patch

From: Andy Green <[EMAIL PROTECTED]>

There is a nasty race between i2c-s3c2410 resume and resume of I2C
driver and the client drivers -- the watchdog device actually gets to
use the dead I2C bus before it is reinitialized by the I2C driver
resume!  This patch makes sure any customers get turned away until
the shopkeeper has woken up.

Signed-off-by: Andy Green <[EMAIL PROTECTED]>
---

 drivers/i2c/busses/i2c-s3c2410.c |   32 +++++++++++++++++++++++++++++++-
 1 files changed, 31 insertions(+), 1 deletions(-)



Added: 
branches/src/target/kernel/2.6.24.x/patches/fix-i2c-s3c2410-resume-race.patch
===================================================================
--- 
branches/src/target/kernel/2.6.24.x/patches/fix-i2c-s3c2410-resume-race.patch   
    2008-02-24 23:07:00 UTC (rev 4110)
+++ 
branches/src/target/kernel/2.6.24.x/patches/fix-i2c-s3c2410-resume-race.patch   
    2008-02-26 00:28:56 UTC (rev 4111)
@@ -0,0 +1,102 @@
+fix-i2c-s3c2410-resume-race.patch
+
+From: Andy Green <[EMAIL PROTECTED]>
+
+There is a nasty race between i2c-s3c2410 resume and resume of I2C
+driver and the client drivers -- the watchdog device actually gets to
+use the dead I2C bus before it is reinitialized by the I2C driver
+resume!  This patch makes sure any customers get turned away until
+the shopkeeper has woken up.
+
+Signed-off-by: Andy Green <[EMAIL PROTECTED]>
+
+---
+
+ drivers/i2c/busses/i2c-s3c2410.c |   32 +++++++++++++++++++++++++++++++-
+ 1 files changed, 31 insertions(+), 1 deletions(-)
+
+Index: linux-2.6.24/drivers/i2c/busses/i2c-s3c2410.c
+===================================================================
+--- linux-2.6.24.orig/drivers/i2c/busses/i2c-s3c2410.c
++++ linux-2.6.24/drivers/i2c/busses/i2c-s3c2410.c
+@@ -71,6 +71,8 @@ struct s3c24xx_i2c {
+       struct resource         *irq;
+       struct resource         *ioarea;
+       struct i2c_adapter      adap;
++
++      int                     suspended;
+ };
+ 
+ /* default platform data to use if not supplied in the platform_device
+@@ -156,6 +158,14 @@ static inline void s3c24xx_i2c_disable_i
+       unsigned long tmp;
+       
+       tmp = readl(i2c->regs + S3C2410_IICCON);
++
++/* S3c2442 datasheet
++ *
++ * If the IICCON[5]=0, IICCON[4] does not operate correctly.
++ * So, It is recommended that you should set IICCON[5]=1,
++ * although you does not use the IIC interrupt.
++ */
++
+       writel(tmp & ~S3C2410_IICCON_IRQEN, i2c->regs + S3C2410_IICCON);
+ }
+ 
+@@ -282,7 +292,7 @@ static int i2s_s3c_irq_nextbyte(struct s
+ 
+       case STATE_STOP:
+               dev_err(i2c->dev, "%s: called in STATE_STOP\n", __FUNCTION__);
+-              s3c24xx_i2c_disable_irq(i2c);           
++              s3c24xx_i2c_disable_irq(i2c);
+               goto out_ack;
+ 
+       case STATE_START:
+@@ -502,6 +512,12 @@ static int s3c24xx_i2c_doxfer(struct s3c
+       unsigned long timeout;
+       int ret;
+ 
++      if (i2c->suspended) {
++              dev_err(i2c->dev, "Hey I am still asleep, retry later\n");
++              ret = -EAGAIN;
++              goto out;
++      }
++
+       ret = s3c24xx_i2c_set_master(i2c);
+       if (ret != 0) {
+               dev_err(i2c->dev, "cannot get bus (error %d)\n", ret);
+@@ -886,6 +902,17 @@ static int s3c24xx_i2c_remove(struct pla
+ }
+ 
+ #ifdef CONFIG_PM
++
++static int s3c24xx_i2c_suspend(struct platform_device *dev, pm_message_t 
state)
++{
++      struct s3c24xx_i2c *i2c = platform_get_drvdata(dev);
++
++      if (i2c != NULL)
++              i2c->suspended++;
++
++      return 0;
++}
++
+ static int s3c24xx_i2c_resume(struct platform_device *dev)
+ {
+       struct s3c24xx_i2c *i2c = platform_get_drvdata(dev);
+@@ -893,6 +920,8 @@ static int s3c24xx_i2c_resume(struct pla
+       if (i2c != NULL)
+               s3c24xx_i2c_init(i2c);
+ 
++      i2c->suspended--;
++
+       return 0;
+ }
+ 
+@@ -915,6 +944,7 @@ static struct platform_driver s3c2410_i2
+ static struct platform_driver s3c2440_i2c_driver = {
+       .probe          = s3c24xx_i2c_probe,
+       .remove         = s3c24xx_i2c_remove,
++      .suspend        = s3c24xx_i2c_suspend,
+       .resume         = s3c24xx_i2c_resume,
+       .driver         = {
+               .owner  = THIS_MODULE,

Modified: branches/src/target/kernel/2.6.24.x/patches/series
===================================================================
--- branches/src/target/kernel/2.6.24.x/patches/series  2008-02-24 23:07:00 UTC 
(rev 4110)
+++ branches/src/target/kernel/2.6.24.x/patches/series  2008-02-26 00:28:56 UTC 
(rev 4111)
@@ -5,6 +5,9 @@
 asoc-neo1973_wm8753-power.patch
 asoc-core-suspend_resume.patch
 
+# this looks like a bug in upstream
+fix-i2c-s3c2410-resume-race.patch
+
 # GTA01 core feature set
 s3c2410-bbt.patch
 gta01-pcf50606.patch




--- End Message ---
--- Begin Message ---
Author: werner
Date: 2008-02-26 04:18:44 +0100 (Tue, 26 Feb 2008)
New Revision: 4112

Modified:
   trunk/src/target/gpio/gpio.c
Log:
gpio.c (pin_a): mark port A pin values as outputs



Modified: trunk/src/target/gpio/gpio.c
===================================================================
--- trunk/src/target/gpio/gpio.c        2008-02-26 00:28:56 UTC (rev 4111)
+++ trunk/src/target/gpio/gpio.c        2008-02-26 03:18:44 UTC (rev 4112)
@@ -72,7 +72,7 @@
        if (con)
                return dat ? "F1" : "F0";
        else
-               return dat ? " 1" : " 0";
+               return dat ? ">1" : ">0";
 }
 
 




--- End Message ---
--- Begin Message ---
Author: werner
Date: 2008-02-26 05:38:42 +0100 (Tue, 26 Feb 2008)
New Revision: 4113

Added:
   trunk/src/host/devirginator/flashnor
Log:
flashnor: utility to intelligently flash the GTA02 NOR



Added: trunk/src/host/devirginator/flashnor
===================================================================
--- trunk/src/host/devirginator/flashnor        2008-02-26 03:18:44 UTC (rev 
4112)
+++ trunk/src/host/devirginator/flashnor        2008-02-26 04:38:42 UTC (rev 
4113)
@@ -0,0 +1,55 @@
+#!/bin/sh -e
+#
+# flashnor - Flash a file into NOR (M58WR016KB)
+#
+# Copyright (C) 2008 by OpenMoko, Inc.
+# Written by Werner Almesberger <[EMAIL PROTECTED]>
+# All Rights Reserved
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+
+
+DEV=/dev/mtd0
+
+
+usage()
+{
+    echo "usage: $0 nor.bin" 1>&2
+    exit 1
+}
+
+
+check()
+{
+    nor=`dd if=$DEV bs=$size count=1 | md5sum`
+    [ "$nor" = "$ref" ]
+}
+
+
+empty()
+{
+    ff=`dd if=/dev/zero bs=$size count=1 | tr '\000' '\377' | md5sum`
+    [ "$ff" = "$nor" ]
+}
+
+
+[ -z "$1" -o ! -z "$2" ] && usage
+
+size=`ls -l "$1" | awk '{ print $5 }'`
+if [ $size -lt 65536 ]; then
+    blocks=`expr \( $size + 8191 \) / 8192`
+else
+    blocks=`expr \( $size - 65536 + 65535 \) / 65536 + 8`
+fi
+
+ref=`md5sum <"$1"`
+check && exit
+flash_unlock $DEV
+empty || flash_erase $DEV 0 $blocks
+cat "$1" >$DEV
+flash_lock /dev/mtd0 0 -1
+check


Property changes on: trunk/src/host/devirginator/flashnor
___________________________________________________________________
Name: svn:executable
   + *




--- End Message ---
--- Begin Message ---
Author: werner
Date: 2008-02-26 08:53:29 +0100 (Tue, 26 Feb 2008)
New Revision: 4114

Modified:
   branches/src/target/kernel/2.6.24.x/patches/gta01-inputdevice.patch
Log:
We can wake up from suspend with POWER, so there's no need to have AUX as
as another wakeup source, and in particular one that's easily triggered
by accident.

gta01-inputdevice.patch:
- drivers/input/keyboard/neo1973kbd.c (neo1973kbd_probe): don't make AUX a
  wakeup source ever



Modified: branches/src/target/kernel/2.6.24.x/patches/gta01-inputdevice.patch
===================================================================
--- branches/src/target/kernel/2.6.24.x/patches/gta01-inputdevice.patch 
2008-02-26 04:38:42 UTC (rev 4113)
+++ branches/src/target/kernel/2.6.24.x/patches/gta01-inputdevice.patch 
2008-02-26 07:53:29 UTC (rev 4114)
@@ -39,7 +39,7 @@
 ===================================================================
 --- /dev/null
 +++ linux-2.6.24/drivers/input/keyboard/neo1973kbd.c
-@@ -0,0 +1,239 @@
+@@ -0,0 +1,235 @@
 +/*
 + * Keyboard driver for FIC Neo1973 GSM phone
 + *
@@ -66,7 +66,6 @@
 +
 +#include <asm/hardware.h>
 +#include <asm/arch/gta01.h>
-+#include <asm/mach-types.h>
 +
 +struct neo1973kbd {
 +      struct input_dev *input;
@@ -202,9 +201,6 @@
 +              goto out_aux;
 +      }
 +
-+      if (machine_is_neo1973_gta01())
-+              enable_irq_wake(irq_aux);
-+
 +      if (request_irq(irq_hold, neo1973kbd_hold_irq, IRQF_DISABLED |
 +                      IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
 +                      "Neo1973 HOLD button", neo1973kbd)) {




--- End Message ---
--- Begin Message ---
Author: erin_yueh
Date: 2008-02-26 09:57:39 +0100 (Tue, 26 Feb 2008)
New Revision: 4115

Modified:
   trunk/src/target/gsm/include/gsmd/state.h
   trunk/src/target/gsm/include/gsmd/usock.h
   trunk/src/target/gsm/include/libgsmd/misc.h
   trunk/src/target/gsm/src/gsmd/usock.c
   trunk/src/target/gsm/src/libgsmd/libgsmd_phone.c
   trunk/src/target/gsm/src/util/shell.c
Log:
gsmd: add vibrator at cmd (Sudharshan S)


Modified: trunk/src/target/gsm/include/gsmd/state.h
===================================================================
--- trunk/src/target/gsm/include/gsmd/state.h   2008-02-26 07:53:29 UTC (rev 
4114)
+++ trunk/src/target/gsm/include/gsmd/state.h   2008-02-26 08:57:39 UTC (rev 
4115)
@@ -13,6 +13,7 @@
                unsigned int network_state_gsm;
                unsigned int network_state_gprs;
        } ciph_ind;
+       unsigned int vibrator;
        unsigned int on;
        unsigned int registered;
         unsigned int ringing;

Modified: trunk/src/target/gsm/include/gsmd/usock.h
===================================================================
--- trunk/src/target/gsm/include/gsmd/usock.h   2008-02-26 07:53:29 UTC (rev 
4114)
+++ trunk/src/target/gsm/include/gsmd/usock.h   2008-02-26 08:57:39 UTC (rev 
4115)
@@ -140,6 +140,8 @@
        GSMD_PHONE_GET_REVISION = 6,
        GSMD_PHONE_GET_SERIAL   = 7,
        GSMD_PHONE_GET_BATTERY  = 8,
+       GSMD_PHONE_VIB_ENABLE   = 9,
+       GSMD_PHONE_VIB_DISABLE  = 10,
 };
 
 enum gsmd_msg_modem {

Modified: trunk/src/target/gsm/include/libgsmd/misc.h
===================================================================
--- trunk/src/target/gsm/include/libgsmd/misc.h 2008-02-26 07:53:29 UTC (rev 
4114)
+++ trunk/src/target/gsm/include/libgsmd/misc.h 2008-02-26 08:57:39 UTC (rev 
4115)
@@ -73,4 +73,8 @@
 extern int lgsm_voicemail_get(struct lgsm_handle *lh);
 /* Get Battery Connection status and charge level */
 extern int lgsm_get_battery(struct lgsm_handle *lh);
+
+/* Enable vibrator */
+extern int lgsm_phone_vibrator(struct lgsm_handle *lh, int enable);
+
 #endif

Modified: trunk/src/target/gsm/src/gsmd/usock.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/usock.c       2008-02-26 07:53:29 UTC (rev 
4114)
+++ trunk/src/target/gsm/src/gsmd/usock.c       2008-02-26 08:57:39 UTC (rev 
4115)
@@ -679,6 +679,32 @@
                cmd -> id, sizeof(gbs), &gbs);
 }
 
+static int phone_vibrator_enable_cb(struct gsmd_atcmd *cmd, void *ctx, char 
*resp)
+{
+       struct gsmd_user *gu = ctx;
+       int ret = cmd->ret;
+
+       switch(ret) {
+       case 0:
+               gsmd_log(GSMD_DEBUG, "Vibrator enabled\n");
+               gu->gsmd->dev_state.vibrator = 1;
+               break;
+       default:
+               gsmd_log(GSMD_DEBUG, "AT+CVIB=1 operation failed\n");
+               break;
+       }
+       
+       return gsmd_ucmd_submit(gu, GSMD_MSG_PHONE, GSMD_PHONE_VIB_ENABLE,
+                               cmd->id, sizeof(ret), &ret);
+}
+
+static int phone_vibrator_disable_cb(struct gsmd_atcmd *cmd, void *ctx, char 
*resp)
+{
+       int ret = cmd->ret;
+       return gsmd_ucmd_submit(ctx, GSMD_MSG_PHONE, GSMD_PHONE_VIB_DISABLE,
+                               cmd->id, sizeof(ret), &ret);
+}
+       
 static int usock_rcv_phone(struct gsmd_user *gu, struct gsmd_msg_hdr *gph, 
                           int len)
 {
@@ -718,6 +744,13 @@
        case GSMD_PHONE_GET_BATTERY:
                cmd = atcmd_fill("AT+CBC", 6+1, &phone_get_battery_cb, gu, 0, 
NULL);
                break;
+       case GSMD_PHONE_VIB_ENABLE:
+               cmd = atcmd_fill("AT+CVIB=1", 9+1, &phone_vibrator_enable_cb, 
gu, 0, NULL);
+               break;
+       case GSMD_PHONE_VIB_DISABLE:
+               cmd = atcmd_fill("AT+CVIB=0", 9+1, &phone_vibrator_disable_cb, 
gu, 0, NULL);
+               gu->gsmd->dev_state.vibrator = 0;
+               break;
        default:
                return -EINVAL;
        }

Modified: trunk/src/target/gsm/src/libgsmd/libgsmd_phone.c
===================================================================
--- trunk/src/target/gsm/src/libgsmd/libgsmd_phone.c    2008-02-26 07:53:29 UTC 
(rev 4114)
+++ trunk/src/target/gsm/src/libgsmd/libgsmd_phone.c    2008-02-26 08:57:39 UTC 
(rev 4115)
@@ -74,3 +74,15 @@
 {
        return lgsm_send_simple(lh, GSMD_MSG_PHONE, GSMD_PHONE_GET_BATTERY);
 }
+
+int lgsm_phone_vibrator(struct lgsm_handle *lh, int enable)
+{
+       int type;
+       if(enable)
+               type = GSMD_PHONE_VIB_ENABLE;
+       else
+               type = GSMD_PHONE_VIB_DISABLE;
+       
+       return lgsm_send_simple(lh, GSMD_MSG_PHONE, type);
+}
+               

Modified: trunk/src/target/gsm/src/util/shell.c
===================================================================
--- trunk/src/target/gsm/src/util/shell.c       2008-02-26 07:53:29 UTC (rev 
4114)
+++ trunk/src/target/gsm/src/util/shell.c       2008-02-26 08:57:39 UTC (rev 
4115)
@@ -428,6 +428,18 @@
        case GSMD_PHONE_GET_BATTERY:
                printf("<BCS>: %d <BCL>: %d \n", bc->bcs, bc->bcl);
                break;          
+       case GSMD_PHONE_VIB_ENABLE:
+               if(*intresult)
+                       printf("Vibrator enable failed: %i\n", *intresult);
+               else
+                       printf("Vibrator enabled\n");
+               break;
+       case GSMD_PHONE_VIB_DISABLE:
+               if(*intresult)
+                       printf("Vibrator disable failed: %i\n", *intresult);
+               else
+                       printf("VIbrator disabled\n");
+               break;
        default:
                return -EINVAL;
        }
@@ -534,7 +546,9 @@
                "\tH\tHangup call\n"
                "\tO\tAntenna Power On\n"
                "\to\tAntenna Power Off\n"
-               "\tM\tModem Power On\n"
+               "\tV\tVibrator Enable (CVIB=1)\n"
+               "\tv\tVibrator Disable (CVIB=0)\n"
+               "\tM\tModem Power On\n"
                "\tm\tModem Power Off\n"
                "\tr\tRegister to network\n"
                "\tR\tRegister to given operator (R=number)\n"
@@ -666,6 +680,12 @@
                        } else if (!strcmp(buf, "o")) {
                                printf("Power-Off\n");
                                lgsm_phone_power(lgsmh, 0);
+                       } else if (!strcmp(buf, "V")) {
+                               printf("Vibrator-Enable\n");
+                               lgsm_phone_vibrator(lgsmh, 1);
+                       } else if (!strcmp(buf, "v")) {
+                               printf("Vibrator-Disable\n");
+                               lgsm_phone_vibrator(lgsmh, 0);
                        } else if (!strcmp(buf, "r")) {
                                printf("Register\n");
                                lgsm_netreg_register(lgsmh, "\0     ");




--- End Message ---
--- Begin Message ---
Author: erin_yueh
Date: 2008-02-26 10:03:03 +0100 (Tue, 26 Feb 2008)
New Revision: 4116

Modified:
   trunk/src/target/gsm/include/gsmd/usock.h
Log:
gsmd: sms data structure (Paulius Zaleckas)


Modified: trunk/src/target/gsm/include/gsmd/usock.h
===================================================================
--- trunk/src/target/gsm/include/gsmd/usock.h   2008-02-26 08:57:39 UTC (rev 
4115)
+++ trunk/src/target/gsm/include/gsmd/usock.h   2008-02-26 09:03:03 UTC (rev 
4116)
@@ -537,7 +537,7 @@
        int is_voicemail;
        struct gsmd_sms_datacodingscheme dcs;
        enum gsmd_sms_tp_mti tp_mti;
-       char data[GSMD_SMS_DATA_MAXLEN+1];      
+       u_int8_t data[GSMD_SMS_DATA_MAXLEN+1];  
 } __attribute__ ((packed));
 
 /* Refer to GSM 03.40 subclause 9.2.2.2 */




--- End Message ---
--- Begin Message ---
Author: werner
Date: 2008-02-26 11:13:31 +0100 (Tue, 26 Feb 2008)
New Revision: 4117

Modified:
   trunk/src/host/devirginator/setup.sh
Log:
setup.sh: use  envedit.pl -s 0x40000  on GTA02



Modified: trunk/src/host/devirginator/setup.sh
===================================================================
--- trunk/src/host/devirginator/setup.sh        2008-02-26 09:03:03 UTC (rev 
4116)
+++ trunk/src/host/devirginator/setup.sh        2008-02-26 10:13:31 UTC (rev 
4117)
@@ -303,6 +303,12 @@
 # --- "devirginate" shell script ----------------------------------------------
 
 
+if [ "$PLATFORM" = gta01 ]; then
+    env_size_opt=
+else
+    env_size_opt=0x40000
+fi
+
 cat <<EOF >devirginate
 #!/bin/sh -e
 # MACHINE-GENERATED. DO NOT EDIT !
@@ -367,7 +373,7 @@
     ./openocdcmd.pl $OPENOCD_HOST $OPENOCD_PORT \
       "reset halt" wait_halt resume exit
     sleep 5
-    ./envedit.pl -i tmp/env.old -o tmp/env.new \
+    ./envedit.pl $env_size_opt -i tmp/env.old -o tmp/env.new \
        -D$U_PLATFORM -D$U_PLATFORM$U_BOARD -f tmp/environment
     $DFU_UTIL $USB_ID -a u-boot_env -D tmp/env.new
     ./openocdcmd.pl $OPENOCD_HOST $OPENOCD_PORT "reset run" exit




--- End Message ---
_______________________________________________
commitlog mailing list
commitlog@lists.openmoko.org
http://lists.openmoko.org/mailman/listinfo/commitlog

Reply via email to