Send commitlog mailing list submissions to
        [email protected]

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. r3675 - in
      trunk/src/target/OM-2007.2/applications/openmoko-messages2: . src
      ([EMAIL PROTECTED])
   2. r3676 - branches/src/target/kernel/2.6.24.x/patches
      ([EMAIL PROTECTED])
   3. r3677 - in
      trunk/src/target/OM-2007.2/applications/openmoko-messages2: . src
      ([EMAIL PROTECTED])
--- Begin Message ---
Author: chris
Date: 2007-12-18 12:18:15 +0100 (Tue, 18 Dec 2007)
New Revision: 3675

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.c
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.h
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms.h
Log:
        * src/sms.h:
        * src/sms-contacts.c: (update_categories), (ref_category),
        (categories_to_list), (contacts_added_cb), (contacts_changed_cb),
        (contacts_removed_cb), (contacts_visible_func), (malloc_list_free),
        (sms_contacts_page_new):
        Add category filtering to contacts pane

        * src/sms-utils.c: (sms_clear_combo_box_text):
        * src/sms-utils.h: 
        Add function to clear a text GtkComboBox


Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog        
2007-12-18 10:50:01 UTC (rev 3674)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog        
2007-12-18 11:18:15 UTC (rev 3675)
@@ -1,3 +1,16 @@
+2007-12-18  Chris Lord  <[EMAIL PROTECTED]>
+
+       * src/sms.h:
+       * src/sms-contacts.c: (update_categories), (ref_category),
+       (categories_to_list), (contacts_added_cb), (contacts_changed_cb),
+       (contacts_removed_cb), (contacts_visible_func), (malloc_list_free),
+       (sms_contacts_page_new):
+       Add category filtering to contacts pane
+
+       * src/sms-utils.c: (sms_clear_combo_box_text):
+       * src/sms-utils.h:
+       Add function to clear a text GtkComboBox
+
 2007-12-17  Chris Lord  <[EMAIL PROTECTED]>
 
        * configure.ac:

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c
===================================================================
--- 
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c   
    2007-12-18 10:50:01 UTC (rev 3674)
+++ 
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c   
    2007-12-18 11:18:15 UTC (rev 3675)
@@ -93,7 +93,81 @@
        g_list_free (numbers);
 }
 
+static gboolean
+update_categories (SmsData *data)
+{
+       GList *categories, *c;
+       GtkComboBox *combo;
+       gchar *old_cat;
+       gint i;
+       
+       gboolean cat_set = FALSE;
+
+       data->contact_category_idle = 0;
+       
+       combo = moko_search_bar_get_combo_box (
+               MOKO_SEARCH_BAR (data->contacts_search));
+       old_cat = gtk_combo_box_get_active_text (combo);
+       sms_clear_combo_box_text (combo);
+       
+       gtk_combo_box_append_text (combo, "All");
+       
+       categories = g_hash_table_get_keys (data->group_refs);
+       categories = g_list_sort (categories, (GCompareFunc)strcmp);
+       
+       for (c = categories, i = 1; c; c = c->next, i++) {
+               gtk_combo_box_append_text (combo, (const gchar *)c->data);
+               if ((!cat_set) && (old_cat) &&
+                   (strcmp (old_cat, (const gchar *)c->data) == 0)) {
+                       cat_set = TRUE;
+                       gtk_combo_box_set_active (combo, i);
+               }
+       }
+       if (!cat_set) gtk_combo_box_set_active (combo, 0);
+       
+       g_list_free (categories);
+       g_free (old_cat);
+       
+       return FALSE;
+}
+
 static void
+ref_category (SmsData *data, const gchar *category, gint count)
+{
+       gint ref_count = GPOINTER_TO_INT (g_hash_table_lookup (
+               data->group_refs, category));
+       ref_count += count;
+       if (ref_count == 0) g_hash_table_remove (data->group_refs, category);
+       else g_hash_table_replace (data->group_refs,
+               g_strdup (category), GINT_TO_POINTER (ref_count));
+}
+
+static GList *
+categories_to_list (SmsData *data, const gchar *category_string)
+{
+       gint i, off;
+       GList *categories = NULL, *c;
+       
+       if (!category_string) return NULL;
+       
+       for (i = 0, off = 0; category_string[i] != '\0'; i++) {
+               if (category_string[i] == ',') {
+                       categories = g_list_prepend (categories, g_strndup (
+                               category_string + off, i - off));
+                       off = i + 1;
+               }
+       }
+       categories = g_list_prepend (categories, g_strndup (
+               category_string + off, i - off));
+       
+       for (c = categories; c; c = c->next) {
+               ref_category (data, (const gchar *)c->data, 1);
+       }
+       
+       return categories;
+}
+
+static void
 contacts_store (SmsData *data, GtkTreeIter *iter, EContact *contact)
 {
        gint i;
@@ -122,6 +196,8 @@
        for (; contacts; contacts = contacts->next) {
                GtkTreeIter *iter;
                EContact *contact = (EContact *)contacts->data;
+               const gchar *category_string;
+               GList *categories;
                
                if (!contact) continue;
                
@@ -131,18 +207,27 @@
                contacts_store (data, iter, contact);
                g_hash_table_insert (data->contacts,
                        e_contact_get (contact, E_CONTACT_UID), iter);
+
+               category_string = e_contact_get_const (
+                       contact, E_CONTACT_CATEGORIES);
+               categories = categories_to_list (data, category_string);
+               g_hash_table_insert (data->contact_groups,
+                       e_contact_get (contact, E_CONTACT_UID), categories);
        }
 
        if (!data->note_count_idle) data->note_count_idle =
                g_idle_add ((GSourceFunc)sms_contacts_note_count_update, data);
+       if (!data->contact_category_idle) data->contact_category_idle =
+               g_idle_add ((GSourceFunc)update_categories, data);
 }
 
 static void
 contacts_changed_cb (EBookView *ebookview, GList *contacts, SmsData *data)
 {
        for (; contacts; contacts = contacts->next) {
+               GList *categories, *c;
                GtkTreeIter *iter;
-               const gchar *uid;
+               const gchar *uid, *category_string;
                
                EContact *contact = (EContact *)contacts->data;
                
@@ -154,16 +239,30 @@
                        clear_numbers (data, uid);
                        contacts_store (data, iter, contact);
                }
+               
+               /* Unref possibly old groups and ref possibly new ones */
+               categories = g_hash_table_lookup (data->contact_groups, uid);
+               if (categories)
+                       for (c = categories; c; c = c->next)
+                               ref_category (data, (const gchar *)c->data, -1);
+               category_string = e_contact_get_const (
+                       contact, E_CONTACT_CATEGORIES);
+               categories = categories_to_list (data, category_string);
+               g_hash_table_insert (data->contact_groups,
+                       g_strdup (uid), categories);
        }
 
        if (!data->note_count_idle) data->note_count_idle =
                g_idle_add ((GSourceFunc)sms_contacts_note_count_update, data);
+       if (!data->contact_category_idle) data->contact_category_idle =
+               g_idle_add ((GSourceFunc)update_categories, data);
 }
 
 static void
 contacts_removed_cb (EBookView *ebookview, GList *uids, SmsData *data)
 {
        for (; uids; uids = uids->next) {
+               GList *categories;
                GtkTreeIter *iter = g_hash_table_lookup (
                        data->contacts, uids->data);
 
@@ -173,10 +272,23 @@
                gtk_list_store_remove ((GtkListStore *)
                        data->contacts_store, iter);
                g_hash_table_remove (data->contacts, uids->data);
+               
+               categories = g_hash_table_lookup (
+                       data->contact_groups, uids->data);
+               if (categories) {
+                       GList *c;
+                       
+                       /* Unref groups */
+                       for (c = categories; c; c = c->next)
+                               ref_category (data, (const gchar *)c->data, -1);
+                       g_hash_table_remove (data->contact_groups, uids->data);
+               }
        }
 
        if (!data->note_count_idle) data->note_count_idle =
                g_idle_add ((GSourceFunc)sms_contacts_note_count_update, data);
+       if (!data->contact_category_idle) data->contact_category_idle =
+               g_idle_add ((GSourceFunc)update_categories, data);
 }
 
 static void
@@ -348,11 +460,67 @@
                
                return result;
        } else {
+               gint i, len, off;
+               GtkComboBox *combo;
+               gchar *category, *uid;
+               const gchar *category_string;
+               
+               EContact *contact = NULL;
+               
                /* Filter on selected category */
-               return TRUE;
+               combo = moko_search_bar_get_combo_box (MOKO_SEARCH_BAR (
+                       data->contacts_search));
+               if (gtk_combo_box_get_active (combo) <= 0) return TRUE;
+               
+               category = gtk_combo_box_get_active_text (combo);
+               if (!category) return TRUE;
+               
+               gtk_tree_model_get (model, iter, COL_UID, &uid, -1);
+               if (!uid) return FALSE;
+               e_book_get_contact (data->ebook, uid, &contact, NULL);
+               g_free (uid);
+               if (!contact) {
+                       g_free (category);
+                       return FALSE;
+               }
+               
+               category_string = e_contact_get_const (
+                       contact, E_CONTACT_CATEGORIES);
+               if (!category_string) {
+                       g_free (category);
+                       return FALSE;
+               }
+               
+               /* FIXME: UTF-8? */
+               len = strlen (category);
+               for (i = 1, off = 0; category_string[i-1] != '\0'; i++) {
+                       if ((category_string[i] == ',') ||
+                           (category_string[i] == '\0')) {
+                               if (strncmp (category_string + off,
+                                   category, i - off) == 0) {
+                                       g_object_unref (contact);
+                                       g_free (category);
+                                       return TRUE;
+                               }
+                               off = i + 1;
+                       }
+               }
+
+               g_object_unref (contact);
+               g_free (category);
+               
+               return FALSE;
        }
 }
 
+static void
+malloc_list_free (GList *list) {
+       while (list) {
+               g_free (list->data);
+               list = g_list_delete_link (list, list);
+       }
+}
+
 GtkWidget *
 sms_contacts_page_new (SmsData *data)
 {
@@ -365,6 +533,12 @@
 
        GError *error = NULL;
        
+       data->contact_groups = g_hash_table_new_full (g_str_hash, g_str_equal,
+               (GDestroyNotify)g_free, (GDestroyNotify)malloc_list_free);
+       data->group_refs = g_hash_table_new_full (g_str_hash, g_str_equal,
+               (GDestroyNotify)g_free, NULL);
+       data->contact_category_idle = 0;
+       
        /* Create query for all contacts with telephone numbers */
        /* FIXME: This query doesn't seem to work? */
        /*for (i = E_CONTACT_FIRST_PHONE_ID; i <= E_CONTACT_LAST_PHONE_ID; i++) 
{

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.c  
2007-12-18 10:50:01 UTC (rev 3674)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.c  
2007-12-18 11:18:15 UTC (rev 3675)
@@ -23,6 +23,16 @@
 #  include <config.h>
 #endif
 
+void
+sms_clear_combo_box_text (GtkComboBox *combo)
+{
+       GtkTreeIter iter;
+       GtkTreeModel *model = gtk_combo_box_get_model (combo);
+
+       while (gtk_tree_model_get_iter_first (model, &iter))
+               gtk_combo_box_remove_text (combo, 0);
+}
+
 EContact *
 sms_get_selected_contact (SmsData *data)
 {

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.h  
2007-12-18 10:50:01 UTC (rev 3674)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-utils.h  
2007-12-18 11:18:15 UTC (rev 3675)
@@ -22,6 +22,7 @@
 
 #include "sms.h"
 
+void sms_clear_combo_box_text (GtkComboBox *combo);
 EContact *sms_get_selected_contact (SmsData *data);
 GdkPixbuf *sms_contact_load_photo (EContact *contact);
 gboolean sms_contacts_note_count_update (SmsData *data);

Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms.h        
2007-12-18 10:50:01 UTC (rev 3674)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms.h        
2007-12-18 11:18:15 UTC (rev 3675)
@@ -47,6 +47,11 @@
        GHashTable *contacts;
        GHashTable *numbers;
        
+       /* For keeping track of groups contacts are in */
+       GHashTable *contact_groups;
+       GHashTable *group_refs;
+       guint contact_category_idle;
+       
        GtkWidget *window;
        GtkWidget *notebook;
        GtkToolItem *new_button;




--- End Message ---
--- Begin Message ---
Author: laforge
Date: 2007-12-18 12:30:42 +0100 (Tue, 18 Dec 2007)
New Revision: 3676

Removed:
   branches/src/target/kernel/2.6.24.x/patches/s3c_mci_platform.patch
   branches/src/target/kernel/2.6.24.x/patches/s3cmci-dma-free.patch
   branches/src/target/kernel/2.6.24.x/patches/s3cmci-stop-fix.patch
   branches/src/target/kernel/2.6.24.x/patches/s3cmci-unfinished-write-fix.patch
   branches/src/target/kernel/2.6.24.x/patches/s3cmci_dbg.patch
Modified:
   branches/src/target/kernel/2.6.24.x/patches/s3c_mci.patch
   branches/src/target/kernel/2.6.24.x/patches/series
Log:
merge various s3c_mci fixes into the main patch


Modified: branches/src/target/kernel/2.6.24.x/patches/s3c_mci.patch
===================================================================
--- branches/src/target/kernel/2.6.24.x/patches/s3c_mci.patch   2007-12-18 
11:18:15 UTC (rev 3675)
+++ branches/src/target/kernel/2.6.24.x/patches/s3c_mci.patch   2007-12-18 
11:30:42 UTC (rev 3676)
@@ -149,11 +149,12 @@
 ===================================================================
 --- /dev/null
 +++ linux-2.6/drivers/mmc/host/s3cmci.c
-@@ -0,0 +1,1341 @@
+@@ -0,0 +1,1384 @@
 +/*
 + *  linux/drivers/mmc/s3cmci.h - Samsung S3C MCI driver
 + *
 + *  Copyright (C) 2004-2006 maintech GmbH, Thomas Kleffel <[EMAIL PROTECTED]>
++ *  Copyright (C) 2007 OpenMoko, Inc., Harald Welte <[EMAIL PROTECTED]>
 + *
 + * This program is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License version 2 as
@@ -174,6 +175,7 @@
 +#include <asm/io.h>
 +#include <asm/arch/regs-sdi.h>
 +#include <asm/arch/regs-gpio.h>
++#include <asm/arch/mci.h>
 +
 +#include "mmc_debug.h"
 +#include "s3cmci.h"
@@ -469,6 +471,7 @@
 +{
 +      struct s3cmci_host *host = (struct s3cmci_host *) data;
 +
++      disable_irq(host->irq);
 +
 +      if (host->pio_active == XFER_WRITE)
 +              do_pio_write(host);
@@ -487,9 +490,9 @@
 +                      host->mrq->data->error = -EIO;
 +              }
 +
-+              disable_irq(host->irq);
 +              finalize_request(host);
-+      }
++      } else
++              enable_irq(host->irq);
 +}
 +
 +/*
@@ -597,9 +600,14 @@
 +
 +      if (mci_csta & S3C2410_SDICMDSTAT_CRCFAIL) {
 +              if (cmd->flags & MMC_RSP_CRC) {
-+                      cmd->error = -EILSEQ;
-+                      host->status = "error: bad command crc";
-+                      goto fail_transfer;
++                      if (host->mrq->cmd->flags & MMC_RSP_136) {
++                              dbg(host, dbg_irq, "fixup for chip bug: "
++                                  "ignore CRC fail with long rsp\n");
++                      } else {
++                              cmd->error = -EILSEQ;
++                              host->status = "error: bad command crc";
++                              goto fail_transfer;
++                      }
 +              }
 +
 +              mci_cclear |= S3C2410_SDICMDSTAT_CRCFAIL;
@@ -812,7 +820,7 @@
 +#endif
 +      //Cleanup controller
 +      writel(0, host->base + S3C2410_SDICMDARG);
-+      writel(0, host->base + S3C2410_SDIDCON);
++      writel(S3C2410_SDIDCON_STOP, host->base + S3C2410_SDIDCON);
 +      writel(0, host->base + S3C2410_SDICMDCON);
 +      writel(0, host->base + host->sdiimsk);
 +
@@ -939,7 +947,7 @@
 +              dbg(host, dbg_err,
 +                      "mci_setup_data() transfer stillin progress.\n");
 +
-+              writel(0, host->base + S3C2410_SDIDCON);
++              writel(S3C2410_SDIDCON_STOP, host->base + S3C2410_SDIDCON);
 +              s3cmci_reset(host);
 +
 +              if (0 == (stoptries--)) {
@@ -1158,6 +1166,9 @@
 +                      s3c2410_gpio_cfgpin(S3C2410_GPE9, S3C2410_GPE9_SDDAT2);
 +                      s3c2410_gpio_cfgpin(S3C2410_GPE10, 
S3C2410_GPE10_SDDAT3);
 +
++                      if (host->pdata->set_power)
++                              host->pdata->set_power(ios->power_mode, 
ios->vdd);
++
 +                      if (!host->is2440)
 +                              mci_con|=S3C2410_SDICON_FIFORESET;
 +
@@ -1168,6 +1179,9 @@
 +                      s3c2410_gpio_setpin(S3C2410_GPE5, 0);
 +                      s3c2410_gpio_cfgpin(S3C2410_GPE5, S3C2410_GPE5_OUTP);
 +
++                      if (host->pdata->set_power)
++                              host->pdata->set_power(ios->power_mode, 
ios->vdd);
++
 +                      if (host->is2440)
 +                              mci_con|=S3C2440_SDICON_SDRESET;
 +
@@ -1221,11 +1235,28 @@
 +      writel(con, host->base + S3C2410_SDICON);
 +}
 +
++static int s3cmci_get_ro(struct mmc_host *mmc)
++{
++      struct s3cmci_host *host = mmc_priv(mmc);
++
++      if (host->pdata->gpio_wprotect == 0)
++              return 0;
++
++      return s3c2410_gpio_getpin(host->pdata->gpio_wprotect);
++}
++
 +static struct mmc_host_ops s3cmci_ops = {
 +      .request        = s3cmci_request,
 +      .set_ios        = s3cmci_set_ios,
++      .get_ro         = s3cmci_get_ro,
 +};
 +
++static struct s3c24xx_mci_pdata s3cmci_def_pdata = {
++      .gpio_detect    = 0,
++      .set_power      = NULL,
++      .ocr_avail      = MMC_VDD_32_33,
++};
++
 +static int s3cmci_probe(struct platform_device *pdev, int is2440)
 +{
 +      struct mmc_host         *mmc;
@@ -1243,6 +1274,12 @@
 +      host->mmc       = mmc;
 +      host->pdev      = pdev;
 +
++      host->pdata = pdev->dev.platform_data;
++      if (!host->pdata) {
++              pdev->dev.platform_data = &s3cmci_def_pdata;
++              host->pdata = &s3cmci_def_pdata;
++      }
++
 +      spin_lock_init(&host->complete_lock);
 +      tasklet_init(&host->pio_tasklet, pio_tasklet, (unsigned long) host);
 +      if (is2440) {
@@ -1261,7 +1298,8 @@
 +      host->pio_active        = XFER_NONE;
 +
 +      host->dma               = S3CMCI_DMA;
-+      host->irq_cd            = IRQ_EINT2;
++      host->irq_cd = s3c2410_gpio_getirq(host->pdata->gpio_detect);
++      s3c2410_gpio_cfgpin(host->pdata->gpio_detect, S3C2410_GPIO_IRQ);
 +
 +      host->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 +      if (!host->mem) {
@@ -1303,7 +1341,7 @@
 +
 +      disable_irq(host->irq);
 +
-+      s3c2410_gpio_cfgpin(S3C2410_GPF2, S3C2410_GPF2_EINT2);
++      s3c2410_gpio_cfgpin(host->pdata->gpio_detect, S3C2410_GPIO_IRQ);
 +      set_irq_type(host->irq_cd, IRQT_BOTHEDGE);
 +
 +      if (request_irq(host->irq_cd, s3cmci_irq_cd, 0, DRIVER_NAME, host)) {
@@ -1314,6 +1352,10 @@
 +              goto probe_free_irq;
 +      }
 +
++      if (host->pdata->gpio_wprotect)
++              s3c2410_gpio_cfgpin(host->pdata->gpio_wprotect,
++                                  S3C2410_GPIO_INPUT);
++
 +      if (s3c2410_dma_request(S3CMCI_DMA, &s3cmci_dma_client, NULL)) {
 +              dev_err(&pdev->dev, "unable to get DMA channel.\n");
 +              ret = -EBUSY;
@@ -1336,7 +1378,7 @@
 +      host->clk_rate = clk_get_rate(host->clk);
 +
 +      mmc->ops        = &s3cmci_ops;
-+      mmc->ocr_avail  = MMC_VDD_32_33;
++      mmc->ocr_avail  = host->pdata->ocr_avail;
 +      mmc->caps       = MMC_CAP_4_BIT_DATA;
 +      mmc->f_min      = host->clk_rate / (host->clk_div * 256);
 +      mmc->f_max      = host->clk_rate / host->clk_div;
@@ -1395,6 +1437,7 @@
 +      mmc_remove_host(mmc);
 +      clk_disable(host->clk);
 +      clk_put(host->clk);
++      s3c2410_dma_free(S3CMCI_DMA, &s3cmci_dma_client);
 +      free_irq(host->irq_cd, host);
 +      free_irq(host->irq, host);
 +      iounmap(host->base);
@@ -1495,7 +1538,7 @@
 ===================================================================
 --- /dev/null
 +++ linux-2.6/drivers/mmc/host/s3cmci.h
-@@ -0,0 +1,71 @@
+@@ -0,0 +1,72 @@
 +/*
 + *  linux/drivers/mmc/s3cmci.h - Samsung S3C MCI driver
 + *
@@ -1520,6 +1563,7 @@
 +
 +struct s3cmci_host {
 +      struct platform_device  *pdev;
++      struct s3c24xx_mci_pdata *pdata;
 +      struct mmc_host         *mmc;
 +      struct resource         *mem;
 +      struct clk              *clk;

Deleted: branches/src/target/kernel/2.6.24.x/patches/s3c_mci_platform.patch
===================================================================
--- branches/src/target/kernel/2.6.24.x/patches/s3c_mci_platform.patch  
2007-12-18 11:18:15 UTC (rev 3675)
+++ branches/src/target/kernel/2.6.24.x/patches/s3c_mci_platform.patch  
2007-12-18 11:30:42 UTC (rev 3676)
@@ -1,143 +0,0 @@
-This patch adds platform data support to the s3mci driver.  This allows
-flexible board-specific configuration of set_power, card detect and read only
-pins.
-Index: linux-2.6.22.1/drivers/mmc/host/s3cmci.c
-===================================================================
---- linux-2.6.22.1.orig/drivers/mmc/host/s3cmci.c      2007-07-19 
00:27:24.937824075 +0200
-+++ linux-2.6.22.1/drivers/mmc/host/s3cmci.c   2007-07-19 00:27:45.823014255 
+0200
-@@ -22,6 +22,7 @@
- #include <asm/io.h>
- #include <asm/arch/regs-sdi.h>
- #include <asm/arch/regs-gpio.h>
-+#include <asm/arch/mci.h>
- 
- #include "mmc_debug.h"
- #include "s3cmci.h"
-@@ -1012,6 +1013,9 @@
-                       s3c2410_gpio_cfgpin(S3C2410_GPE9, S3C2410_GPE9_SDDAT2);
-                       s3c2410_gpio_cfgpin(S3C2410_GPE10, 
S3C2410_GPE10_SDDAT3);
- 
-+                      if (host->pdata->set_power)
-+                              host->pdata->set_power(ios->power_mode, 
ios->vdd);
-+
-                       if (!host->is2440)
-                               mci_con|=S3C2410_SDICON_FIFORESET;
- 
-@@ -1022,6 +1026,9 @@
-                       s3c2410_gpio_setpin(S3C2410_GPE5, 0);
-                       s3c2410_gpio_cfgpin(S3C2410_GPE5, S3C2410_GPE5_OUTP);
- 
-+                      if (host->pdata->set_power)
-+                              host->pdata->set_power(ios->power_mode, 
ios->vdd);
-+
-                       if (host->is2440)
-                               mci_con|=S3C2440_SDICON_SDRESET;
- 
-@@ -1075,9 +1082,26 @@
-       writel(con, host->base + S3C2410_SDICON);
- }
- 
-+static int s3cmci_get_ro(struct mmc_host *mmc)
-+{
-+      struct s3cmci_host *host = mmc_priv(mmc);
-+
-+      if (host->pdata->gpio_wprotect == 0)
-+              return 0;
-+
-+      return s3c2410_gpio_getpin(host->pdata->gpio_wprotect);
-+}
-+
- static struct mmc_host_ops s3cmci_ops = {
-       .request        = s3cmci_request,
-       .set_ios        = s3cmci_set_ios,
-+      .get_ro         = s3cmci_get_ro,
-+};
-+
-+static struct s3c24xx_mci_pdata s3cmci_def_pdata = {
-+      .gpio_detect    = 0,
-+      .set_power      = NULL,
-+      .ocr_avail      = MMC_VDD_32_33,
- };
- 
- static int s3cmci_probe(struct platform_device *pdev, int is2440)
-@@ -1097,6 +1121,12 @@
-       host->mmc       = mmc;
-       host->pdev      = pdev;
- 
-+      host->pdata = pdev->dev.platform_data;
-+      if (!host->pdata) {
-+              pdev->dev.platform_data = &s3cmci_def_pdata;
-+              host->pdata = &s3cmci_def_pdata;
-+      }
-+
-       spin_lock_init(&host->complete_lock);
-       tasklet_init(&host->pio_tasklet, pio_tasklet, (unsigned long) host);
-       if (is2440) {
-@@ -1115,7 +1145,8 @@
-       host->pio_active        = XFER_NONE;
- 
-       host->dma               = S3CMCI_DMA;
--      host->irq_cd            = IRQ_EINT2;
-+      host->irq_cd = s3c2410_gpio_getirq(host->pdata->gpio_detect);
-+      s3c2410_gpio_cfgpin(host->pdata->gpio_detect, S3C2410_GPIO_IRQ);
- 
-       host->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!host->mem) {
-@@ -1157,7 +1188,7 @@
- 
-       disable_irq(host->irq);
- 
--      s3c2410_gpio_cfgpin(S3C2410_GPF2, S3C2410_GPF2_EINT2);
-+      s3c2410_gpio_cfgpin(host->pdata->gpio_detect, S3C2410_GPIO_IRQ);
-       set_irq_type(host->irq_cd, IRQT_BOTHEDGE);
- 
-       if (request_irq(host->irq_cd, s3cmci_irq_cd, 0, DRIVER_NAME, host)) {
-@@ -1168,6 +1199,10 @@
-               goto probe_free_irq;
-       }
- 
-+      if (host->pdata->gpio_wprotect)
-+              s3c2410_gpio_cfgpin(host->pdata->gpio_wprotect,
-+                                  S3C2410_GPIO_INPUT);
-+
-       if (s3c2410_dma_request(S3CMCI_DMA, &s3cmci_dma_client, NULL)) {
-               dev_err(&pdev->dev, "unable to get DMA channel.\n");
-               ret = -EBUSY;
-@@ -1190,7 +1225,7 @@
-       host->clk_rate = clk_get_rate(host->clk);
- 
-       mmc->ops        = &s3cmci_ops;
--      mmc->ocr_avail  = MMC_VDD_32_33;
-+      mmc->ocr_avail  = host->pdata->ocr_avail;
-       mmc->caps       = MMC_CAP_4_BIT_DATA;
-       mmc->f_min      = host->clk_rate / (host->clk_div * 256);
-       mmc->f_max      = host->clk_rate / host->clk_div;
-Index: linux-2.6.22.1/drivers/mmc/host/s3cmci.h
-===================================================================
---- linux-2.6.22.1.orig/drivers/mmc/host/s3cmci.h      2007-07-19 
00:25:34.647538991 +0200
-+++ linux-2.6.22.1/drivers/mmc/host/s3cmci.h   2007-07-19 00:27:45.831014710 
+0200
-@@ -22,6 +22,7 @@
- 
- struct s3cmci_host {
-       struct platform_device  *pdev;
-+      struct s3c24xx_mci_pdata *pdata;
-       struct mmc_host         *mmc;
-       struct resource         *mem;
-       struct clk              *clk;
-Index: linux-2.6.22.1/include/asm-arm/arch-s3c2410/mci.h
-===================================================================
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22.1/include/asm-arm/arch-s3c2410/mci.h  2007-07-19 
00:27:45.859016308 +0200
-@@ -0,0 +1,12 @@
-+#ifndef _ARCH_MCI_H
-+#define _ARCH_MCI_H
-+
-+struct s3c24xx_mci_pdata {
-+      unsigned int    gpio_detect;
-+      unsigned int    gpio_wprotect;
-+      unsigned long   ocr_avail;
-+      void            (*set_power)(unsigned char power_mode,
-+                                   unsigned short vdd);
-+};
-+
-+#endif /* _ARCH_NCI_H */

Deleted: branches/src/target/kernel/2.6.24.x/patches/s3cmci-dma-free.patch
===================================================================
--- branches/src/target/kernel/2.6.24.x/patches/s3cmci-dma-free.patch   
2007-12-18 11:18:15 UTC (rev 3675)
+++ branches/src/target/kernel/2.6.24.x/patches/s3cmci-dma-free.patch   
2007-12-18 11:30:42 UTC (rev 3676)
@@ -1,10 +0,0 @@
---- linux-2.6.22.1.orig/drivers/mmc/host/s3cmci.c
-+++ linux-2.6.22.1/drivers/mmc/host/s3cmci.c
-@@ -1248,6 +1248,7 @@
-       mmc_remove_host(mmc);
-       clk_disable(host->clk);
-       clk_put(host->clk);
-+      s3c2410_dma_free(S3CMCI_DMA, &s3cmci_dma_client);
-       free_irq(host->irq_cd, host);
-       free_irq(host->irq, host);
-       iounmap(host->base);

Deleted: branches/src/target/kernel/2.6.24.x/patches/s3cmci-stop-fix.patch
===================================================================
--- branches/src/target/kernel/2.6.24.x/patches/s3cmci-stop-fix.patch   
2007-12-18 11:18:15 UTC (rev 3675)
+++ branches/src/target/kernel/2.6.24.x/patches/s3cmci-stop-fix.patch   
2007-12-18 11:30:42 UTC (rev 3676)
@@ -1,25 +0,0 @@
-This patch from Thomas Kleffel (the author of s3cmci) should fix our
-SD/MMC instability problems.
-
-Signed-off-by: Harald Welte <[EMAIL PROTECTED]>
-
---- linux-2.6.22.1.orig/drivers/mmc/host/s3cmci.c
-+++ linux-2.6.22.1/drivers/mmc/host/s3cmci.c
-@@ -665,7 +665,7 @@
- #endif
-       //Cleanup controller
-       writel(0, host->base + S3C2410_SDICMDARG);
--      writel(0, host->base + S3C2410_SDIDCON);
-+      writel(S3C2410_SDIDCON_STOP, host->base + S3C2410_SDIDCON);
-       writel(0, host->base + S3C2410_SDICMDCON);
-       writel(0, host->base + host->sdiimsk);
- 
-@@ -792,7 +792,7 @@
-               dbg(host, dbg_err,
-                       "mci_setup_data() transfer stillin progress.\n");
- 
--              writel(0, host->base + S3C2410_SDIDCON);
-+              writel(S3C2410_SDIDCON_STOP, host->base + S3C2410_SDIDCON);
-               s3cmci_reset(host);
- 
-               if (0 == (stoptries--)) {

Deleted: 
branches/src/target/kernel/2.6.24.x/patches/s3cmci-unfinished-write-fix.patch
===================================================================
--- 
branches/src/target/kernel/2.6.24.x/patches/s3cmci-unfinished-write-fix.patch   
    2007-12-18 11:18:15 UTC (rev 3675)
+++ 
branches/src/target/kernel/2.6.24.x/patches/s3cmci-unfinished-write-fix.patch   
    2007-12-18 11:30:42 UTC (rev 3676)
@@ -1,24 +0,0 @@
-Index: linux-2.6.22.1/drivers/mmc/host/s3cmci.c
-===================================================================
---- linux-2.6.22.1.orig/drivers/mmc/host/s3cmci.c
-+++ linux-2.6.22.1/drivers/mmc/host/s3cmci.c
-@@ -318,6 +318,7 @@
- {
-       struct s3cmci_host *host = (struct s3cmci_host *) data;
- 
-+      disable_irq(host->irq);
- 
-       if (host->pio_active == XFER_WRITE)
-               do_pio_write(host);
-@@ -336,9 +337,9 @@
-                       host->mrq->data->error = MMC_ERR_DMA;
-               }
- 
--              disable_irq(host->irq);
-               finalize_request(host);
--      }
-+      } else
-+              enable_irq(host->irq);
- }
- 
- /*

Deleted: branches/src/target/kernel/2.6.24.x/patches/s3cmci_dbg.patch
===================================================================
--- branches/src/target/kernel/2.6.24.x/patches/s3cmci_dbg.patch        
2007-12-18 11:18:15 UTC (rev 3675)
+++ branches/src/target/kernel/2.6.24.x/patches/s3cmci_dbg.patch        
2007-12-18 11:30:42 UTC (rev 3676)
@@ -1,26 +0,0 @@
-This patch is a workaround of some S3C2410 MMC chip bug
-
-Index: linux-2.6/drivers/mmc/host/s3cmci.c
-===================================================================
---- linux-2.6.orig/drivers/mmc/host/s3cmci.c
-+++ linux-2.6/drivers/mmc/host/s3cmci.c
-@@ -445,9 +445,16 @@
- 
-       if (mci_csta & S3C2410_SDICMDSTAT_CRCFAIL) {
-               if (cmd->flags & MMC_RSP_CRC) {
--                      cmd->error = -EILSEQ;
--                      host->status = "error: bad command crc";
--                      goto fail_transfer;
-+                      if (host->mrq->cmd->flags & MMC_RSP_136) {
-+                              dbg(host, dbg_irq,
-+                                  "fixup: ignore CRC fail with long rsp\n");
-+                      } else {
-+#if 0
-+                              cmd->error = -EILSEQ;
-+                              host->status = "error: bad command crc";
-+                              goto fail_transfer;
-+#endif
-+                      }
-               }
- 
-               mci_cclear |= S3C2410_SDICMDSTAT_CRCFAIL;

Modified: branches/src/target/kernel/2.6.24.x/patches/series
===================================================================
--- branches/src/target/kernel/2.6.24.x/patches/series  2007-12-18 11:18:15 UTC 
(rev 3675)
+++ branches/src/target/kernel/2.6.24.x/patches/series  2007-12-18 11:30:42 UTC 
(rev 3676)
@@ -28,11 +28,6 @@
 
 # SD/MMC for S3C24xx
 s3c_mci.patch
-s3cmci_dbg.patch
-s3cmci-dma-free.patch
-s3cmci-stop-fix.patch
-s3cmci-unfinished-write-fix.patch
-s3c_mci_platform.patch
 s3c_mci-gta01.patch
 qt2410-s3c_mci-pdata.patch
 




--- End Message ---
--- Begin Message ---
Author: chris
Date: 2007-12-18 12:57:37 +0100 (Tue, 18 Dec 2007)
New Revision: 3677

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.c
Log:
        * src/sms-notes.c: (notes_visible_func), (sms_notes_page_new):
        Add all/sent/received filter to notes page


Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog        
2007-12-18 11:30:42 UTC (rev 3676)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog        
2007-12-18 11:57:37 UTC (rev 3677)
@@ -1,5 +1,10 @@
 2007-12-18  Chris Lord  <[EMAIL PROTECTED]>
 
+       * src/sms-notes.c: (notes_visible_func), (sms_notes_page_new):
+       Add all/sent/received filter to notes page
+
+2007-12-18  Chris Lord  <[EMAIL PROTECTED]>
+
        * src/sms.h:
        * src/sms-contacts.c: (update_categories), (ref_category),
        (categories_to_list), (contacts_added_cb), (contacts_changed_cb),

Modified: 
trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.c  
2007-12-18 11:30:42 UTC (rev 3676)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.c  
2007-12-18 11:57:37 UTC (rev 3677)
@@ -34,6 +34,12 @@
 static gboolean hidden = TRUE;
 static gboolean open = FALSE;
 
+enum {
+       ALL_NOTES,
+       SENT_NOTES,
+       RECV_NOTES,
+};
+
 static void
 note_changed_cb (JanaStoreView *store_view, GList *components, SmsData *data)
 {
@@ -591,8 +597,28 @@
                
                return result;
        } else {
+               gchar *author_uid;
+               gboolean result;
+               
                /* Filter on selected category */
-               return TRUE;
+               gint type = gtk_combo_box_get_active (
+                       moko_search_bar_get_combo_box (MOKO_SEARCH_BAR (
+                               data->notes_search))); 
+               
+               if (type <= ALL_NOTES) return TRUE;
+               
+               gtk_tree_model_get (model, iter,
+                       JANA_GTK_NOTE_STORE_COL_UID, &author_uid, -1);
+               if (!author_uid) return FALSE;
+               
+               if (strcmp (author_uid, data->author_uid) == 0)
+                       result = (type == SENT_NOTES) ? TRUE : FALSE;
+               else
+                       result = (type == SENT_NOTES) ? FALSE : TRUE;
+               
+               g_free (author_uid);
+               
+               return result;
        }
 }
 
@@ -642,6 +668,11 @@
        
        /* Create search bar */
        notes_combo = gtk_combo_box_new_text ();
+       gtk_combo_box_append_text (GTK_COMBO_BOX (notes_combo), "All");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (notes_combo), "Sent");
+       gtk_combo_box_append_text (GTK_COMBO_BOX (notes_combo), "Received");
+       gtk_combo_box_set_active (GTK_COMBO_BOX (notes_combo), 0);
+       
        data->notes_search = moko_search_bar_new_with_combo (
                GTK_COMBO_BOX (notes_combo));
        g_signal_connect (data->notes_search, "toggled",




--- End Message ---
_______________________________________________
commitlog mailing list
[email protected]
http://lists.openmoko.org/mailman/listinfo/commitlog

Reply via email to