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