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. r3529 - in trunk/src/target/OM-2007.2: . applications
      examples  libraries/libmokogsmd2/libmokogsmd
      panel-plugins/openmoko-panel-gsm/src ([EMAIL PROTECTED])
   2. r3530 - developers/sameo/patches/ar6k-atheros
      ([EMAIL PROTECTED])
--- Begin Message ---
Author: mickey
Date: 2007-11-28 17:57:31 +0100 (Wed, 28 Nov 2007)
New Revision: 3529

Added:
   trunk/src/target/OM-2007.2/examples/
   trunk/src/target/OM-2007.2/examples/example/
   trunk/src/target/OM-2007.2/examples/fingerscroll/
Removed:
   trunk/src/target/OM-2007.2/applications/example/
   trunk/src/target/OM-2007.2/applications/fingerscroll/
Modified:
   
trunk/src/target/OM-2007.2/libraries/libmokogsmd2/libmokogsmd/moko-gsmd-connection.c
   
trunk/src/target/OM-2007.2/libraries/libmokogsmd2/libmokogsmd/moko-gsmd-connection.h
   trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/src/Makefile.am
   
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c
Log:
move fingerscroll and example into dedicated examples directory


Copied: trunk/src/target/OM-2007.2/examples/example (from rev 3526, 
trunk/src/target/OM-2007.2/applications/example)

Copied: trunk/src/target/OM-2007.2/examples/fingerscroll (from rev 3526, 
trunk/src/target/OM-2007.2/applications/fingerscroll)

Modified: 
trunk/src/target/OM-2007.2/libraries/libmokogsmd2/libmokogsmd/moko-gsmd-connection.c
===================================================================
--- 
trunk/src/target/OM-2007.2/libraries/libmokogsmd2/libmokogsmd/moko-gsmd-connection.c
        2007-11-28 16:56:23 UTC (rev 3528)
+++ 
trunk/src/target/OM-2007.2/libraries/libmokogsmd2/libmokogsmd/moko-gsmd-connection.c
        2007-11-28 16:57:31 UTC (rev 3529)
@@ -99,6 +99,8 @@
 
     SIGNAL_GSMD_NET_CURRENT_OPERATOR = 100, /* Current Operator */
 
+    SIGNAL_GSMD_CONNECTION_STATUS = 200, /* Status of connection to gsmd */
+
     LAST_SIGNAL,
 };
 static guint moko_gsmd_connection_signals[LAST_SIGNAL] = { 0 };
@@ -107,13 +109,12 @@
 GObjectClass* parent_class = NULL;
 
 /* forward declarations */
+static gboolean
+moko_gsmd_connection_try_connect(MokoGsmdConnection* self);
 static int
-_moko_gsmd_connection_eventhandler(struct lgsm_handle *lh,
-                                   int evt_type, 
-                                   struct gsmd_evt_auxdata *aux);
+_moko_gsmd_connection_eventhandler(struct lgsm_handle *lh, int evt_type, 
struct gsmd_evt_auxdata *aux);
 
 /* class definition */
-
 static void
 moko_gsmd_connection_dispose(GObject* object)
 {
@@ -158,6 +159,19 @@
     object_class->finalize = moko_gsmd_connection_finalize;
 
     /* register signals */
+    moko_gsmd_connection_signals[SIGNAL_GSMD_CONNECTION_STATUS] = g_signal_new
+        ("gmsd-connection-status",
+        G_TYPE_FROM_CLASS (klass),
+        G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
+        G_STRUCT_OFFSET (MokoGsmdConnectionClass, gsmd_connection_status),
+        NULL,
+        NULL,
+        g_cclosure_marshal_VOID__BOOLEAN,
+        G_TYPE_NONE,
+        1,
+        G_TYPE_BOOLEAN,
+        NULL );
+
     moko_gsmd_connection_signals[SIGNAL_GSMD_EVT_IN_CALL] = g_signal_new
         ("incoming-call",
         G_TYPE_FROM_CLASS (klass),
@@ -275,7 +289,6 @@
         G_TYPE_STRING,
         NULL);
 
-
     /* virtual methods */
 
     /* install properties */
@@ -287,6 +300,15 @@
     return g_object_new(MOKO_TYPE_GSMD_CONNECTION, NULL);
 }
 
+static void
+moko_gsmd_connection_init(MokoGsmdConnection* self)
+{
+    moko_debug( "moko_gsmd_connection_init" );
+    moko_gsmd_connection_instance = self;
+
+    g_timeout_add_seconds( 5, (GSourceFunc)moko_gsmd_connection_try_connect, 
self );
+}
+
 static gboolean 
 _moko_gsmd_connection_source_prepare( GSource* self, 
                                       gint* timeout )
@@ -536,6 +558,10 @@
             g_warning( "libgsmd: %s",
                        "can't connect to gsmd. You won't receive any events." 
);
 
+            g_signal_emit( G_OBJECT(self),
+                           
moko_gsmd_connection_signals[SIGNAL_GSMD_CONNECTION_STATUS],
+                           0,
+                           FALSE );
             return TRUE; // can't connect, please call me again
         }
     }
@@ -572,18 +598,14 @@
     lgsm_register_handler( priv->handle, GSMD_MSG_PASSTHROUGH, &pt_msghandler);
     lgsm_register_handler( priv->handle, GSMD_MSG_NETWORK, &net_msghandler);
 
+    g_signal_emit( G_OBJECT(self),
+                   moko_gsmd_connection_signals[SIGNAL_GSMD_CONNECTION_STATUS],
+                   0,
+                   TRUE );
+
     return FALSE; // connection established, don't call again
 }
 
-static void
-moko_gsmd_connection_init(MokoGsmdConnection* self)
-{
-    moko_debug( "moko_gsmd_connection_init" );
-    moko_gsmd_connection_instance = self;
-
-    g_timeout_add_seconds( 5, (GSourceFunc)moko_gsmd_connection_try_connect, 
self );
-}
-
 /* public API */
 void 
 moko_gsmd_connection_set_antenna_power(MokoGsmdConnection* self, gboolean on, 
GError **error)

Modified: 
trunk/src/target/OM-2007.2/libraries/libmokogsmd2/libmokogsmd/moko-gsmd-connection.h
===================================================================
--- 
trunk/src/target/OM-2007.2/libraries/libmokogsmd2/libmokogsmd/moko-gsmd-connection.h
        2007-11-28 16:56:23 UTC (rev 3528)
+++ 
trunk/src/target/OM-2007.2/libraries/libmokogsmd2/libmokogsmd/moko-gsmd-connection.h
        2007-11-28 16:57:31 UTC (rev 3529)
@@ -54,6 +54,7 @@
     void (*network_current_operator) (MokoGsmdConnection* self, const gchar* 
name );
 
     /* Misc */
+    void (*gsmd_connection_status) (MokoGsmdConnection* self, gboolean status);
     void (*cme_cms_error) (MokoGsmdConnection *self, int code);
 
     /* Future padding */

Modified: 
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/src/Makefile.am
===================================================================
--- trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/src/Makefile.am 
2007-11-28 16:56:23 UTC (rev 3528)
+++ trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/src/Makefile.am 
2007-11-28 16:57:31 UTC (rev 3529)
@@ -4,7 +4,12 @@
 appletdir = $(libdir)/matchbox-panel/
 applet_LTLIBRARIES = libopenmoko-panel-gsm.la
 
-libopenmoko_panel_gsm_la_SOURCES = openmoko-panel-gsm.c
+libopenmoko_panel_gsm_la_SOURCES = \
+  openmoko-panel-gsm.c \
+  moko-pin.c \
+  moko-dialer-textview.c \
+  moko-dialer-panel.c \
+  moko-digit-button.c 
 libopenmoko_panel_gsm_la_LIBADD = @OPENMOKO_LIBS@
 
 MAINTAINERCLEANFILES = Makefile.in

Modified: 
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c
===================================================================
--- 
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c
        2007-11-28 16:56:23 UTC (rev 3528)
+++ 
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c
        2007-11-28 16:57:31 UTC (rev 3529)
@@ -41,8 +41,15 @@
 
 static GsmApplet* theApplet = NULL;
 
-static void gsm_applet_show_status(GtkWidget* menu, GsmApplet* applet);
+/* forwards */
+static void
+gsm_applet_show_status(GtkWidget* menu, GsmApplet* applet);
+static void
+gsm_applet_update_signal_strength(MokoGsmdConnection* connection, int, 
GsmApplet* );
+static void
+gsm_applet_power_up_antenna(GtkWidget* menu, GsmApplet* applet);
 
+/* internal */
 static void
 gsm_applet_free(GsmApplet *applet)
 {
@@ -50,6 +57,28 @@
 }
 
 static void
+gsm_applet_autoregister_trigger(GsmApplet* applet)
+{
+    moko_gsmd_connection_network_register( applet->gsm );
+}
+
+static void
+gsm_applet_gsmd_connection_status(MokoGsmdConnection* connection, gboolean 
status)
+{
+    g_debug( "gsm_applet_gsmd_connection_status: status = %s", status ? "TRUE" 
: "FALSE" );
+    if ( status )
+    {
+        gsm_applet_power_up_antenna( NULL, theApplet );
+    }
+    else
+    {
+        strcpy( theApplet->operator_name, "<unknown>" );
+        gsm_applet_update_signal_strength(connection, 99, theApplet );
+        gsm_applet_show_status(NULL, theApplet);
+    }
+}
+
+static void
 gsm_applet_update_signal_strength(MokoGsmdConnection* connection,
                                   int strength,
                                   GsmApplet* applet)
@@ -120,6 +149,21 @@
 }
 
 static void
+gsm_applet_sim_pin_requested(MokoGsmdConnection* self, int type)
+{
+    static pin_requested = 0;
+    pin_requested++;
+    g_debug( "gsm_applet_sim_pin_requested: PIN type = %d", type );
+    if ( pin_requested == 1 )
+    {
+        const char* thePIN = get_pin_from_user();
+        moko_gsmd_connection_send_pin( self, thePIN );
+
+        g_timeout_add_seconds( 1, 
(GSourceFunc)gsm_applet_autoregister_trigger, theApplet );
+    }
+}
+
+static void
 gsm_applet_show_status(GtkWidget* menu, GsmApplet* applet)
 {
     const gchar* summary = 0;
@@ -129,23 +173,25 @@
         case 0:
             summary = g_strdup( "Not searching" );
         break;
-        
+
         case 1:
             summary = g_strdup_printf( "Connected to '%s'", 
applet->operator_name );
             details = g_strdup_printf( "Type: Home Network\nCell ID: %04x : 
%04x\nSignal: %i dbM", applet->lac, applet->cell, -113 + applet->strength*2 );
         break;
-        
+
         case 2: summary = g_strdup( "Searching for Service" );
         break;
-        
+
         case 3: summary = g_strdup( "Registration Denied" );
         break;
-        
+
         case 5:
             summary = g_strdup_printf( "Connected to '%s'", 
applet->operator_name );
             details = g_strdup_printf( "Type: Roaming\nCell ID: %04x : 
%04x\nSignal: %i dbM", applet->lac, applet->cell, -113 + applet->strength*2 );
         break;
-        default: summary = g_strdup( "Unknown" );
+
+        default:
+            summary = g_strdup( "Unknown" );
     }
 
     notify_notification_show( notify_notification_new( summary, details, NULL, 
NULL ), NULL );
@@ -193,9 +239,11 @@
     gtk_widget_show_all( GTK_WIDGET(mokoapplet) );
 
     applet->gsm = moko_gsmd_connection_new();
+    g_signal_connect( G_OBJECT(applet->gsm), "gmsd-connection-status", 
G_CALLBACK(gsm_applet_gsmd_connection_status), applet );
     g_signal_connect( G_OBJECT(applet->gsm), "signal-strength-changed", 
G_CALLBACK(gsm_applet_update_signal_strength), applet );
     g_signal_connect( G_OBJECT(applet->gsm), "network-registration", 
G_CALLBACK(gsm_applet_network_registration_cb), applet );
     g_signal_connect( G_OBJECT(applet->gsm), "network-current-operator", 
G_CALLBACK(gsm_applet_network_current_operator_cb), applet );
+    g_signal_connect( G_OBJECT(applet->gsm), "pin-requested", 
G_CALLBACK(gsm_applet_sim_pin_requested), applet );
 
     // tap-with-hold menu (NOTE: temporary: left button atm.)
     GtkMenu* menu = GTK_MENU (gtk_menu_new());




--- End Message ---
--- Begin Message ---
Author: sameo
Date: 2007-11-28 19:17:41 +0100 (Wed, 28 Nov 2007)
New Revision: 3530

Modified:
   developers/sameo/patches/ar6k-atheros/mach-gta02_wifi.patch
   developers/sameo/patches/ar6k-atheros/s3c24xx_hcd_atheros.patch
Log:
ar6k-atheros: More DMA work.
We know register our DMA channel, and prepare our DMA transfer.



Modified: developers/sameo/patches/ar6k-atheros/mach-gta02_wifi.patch
===================================================================
--- developers/sameo/patches/ar6k-atheros/mach-gta02_wifi.patch 2007-11-28 
16:57:31 UTC (rev 3529)
+++ developers/sameo/patches/ar6k-atheros/mach-gta02_wifi.patch 2007-11-28 
18:17:41 UTC (rev 3530)
@@ -1,12 +1,12 @@
 ---
- arch/arm/mach-s3c2440/mach-gta02.c |   45 
+++++++++++++++++++++++++++++++++----
- 1 file changed, 41 insertions(+), 4 deletions(-)
+ arch/arm/mach-s3c2440/mach-gta02.c |   48 
++++++++++++++++++++++++++++++++++---
+ 1 file changed, 45 insertions(+), 3 deletions(-)
 
 Index: linux-2.6.22/arch/arm/mach-s3c2440/mach-gta02.c
 ===================================================================
---- linux-2.6.22.orig/arch/arm/mach-s3c2440/mach-gta02.c       2007-11-27 
17:11:54.000000000 +0100
-+++ linux-2.6.22/arch/arm/mach-s3c2440/mach-gta02.c    2007-11-28 
16:16:37.000000000 +0100
-@@ -305,12 +305,36 @@
+--- linux-2.6.22.orig/arch/arm/mach-s3c2440/mach-gta02.c       2007-11-28 
16:37:29.000000000 +0100
++++ linux-2.6.22/arch/arm/mach-s3c2440/mach-gta02.c    2007-11-28 
19:06:57.000000000 +0100
+@@ -305,6 +305,35 @@
        },
  };
  
@@ -20,7 +20,12 @@
 +              .flags = IORESOURCE_MEM,
 +              .start = S3C2410_PA_SDI,
 +              .end   = S3C2410_PA_SDI + S3C24XX_SZ_SDI - 1,
-+      }
++      },
++      [2] = {
++              .flags = IORESOURCE_DMA,
++              .start = 0, /* Channel 0 for SDI */
++              .end = 0,
++      },
 +};
 +
 +
@@ -37,14 +42,7 @@
  static struct platform_device *gta02_devices[] __initdata = {
        &s3c_device_usb,
        &s3c_device_wdt,
-       &s3c_device_i2c,
-       &s3c_device_iis,
--      // &s3c_device_sdi, /* FIXME: temporary disable to avoid s3cmci bind */
-+//    &s3c_device_sdi, /* FIXME: temporary disable to avoid s3cmci bind */
-       &s3c_device_usbgadget,
-       &s3c_device_nand,
-       &s3c_device_ts,
-@@ -651,14 +675,25 @@
+@@ -651,14 +680,25 @@
        set_s3c2410ts_info(&gta02_ts_cfg);
  
        /* FIXME: hardcoded WLAN module power-up */
@@ -73,7 +71,7 @@
                s3c2410_gpio_setpin(GTA02_GPIO_nWLAN_RESET, 1);
                break;
        }
-@@ -674,6 +709,8 @@
+@@ -674,6 +714,8 @@
        mangle_glamo_res_by_system_rev();
        platform_device_register(&gta02_glamo_dev);
  

Modified: developers/sameo/patches/ar6k-atheros/s3c24xx_hcd_atheros.patch
===================================================================
--- developers/sameo/patches/ar6k-atheros/s3c24xx_hcd_atheros.patch     
2007-11-28 16:57:31 UTC (rev 3529)
+++ developers/sameo/patches/ar6k-atheros/s3c24xx_hcd_atheros.patch     
2007-11-28 18:17:41 UTC (rev 3530)
@@ -2,14 +2,14 @@
  drivers/sdio/hcd/Kconfig               |    8 
  drivers/sdio/hcd/Makefile              |    1 
  drivers/sdio/hcd/s3c24xx/Makefile      |    2 
- drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c | 1122 
+++++++++++++++++++++++++++++++++
- drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.h |   59 +
- 5 files changed, 1192 insertions(+)
+ drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c | 1207 
+++++++++++++++++++++++++++++++++
+ drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.h |   61 +
+ 5 files changed, 1279 insertions(+)
 
 Index: linux-2.6.22/drivers/sdio/hcd/Kconfig
 ===================================================================
---- linux-2.6.22.orig/drivers/sdio/hcd/Kconfig 2007-11-27 17:16:52.000000000 
+0100
-+++ linux-2.6.22/drivers/sdio/hcd/Kconfig      2007-11-27 17:16:52.000000000 
+0100
+--- linux-2.6.22.orig/drivers/sdio/hcd/Kconfig 2007-11-28 16:38:00.000000000 
+0100
++++ linux-2.6.22/drivers/sdio/hcd/Kconfig      2007-11-28 16:38:00.000000000 
+0100
 @@ -46,6 +46,14 @@
        help
          good luck.
@@ -27,8 +27,8 @@
        depends on SPI
 Index: linux-2.6.22/drivers/sdio/hcd/Makefile
 ===================================================================
---- linux-2.6.22.orig/drivers/sdio/hcd/Makefile        2007-11-27 
17:16:52.000000000 +0100
-+++ linux-2.6.22/drivers/sdio/hcd/Makefile     2007-11-27 17:16:52.000000000 
+0100
+--- linux-2.6.22.orig/drivers/sdio/hcd/Makefile        2007-11-28 
16:38:00.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/Makefile     2007-11-28 16:38:00.000000000 
+0100
 @@ -6,3 +6,4 @@
  obj-$(CONFIG_ARCH_OMAP24XX)           += omap_2420/
  obj-$(CONFIG_PXA27x)                  += pxa270/
@@ -37,15 +37,15 @@
 Index: linux-2.6.22/drivers/sdio/hcd/s3c24xx/Makefile
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/s3c24xx/Makefile     2007-11-27 
17:16:52.000000000 +0100
++++ linux-2.6.22/drivers/sdio/hcd/s3c24xx/Makefile     2007-11-28 
16:38:00.000000000 +0100
 @@ -0,0 +1,2 @@
 +obj-$(CONFIG_PLAT_S3C24XX) += sdio_s3c24xx_hcd.o
 +sdio_s3c24xx_hcd-objs := s3c24xx_hcd.o
 Index: linux-2.6.22/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c        2007-11-28 
16:34:22.000000000 +0100
-@@ -0,0 +1,1122 @@
++++ linux-2.6.22/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c        2007-11-28 
19:03:16.000000000 +0100
+@@ -0,0 +1,1207 @@
 +/*
 + *  s3c24xx_hcd.c - Samsung S3C MCI driver
 + *
@@ -557,6 +557,60 @@
 +      SDIO_HandleHcdEvent(&context->hcd, EVENT_HCD_TRANSFER_DONE);
 +}
 +
++void s3c24xx_hcd_dma_done(struct s3c2410_dma_chan *dma_ch, void *buf_id,
++                        int size, enum s3c2410_dma_buffresult result)
++{
++}
++
++static int s3c24xx_hcd_prepare_dma(struct s3c24xx_hcd_context * context)
++{
++      PSDREQUEST req;
++      SDIO_STATUS status = SDIO_STATUS_SUCCESS;
++      int read = 0, hwcfg = S3C2410_DISRCC_INC | S3C2410_DISRCC_APB;
++      enum s3c2410_dmasrc source = S3C2410_DMASRC_MEM;
++
++      req = GET_CURRENT_REQUEST(&context->hcd);
++      if (req == NULL) {
++              DBG_PRINT(SDDBG_ERROR, ("%s(): No current request\n", 
__FUNCTION__));
++              status = SDIO_STATUS_ERROR;
++      }
++
++      if (!context->dma_en) {
++              DBG_PRINT(SDDBG_ERROR, ("%s(): DMA is disabled\n", 
__FUNCTION__));
++              status = SDIO_STATUS_ERROR;
++      }
++
++      if (!IS_SDREQ_DATA_TRANS(req->Flags)) {
++              DBG_PRINT(SDDBG_ERROR, ("%s(): No data to transfer\n", 
__FUNCTION__));
++              status = SDIO_STATUS_ERROR;
++      }
++
++      if(!IS_SDREQ_WRITE_DATA(req->Flags)) {
++              read = 1;
++              source = S3C2410_DMASRC_HW;
++              hwcfg = S3C2410_DISRCC_APB;
++      }
++
++      s3c2410_dma_devconfig(context->dma_channel, source, hwcfg,
++                            (unsigned long)context->base + S3C2440_SDIDATA);
++
++      s3c2410_dma_config(context->dma_channel, 1,
++                         (S3C2410_DCON_HWTRIG | S3C2410_DCON_CH0_SDI));
++
++      s3c2410_dma_set_buffdone_fn(context->dma_channel, s3c24xx_hcd_dma_done);
++
++      s3c2410_dma_setflags(context->dma_channel, S3C2410_DMAF_AUTOSTART);
++
++      s3c2410_dma_ctrl(context->dma_channel, S3C2410_DMAOP_FLUSH);
++
++      s3c2410_dma_enqueue(context->dma_channel, context,
++                          context->io_buffer_dma,
++                          req->DataRemaining);
++
++      return 0;
++}
++
++
 +static irqreturn_t s3c24xx_hcd_irq(int irq, void *dev_id)
 +{
 +      u32 cmdsta, dsta;
@@ -842,6 +896,11 @@
 +
 +              dcon |= S3C2440_SDIDCON_DATSTART;
 +
++              if (context->dma_en) {
++                      dcon |= S3C2410_SDIDCON_DMAEN;
++                      s3c24xx_hcd_prepare_dma(context);
++              }
++
 +              writel(dcon, context->base + S3C2410_SDIDCON);
 +
 +              imask |= S3C2410_SDIIMSK_RXFIFOHALF | 
S3C2410_SDIIMSK_RXFIFOLAST |
@@ -894,6 +953,9 @@
 +
 +              dcon |= S3C2440_SDIDCON_DATSTART;
 +
++              if (context->dma_en)
++                      dcon |= S3C2410_SDIDCON_DMAEN;
++
 +              writel(dcon, context->base + S3C2410_SDIDCON);
 +
 +              imask |= S3C2410_SDIIMSK_TXFIFOHALF | 
S3C2410_SDIIMSK_TXFIFOEMPTY |
@@ -928,8 +990,6 @@
 +      SDIO_STATUS status = SDIO_STATUS_SUCCESS;
 +      u32 con, datacon;
 +
-+      printk("######## %s() ############\n", __FUNCTION__);
-+
 +      /* Clock */
 +      context->device.clock = clk_get(NULL, "sdi");
 +      if (IS_ERR(context->device.clock)) {
@@ -983,7 +1043,9 @@
 +              goto out_unmap_mem_region;
 +      }
 +
-+      context->io_buffer_size = 4 * 4024;
++
++      /* DMA */
++      context->io_buffer_size = 4 * 4096;
 +      context->io_buffer = dma_alloc_coherent(&context->pdev->dev,
 +                                              context->io_buffer_size,
 +                                              &context->io_buffer_dma,
@@ -996,7 +1058,13 @@
 +
 +      }
 +
++      if (s3c2410_dma_request(context->dma_channel, &s3c24xx_hcd_dma_client, 
NULL)) {
++              DBG_PRINT(SDDBG_ERROR, ("unable to get DMA channel.\n"));
++              status = -ENOENT;
++              goto out_free_dma;
++      }
 +
++
 +      /* Set multiplexing */
 +      s3c2410_gpio_cfgpin(S3C2410_GPE5, S3C2410_GPE5_SDCLK);
 +      s3c2410_gpio_cfgpin(S3C2410_GPE6, S3C2410_GPE6_SDCMD);
@@ -1013,11 +1081,16 @@
 +      datacon |= S3C2410_SDIDCON_WIDEBUS;
 +      writel(datacon, context->base + S3C2410_SDIDCON);
 +
-+      printk("S3c24xx SDIO: IRQ:%d Detect IRQ: %d [EMAIL PROTECTED] [EMAIL 
PROTECTED] kHz\n",
-+             context->io_irq, context->cd_irq, context->base, 
context->device.max_clock_rate/1000);
++      printk("S3c24xx SDIO: IRQ:%d Detect IRQ:%d DMA channel:%d [EMAIL 
PROTECTED] [EMAIL PROTECTED] kHz\n",
++             context->io_irq, context->cd_irq, context->dma_channel, 
context->base,
++             context->device.max_clock_rate/1000);
 +
 +      return SDIOErrorToOSError(status);
 +
++ out_free_dma:
++      dma_free_coherent(&context->pdev->dev,context->io_buffer_size,
++                        context->io_buffer, context->io_buffer_dma);
++
 + out_free_irq:
 +      free_irq(context->io_irq, context);
 +
@@ -1039,6 +1112,8 @@
 +      free_irq(context->io_irq, context);
 +      iounmap(context->base);
 +      release_mem_region(context->mem->start, RESSIZE(context->mem));
++      dma_free_coherent(&context->pdev->dev,context->io_buffer_size,
++                        context->io_buffer, context->io_buffer_dma);
 +}
 +
 +static int s3c24xx_hcd_pnp_probe(struct pnp_dev *pBusDevice, const struct 
pnp_device_id *pId)
@@ -1095,6 +1170,7 @@
 +static int s3c24xx_hcd_probe(struct platform_device * pdev)
 +{
 +      SDIO_STATUS status = SDIO_STATUS_SUCCESS;
++      struct resource *r = NULL;
 +
 +      printk("S3c2440 SDIO Host controller\n");
 +
@@ -1109,11 +1185,20 @@
 +
 +      hcd_context.io_irq = platform_get_irq(pdev, 0);
 +      if (hcd_context.io_irq == 0) {
-+              DBG_PRINT(SDDBG_ERROR, ("No memory region\n"));
++              DBG_PRINT(SDDBG_ERROR, ("No IRQ\n"));
 +              status = SDIO_STATUS_NO_RESOURCES;
 +              goto out;
 +      }
 +
++      r = platform_get_resource(pdev, IORESOURCE_DMA, 0);
++      if (r == NULL) {
++              DBG_PRINT(SDDBG_ERROR, ("No DMA channel\n"));
++              status = SDIO_STATUS_NO_RESOURCES;
++              goto out;
++      }
++      hcd_context.dma_channel = r->start;
++      hcd_context.dma_en = 0;
++
 +      hcd_context.int_sdio = 0;
 +      hcd_context.int_sdio_reported = 0;
 +      hcd_context.int_sdio_pending = 0;
@@ -1133,7 +1218,7 @@
 +
 +/*
 + * module cleanup
-+*/
++ */
 +static int s3c24xx_hcd_remove(struct platform_device * pdev) {
 +      printk("S3C2440 SDIO host controller unloaded\n");
 +      SDIO_BusRemoveOSDevice(&hcd_context.device.pnp_driver, 
&hcd_context.device.pnp_device);
@@ -1171,8 +1256,8 @@
 Index: linux-2.6.22/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.h
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.h        2007-11-28 
16:05:12.000000000 +0100
-@@ -0,0 +1,59 @@
++++ linux-2.6.22/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.h        2007-11-28 
18:23:58.000000000 +0100
+@@ -0,0 +1,61 @@
 +#ifndef __SDIO_S3C24XX_HCD_H___
 +#define __SDIO_S3C24XX_HCD_H___
 +
@@ -1213,6 +1298,8 @@
 +      void                      *io_buffer;         /* Kernel address */
 +      dma_addr_t                io_buffer_dma;      /* Bus address */
 +      UINT32                    io_buffer_size;
++      UINT32                    dma_channel;
++      UINT32                    dma_en;
 +
 +      UINT32                    int_mask;
 +      UINT32                    int_sdio;            /* Do we have SDIO 
interrupt on ? */




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

Reply via email to