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. r3630 - developers/john_lee/toolkit/bin
      ([EMAIL PROTECTED])
   2. r3631 - developers/sameo/patches/ar6k-ng ([EMAIL PROTECTED])
--- Begin Message ---
Author: john_lee
Date: 2007-12-11 17:11:57 +0100 (Tue, 11 Dec 2007)
New Revision: 3630

Modified:
   developers/john_lee/toolkit/bin/om-conf
Log:
Pass om-conf options to configure.  For example:

om-conf openmoko-sample2 --prefix=/usr/local/openmoko



Modified: developers/john_lee/toolkit/bin/om-conf
===================================================================
--- developers/john_lee/toolkit/bin/om-conf     2007-12-11 01:34:30 UTC (rev 
3629)
+++ developers/john_lee/toolkit/bin/om-conf     2007-12-11 16:11:57 UTC (rev 
3630)
@@ -38,10 +38,24 @@
 . ${OMTOOL_DIR}/arm/scripts/script-env
 . ${OMTOOL_DIR}/arm/scripts/functions
 
-test -z $1 && error_exit
-S=$(absolute_path $1)
-test ! -d $S && error_exit
+test x${1} = x && error_exit
+while test x"${1}" != x
+do
+       if (echo ${1} | grep -q -e "^-")
+       then
+               EXTRA_OECONF="${EXTRA_OECONF} ${1}"
+       else
+               S=${1}
+       fi
+       shift
+done
 
+S=$(absolute_path ${S})
+test ! -d ${S} && error_exit
+
+echo Source directory: ${S}
+echo Extra configure arguments: ${EXTRA_OECONF}
+
 #EXTRA_OECONF=
 #EXTRA_OEMAKE=
 #EXTRA_AUTORECONF=




--- End Message ---
--- Begin Message ---
Author: sameo
Date: 2007-12-11 21:57:55 +0100 (Tue, 11 Dec 2007)
New Revision: 3631

Modified:
   developers/sameo/patches/ar6k-ng/160-ar6k_ng.patch
Log:
ar6k-ng: Almost done with the mainline SDIO stack conversion.
htc_send.c is left.


Modified: developers/sameo/patches/ar6k-ng/160-ar6k_ng.patch
===================================================================
--- developers/sameo/patches/ar6k-ng/160-ar6k_ng.patch  2007-12-11 16:11:57 UTC 
(rev 3630)
+++ developers/sameo/patches/ar6k-ng/160-ar6k_ng.patch  2007-12-11 20:57:55 UTC 
(rev 3631)
@@ -4,15 +4,15 @@
  drivers/net/wireless/ar6k/Kconfig                      |   11 
  drivers/net/wireless/ar6k/Makefile                     |   19 
  drivers/net/wireless/ar6k/ar6k.h                       |   68 
- drivers/net/wireless/ar6k/ar6k_main.c                  | 5574 
+++++++++++++++++
- drivers/net/wireless/ar6k/bmi.c                        |  450 +
- drivers/net/wireless/ar6k/hif.c                        |  204 
- drivers/net/wireless/ar6k/hif.h                        |   48 
+ drivers/net/wireless/ar6k/ar6k_main.c                  | 5580 
+++++++++++++++++
+ drivers/net/wireless/ar6k/bmi.c                        |  466 +
+ drivers/net/wireless/ar6k/hif.c                        |  287 
+ drivers/net/wireless/ar6k/hif.h                        |   87 
  drivers/net/wireless/ar6k/htc/Makefile                 |    5 
- drivers/net/wireless/ar6k/htc/htc.c                    |  426 +
- drivers/net/wireless/ar6k/htc/htc_events.c             |  886 ++
+ drivers/net/wireless/ar6k/htc/htc.c                    |  445 +
+ drivers/net/wireless/ar6k/htc/htc_events.c             |  934 ++
  drivers/net/wireless/ar6k/htc/htc_internal.h           |  456 +
- drivers/net/wireless/ar6k/htc/htc_recv.c               |  197 
+ drivers/net/wireless/ar6k/htc/htc_recv.c               |  205 
  drivers/net/wireless/ar6k/htc/htc_send.c               |  359 +
  drivers/net/wireless/ar6k/htc/htc_utils.c              |  394 +
  drivers/net/wireless/ar6k/include/AR6000_bmi.h         |  136 
@@ -24,7 +24,7 @@
  drivers/net/wireless/ar6k/include/athdrv.h             |  597 +
  drivers/net/wireless/ar6k/include/dset_api.h           |   47 
  drivers/net/wireless/ar6k/include/gpio_api.h           |   60 
- drivers/net/wireless/ar6k/include/hif.h                |   79 
+ drivers/net/wireless/ar6k/include/hif.h                |   75 
  drivers/net/wireless/ar6k/include/host_version.h       |   47 
  drivers/net/wireless/ar6k/include/htc.h                |  115 
  drivers/net/wireless/ar6k/include/hw/#mbox_host_reg.h# |  416 +
@@ -49,7 +49,7 @@
  drivers/net/wireless/ar6k/wlan/wlan_recv_beacon.c      |  169 
  drivers/net/wireless/ar6k/wlan/wlan_utils.c            |   53 
  drivers/net/wireless/ar6k/wmi.c                        | 2834 ++++++++
- 50 files changed, 20491 insertions(+)
+ 50 files changed, 20706 insertions(+)
 
 Index: linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/ar6k.h
 ===================================================================
@@ -127,8 +127,8 @@
 Index: linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/ar6k_main.c
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/ar6k_main.c      
2007-12-11 02:30:20.000000000 +0100
-@@ -0,0 +1,5574 @@
++++ linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/ar6k_main.c      
2007-12-11 18:52:33.000000000 +0100
+@@ -0,0 +1,5580 @@
 +/*
 + * Copyright (c) 2004-2006 Atheros Communications Inc.
 + * Copyright (c) 2007 Felix Fietkau <[EMAIL PROTECTED]>
@@ -567,15 +567,19 @@
 +{
 +      int ret;
 +
-+      ret = sdio_memcpy_toio(func, WINDOW_DATA_ADDRESS, data, sizeof(u32));
++      ret = hif_rw(func, HIF_WRITE, HIF_INCREMENTAL_ADDRESS, HIF_BYTE_BASIS,
++                   WINDOW_DATA_ADDRESS, (u8 *)data, sizeof(u32));
++//    ret = sdio_memcpy_toio(func, WINDOW_DATA_ADDRESS, data, sizeof(u32));
 +      if (ret) {
 +              AR_DEBUG_PRINTF("Cannot write 0x%x to WINDOW_DATA_ADDRESS\n",
 +                                              *data);
 +              return A_ERROR;
 +      }
 +
-+      ret = sdio_memcpy_toio(func, WINDOW_WRITE_ADDR_ADDRESS + 1,
-+                                                 ((u8 *) address) + 1, 
sizeof(u32) - 1);
++      ret = hif_rw(func, HIF_WRITE, HIF_INCREMENTAL_ADDRESS, HIF_BYTE_BASIS,
++                   WINDOW_DATA_ADDRESS + 1, ((u8 *)(data)) + 1, sizeof(u32) - 
1);
++//    ret = sdio_memcpy_toio(func, WINDOW_WRITE_ADDR_ADDRESS + 1,
++//                                               ((u8 *) address) + 1, 
sizeof(u32) - 1);
 +      if (ret) {
 +              AR_DEBUG_PRINTF
 +                      ("Cannot write initial bytes of 0x%x to 
WINDOW_WRITE_ADDR_ADDRESS\n",
@@ -583,9 +587,9 @@
 +              return A_ERROR;
 +      }
 +
-+      ret =
-+              sdio_memcpy_toio(func, WINDOW_WRITE_ADDR_ADDRESS, (u8 *) 
address,
-+                                               1);
++      ret = hif_rw(func, HIF_WRITE, HIF_INCREMENTAL_ADDRESS, HIF_BYTE_BASIS,
++                   WINDOW_WRITE_ADDR_ADDRESS, (u8 *)data, sizeof(u32));
++//    ret = sdio_memcpy_toio(func, WINDOW_WRITE_ADDR_ADDRESS, (u8 *) address, 
1);
 +      if (ret) {
 +              AR_DEBUG_PRINTF("Cannot write 0x%x to 
WINDOW_WRITE_ADDR_ADDRESS\n",
 +                                              *address);
@@ -2073,11 +2077,13 @@
 +              return -EIO;
 +      }
 +
-+      copy_from_user(&qreq, rq->ifr_data, sizeof(struct ar6k_queuereq));
++      if (copy_from_user(&qreq, rq->ifr_data, sizeof(struct ar6k_queuereq))) {
++              return -EFAULT;
++      }
 +
 +      qreq.queueNumber = wmi_get_mapped_qos_queue(ar->arWmi,
-+                                                                              
                qreq.trafficDirection,
-+                                                                              
                qreq.trafficClass);
++                                                  qreq.trafficDirection,
++                                                  qreq.trafficClass);
 +
 +      if (copy_to_user(rq->ifr_data, &qreq, sizeof(struct ar6k_queuereq))) {
 +              ret = -EFAULT;
@@ -3803,8 +3809,8 @@
 + */
 +int
 +ar6k_ioctl_giwfreq(struct net_device *dev,
-+                                       struct iw_request_info *info,
-+                                       struct iw_freq *freq, char *extra)
++                 struct iw_request_info *info,
++                 struct iw_freq *freq, char *extra)
 +{
 +      AR_SOFTC_T *ar = (AR_SOFTC_T *) dev->priv;
 +
@@ -5706,8 +5712,8 @@
 Index: linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/bmi.c
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/bmi.c    2007-12-11 
02:30:20.000000000 +0100
-@@ -0,0 +1,450 @@
++++ linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/bmi.c    2007-12-11 
19:41:01.000000000 +0100
+@@ -0,0 +1,466 @@
 +/*
 + * Copyright (c) 2004-2006 Atheros Communications Inc.
 + *  Wireless Network driver for Atheros AR6001
@@ -6091,14 +6097,19 @@
 +      u32 timeout;
 +      u32 address;
 +      u8 cmdCredits;
++      u32 mbox_address[HTC_MAILBOX_NUM_MAX];
 +
++      HIFConfigureDevice(HIF_DEVICE_GET_MBOX_ADDR,
++                         &mbox_address, sizeof(mbox_address));
++
 +      cmdCredits = 0;
 +      timeout = BMI_COMMUNICATION_TIMEOUT;
 +      while (timeout-- && !cmdCredits) {
 +              /* Read the counter register to get the command credits */
-+              address =
-+                      COUNT_DEC_ADDRESS + (HTC_MAILBOX_NUM_MAX + ENDPOINT1) * 
4;
-+              cmdCredits = sdio_readb(func, address, &ret);
++              address = COUNT_DEC_ADDRESS + (HTC_MAILBOX_NUM_MAX + ENDPOINT1) 
* 4;
++              //cmdCredits = sdio_readb(func, address, &ret);
++              ret = hif_rw(func, HIF_READ, HIF_FIXED_ADDRESS, HIF_BYTE_BASIS,
++                           address, &cmdCredits, 1);
 +              if (ret) {
 +                      AR_DEBUG_PRINTF
 +                              ("Unable to decrement the command credit count 
register: %d\n",
@@ -6112,8 +6123,10 @@
 +              return A_ERROR;
 +      }
 +
-+      address = HIF_MBOX_START_ADDR(ENDPOINT1);
-+      ret = sdio_memcpy_toio(func, address, buffer, length);
++      address = mbox_address[ENDPOINT1];
++      ret = hif_rw(func, HIF_WRITE, HIF_INCREMENTAL_ADDRESS, HIF_BYTE_BASIS,
++                   address, buffer, length);
++//    ret = sdio_memcpy_toio(func, address, buffer, length);
 +      if (ret) {
 +              AR_DEBUG_PRINTF("Unable to send the BMI data to the device: 
%d\n",
 +                                              ret);
@@ -6129,13 +6142,19 @@
 +      u32 address;
 +      u32 timeout;
 +      u8 cmdCredits;
++      u32 mbox_address[HTC_MAILBOX_NUM_MAX];
 +
++      HIFConfigureDevice(HIF_DEVICE_GET_MBOX_ADDR,
++                         &mbox_address, sizeof(mbox_address));
++
 +      cmdCredits = 0;
 +      timeout = BMI_COMMUNICATION_TIMEOUT;
 +      while (timeout-- && !cmdCredits) {
 +              /* Read the counter register to get the command credits */
 +              address = COUNT_ADDRESS + (HTC_MAILBOX_NUM_MAX + ENDPOINT1) * 1;
-+              cmdCredits = sdio_readb(func, address, &ret);
++              ret = hif_rw(func, HIF_READ, HIF_FIXED_ADDRESS, HIF_BYTE_BASIS,
++                           address, &cmdCredits, 1);
++//            cmdCredits = sdio_readb(func, address, &ret);
 +              if (ret) {
 +                      AR_DEBUG_PRINTF
 +                              ("Unable to decrement the command credit count 
register: %d\n",
@@ -6149,8 +6168,11 @@
 +              return A_ERROR;
 +      }
 +
-+      address = HIF_MBOX_START_ADDR(ENDPOINT1);
-+      ret = sdio_memcpy_fromio(func, buffer, address, length);
++      address = mbox_address[ENDPOINT1];
++      ret = hif_rw(func, HIF_READ, HIF_INCREMENTAL_ADDRESS, HIF_BYTE_BASIS,
++                   address, buffer, length);
++//    address = HIF_MBOX_START_ADDR(ENDPOINT1);
++//    ret = sdio_memcpy_fromio(func, buffer, address, length);
 +      if (ret) {
 +              AR_DEBUG_PRINTF("Unable to read the BMI data from the 
device\n");
 +              return A_ERROR;
@@ -6161,8 +6183,8 @@
 Index: linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/hif.c
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/hif.c    2007-12-11 
02:30:20.000000000 +0100
-@@ -0,0 +1,204 @@
++++ linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/hif.c    2007-12-11 
19:36:51.000000000 +0100
+@@ -0,0 +1,287 @@
 +/*
 + * Copyright (c) 2004-2005 Atheros Communications Inc.
 + *
@@ -6183,6 +6205,7 @@
 + */
 +#include "ar6k.h"
 +#include "hif.h"
++#include "include/wmi.h"
 +
 +/* ------ Static Variables ------ */
 +
@@ -6367,19 +6390,104 @@
 +      htcCallbacks.deviceRemovedHandler(func);
 +}
 +
++int
++HIFConfigureDevice(HIF_DEVICE_CONFIG_OPCODE opcode,
++                   void *config, u32 len)
++{
++      u32 count;
++
++      switch(opcode) {
++        case HIF_DEVICE_GET_MBOX_BLOCK_SIZE:
++              ((u32 *)config)[0] = HIF_MBOX0_BLOCK_SIZE;
++              ((u32 *)config)[1] = HIF_MBOX1_BLOCK_SIZE;
++              ((u32 *)config)[2] = HIF_MBOX2_BLOCK_SIZE;
++              ((u32 *)config)[3] = HIF_MBOX3_BLOCK_SIZE;
++              break;
++
++        case HIF_DEVICE_GET_MBOX_ADDR:
++              for (count = 0; count < 4; count ++) {
++                      ((u32 *)config)[count] = HIF_MBOX_START_ADDR(count);
++              }
++              break;
++
++        default:
++              printk(KERN_ERR "Invalid configuration opcode: %d\n", opcode);
++              return -EINVAL;
++      }
++
++      return 0;
++}
++
++
++extern int sdio_io_rw(struct sdio_func *func, int write, int block, int 
block_size, int block_count,
++                    unsigned addr, int incr_addr, u8 *buf, unsigned size);
++
++int hif_rw(struct sdio_func *func, u32 write, u32 incr_mode, u32 block_mode,
++         u32 address, u8 * buffer, u32 length)
++{
++      u32 block, block_size, block_count, rw, incr;
++
++      if (block_mode == HIF_BLOCK_BASIS) {
++              block = 1;
++              block_size = HIF_MBOX_BLOCK_SIZE;
++              block_count = length / HIF_MBOX_BLOCK_SIZE;
++      } else if (block_mode == HIF_BYTE_BASIS) {
++              block = 0;
++              block_size = length;
++              block_count = 1;
++      } else {
++              printk(KERN_ERR "Invalid block mode\n");
++              return -EINVAL;
++      }
++
++      if ((address >= HIF_MBOX_START_ADDR(0)) &&
++            (address <= HIF_MBOX_END_ADDR(3)))
++        {
++              /*
++               * Mailbox write. Adjust the address so that the last byte
++               * falls on the EOM address.
++               */
++              address += (HIF_MBOX_WIDTH - length);
++        }
++
++      if (write == HIF_WRITE)
++              rw = 1;
++      else if (write == HIF_READ)
++              rw = 0;
++      else {
++              printk(KERN_ERR "Invalid write mode\n");
++              return -EINVAL;
++      }
++
++      if (incr_mode == HIF_INCREMENTAL_ADDRESS)
++              incr = 1;
++      else if (incr_mode == HIF_FIXED_ADDRESS)
++              incr = 0;
++      else {
++              printk(KERN_ERR "Invalid increase mode\n");
++              return -EINVAL;
++      }
++
++
++      return sdio_io_rw(func, rw, block, block_size, block_count,
++                        address, incr, buffer, length);
++}
 Index: linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/hif.h
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/hif.h    2007-12-11 
02:30:20.000000000 +0100
-@@ -0,0 +1,48 @@
++++ linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/hif.h    2007-12-11 
19:53:56.000000000 +0100
+@@ -0,0 +1,87 @@
 +/*
 + * Copyright (c) 2004-2006 Atheros Communications Inc.
 + * All rights reserved.
 + *
-+   $ATH_LICENSE_AR6K0$
++ *   $ATH_LICENSE_AR6K0$
 + *
 + */
 +
++#ifndef _HIF_H_
++#define _HIF_H_
++
 +#include "include/athdefs.h"
 +#include "include/osapi.h"
 +#include "include/hif.h"
@@ -6405,26 +6513,62 @@
 +#define HIF_MBOX2_BLOCK_SIZE               HIF_MBOX_BLOCK_SIZE
 +#define HIF_MBOX3_BLOCK_SIZE               HIF_MBOX_BLOCK_SIZE
 +
-+#define HIF_MBOX_START_ADDR(mbox)                        \
-+    HIF_MBOX_BASE_ADDR + mbox * HIF_MBOX_WIDTH
++#define HIF_MBOX_START_ADDR(mbox) (HIF_MBOX_BASE_ADDR + ((mbox) * 
HIF_MBOX_WIDTH))
 +
-+#define HIF_MBOX_END_ADDR(mbox)                                \
-+    HIF_MBOX_START_ADDR(mbox) + HIF_MBOX_WIDTH - 1
++#define HIF_MBOX_END_ADDR(mbox) (HIF_MBOX_START_ADDR((mbox)) + HIF_MBOX_WIDTH 
- 1)
 +
++typedef enum {
++      HIF_READ,
++      HIF_WRITE,
++} HIF_DIRECTION;
 +
-+int
-+hifDeviceInserted(struct sdio_func *func, const struct sdio_device_id *id);
++typedef enum {
++      HIF_BASIC_IO,
++      HIF_EXTENDED_IO,
++} HIF_CMDTYPE;
 +
++typedef enum {
++      HIF_SYNCHRONOUS,
++      HIF_ASYNCHRONOUS,
++} HIF_EXECMODE;
++
++typedef enum {
++      HIF_BYTE_BASIS,
++      HIF_BLOCK_BASIS,
++} HIF_DATAMODE;
++
++typedef enum {
++      HIF_FIXED_ADDRESS,
++      HIF_INCREMENTAL_ADDRESS,
++} HIF_ADDRMODE;
++
++typedef enum {
++    HIF_DEVICE_POWER_STATE,
++    HIF_DEVICE_GET_MBOX_BLOCK_SIZE,
++    HIF_DEVICE_GET_MBOX_ADDR,
++} HIF_DEVICE_CONFIG_OPCODE;
++
++int hifDeviceInserted(struct sdio_func *func, const struct sdio_device_id 
*id);
++
 +void hifDeviceRemoved(struct sdio_func *func);
 +
 +void hifRWCompletionHandler(struct mmc_request *mrq);
 +
 +void hifIRQHandler(struct sdio_func *func);
++
++int HIFConfigureDevice(HIF_DEVICE_CONFIG_OPCODE opcode,
++                     void *config, u32 len);
++
++
++int hif_rw(struct sdio_func *func, u32 write, u32 incr_mode, u32 block_mode,
++         u32 address, u8 * buffer, u32 length);
++
++#endif
 Index: linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/htc/htc.c
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/htc/htc.c        
2007-12-11 02:30:20.000000000 +0100
-@@ -0,0 +1,426 @@
++++ linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/htc/htc.c        
2007-12-11 21:04:28.000000000 +0100
+@@ -0,0 +1,445 @@
 +/*
 + * Copyright (c) 2004-2006 Atheros Communications Inc.
 + * Copyright (c) 2007 Felix Fietkau <[EMAIL PROTECTED]>
@@ -6537,9 +6681,11 @@
 +
 +      /* Write to the register */
 +      address = getRegAddr(INT_STATUS_ENABLE_REG, ENDPOINT_UNUSED);
-+      status =
-+              sdio_memcpy_toio(target->device, address,
-+                                               
&target->table.int_status_enable, 4);
++      status = hif_rw(target->device, HIF_WRITE, HIF_INCREMENTAL_ADDRESS, 
HIF_BYTE_BASIS,
++                      address, &target->table.int_status_enable, 4);
++//    status =
++//            sdio_memcpy_toio(target->device, address,
++//                                             
&target->table.int_status_enable, 4);
 +      if (status) {
 +              /* Can't write it for some reason */
 +              AR_DEBUG_PRINTF(ATH_DEBUG_ERR,
@@ -6710,9 +6856,15 @@
 +      window_addr = value;
 +      address = getRegAddr(whichreg, ENDPOINT_UNUSED);
 +
-+      sdio_memcpy_toio(target->device, address + 1,
-+                                       ((u8 *) & window_addr) + 1, 3);
-+      sdio_memcpy_toio(target->device, address, (u8 *) & window_addr, 1);
++      hif_rw(target->device, HIF_WRITE, HIF_INCREMENTAL_ADDRESS, 
HIF_BYTE_BASIS,
++             address + 1, ((u8 *) &window_addr) + 1, 3);
++
++      hif_rw(target->device, HIF_WRITE, HIF_INCREMENTAL_ADDRESS, 
HIF_BYTE_BASIS,
++             address, ((u8 *) &window_addr), 1);
++
++//    sdio_memcpy_toio(target->device, address + 1,
++//                                     ((u8 *) & window_addr) + 1, 3);
++//    sdio_memcpy_toio(target->device, address, (u8 *) & window_addr, 1);
 +}
 +
 +void HTCStop(HTC_TARGET * target)
@@ -6736,8 +6888,11 @@
 +      target->table.counter_int_status_enable = 0;
 +
 +      address = getRegAddr(INT_STATUS_ENABLE_REG, ENDPOINT_UNUSED);
-+      sdio_writel(target->device, target->table.int_status_enable, address,
-+                              &status);
++      status = hif_rw(target->device, HIF_WRITE, HIF_INCREMENTAL_ADDRESS, 
HIF_BYTE_BASIS,
++                      address, &target->table.int_status_enable, 4);
++
++//    sdio_writel(target->device, target->table.int_status_enable, address,
++//                            &status);
 +      AR_DEBUG_ASSERT(status == 0);
 +
 +      /* Disable the host controller interrupts */
@@ -6750,10 +6905,13 @@
 +              /* Decrement the number of credits consumed */
 +              if (endPoint->txCreditsConsumed) {
 +                      address = getRegAddr(TX_CREDIT_COUNTER_DECREMENT_REG, 
count);
-+                      status =
-+                              sdio_writesb(target->device, address,
-+                                                       
endPoint->txCreditsAvailable,
-+                                                       
endPoint->txCreditsConsumed);
++
++                      status = hif_rw(target->device, HIF_WRITE, 
HIF_FIXED_ADDRESS, HIF_BYTE_BASIS,
++                                      address, endPoint->txCreditsAvailable, 
endPoint->txCreditsConsumed);
++//                    status =
++//                            sdio_writesb(target->device, address,
++//                                                     
endPoint->txCreditsAvailable,
++//                                                     
endPoint->txCreditsConsumed);
 +                      AR_DEBUG_ASSERT(status == 0);
 +              }
 +
@@ -6791,7 +6949,11 @@
 +      /* Attempting a force reset of the target */
 +      window_data = RESET_CONTROL_COLD_RST_MASK;
 +      address = getRegAddr(WINDOW_DATA_REG, ENDPOINT_UNUSED);
-+      sdio_writel(target->device, window_data, address, &status);
++
++      status = hif_rw(target->device, HIF_WRITE, HIF_INCREMENTAL_ADDRESS, 
HIF_BYTE_BASIS,
++                      address, (u8 *)&window_data, 4);
++
++//sdio_writel(target->device, window_data, address, &status);
 +      AR_DEBUG_ASSERT(status == 0);
 +
 +      _WRITE_WINDOW_ADDR(target, WINDOW_WRITE_ADDR_REG,
@@ -6807,7 +6969,8 @@
 +
 +      window_data = 0;
 +      address = getRegAddr(WINDOW_DATA_REG, ENDPOINT_UNUSED);
-+      sdio_writel(target->device, window_data, address, &status);
++
++//    sdio_writel(target->device, window_data, address, &status);
 +      AR_DEBUG_ASSERT(status == 0);
 +
 +      AR_DEBUG_PRINTF(ATH_DEBUG_INF, ("window data: %d\n", window_data));
@@ -6854,8 +7017,8 @@
 Index: linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/htc/htc_events.c
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/htc/htc_events.c 
2007-12-11 02:30:20.000000000 +0100
-@@ -0,0 +1,886 @@
++++ linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/htc/htc_events.c 
2007-12-11 21:46:34.000000000 +0100
+@@ -0,0 +1,934 @@
 +/*
 + * Copyright (c) 2004-2006 Atheros Communications Inc.
 + *
@@ -7021,11 +7184,15 @@
 +                      /* Send the INT_WLAN interrupt to the target */
 +                      target->table.int_wlan = 1;
 +                      regElement = allocateRegRequestElement(target);
++                      AR_DEBUG_ASSERT(regElement != NULL);
++                      FILL_REG_BUFFER(regElement, &target->table.int_wlan, 1,
++                                      INT_WLAN_REG, ENDPOINT_UNUSED);
 +                      address = getRegAddr(INT_WLAN_REG, ENDPOINT_UNUSED);
 +
-+                      /* FIXME: do an async request here */
-+                      sdio_writeb(target->device, target->table.int_wlan, 
address,
-+                                              &status);
++                      hif_rw(target->device, HIF_WRITE, HIF_FIXED_ADDRESS, 
HIF_BYTE_BASIS,
++                             address, &target->table.int_wlan, 1);
++//                    sdio_writeb(target->device, target->table.int_wlan, 
address,
++//                                            &status);
 +                      if (status == 0)
 +                              regElement->completionCB(regElement, status);
 +              }
@@ -7404,9 +7571,11 @@
 +       *             sizeof(counter_int_status_enable);
 +       */
 +      address = getRegAddr(INT_STATUS_REG, ENDPOINT_UNUSED);
-+      status =
-+              sdio_memcpy_fromio(target->device, 
&target->table.host_int_status,
-+                                 address, 28);
++      status = hif_rw(target->device, HIF_READ, HIF_INCREMENTAL_ADDRESS, 
HIF_BYTE_BASIS,
++                      address, &target->table.host_int_status, 28);
++//    status =
++//            sdio_memcpy_fromio(target->device, 
&target->table.host_int_status,
++//                               address, 28);
 +      AR_DEBUG_ASSERT(status == 0);
 +
 +#ifdef CONFIG_AR6K_DEBUG
@@ -7471,8 +7640,10 @@
 +      /* Clear the interrupt */
 +      target->table.cpu_int_status = cpu_int_status;  /* W1C */
 +      address = getRegAddr(CPU_INT_STATUS_REG, ENDPOINT_UNUSED);
-+      sdio_writeb(target->device, target->table.cpu_int_status, address,
-+                              &status);
++      status = hif_rw(target->device, HIF_WRITE, HIF_FIXED_ADDRESS, 
HIF_BYTE_BASIS,
++                      address, &target->table.cpu_int_status, 1);
++//    sdio_writeb(target->device, target->table.cpu_int_status, address,
++//                            &status);
 +      AR_DEBUG_ASSERT(status == 0);
 +}
 +
@@ -7509,8 +7680,10 @@
 +      /* Clear the interrupt */
 +      target->table.error_int_status = error_int_status;      /* W1C */
 +      address = getRegAddr(ERROR_INT_STATUS_REG, ENDPOINT_UNUSED);
-+      sdio_writeb(target->device, target->table.error_int_status, address,
-+                              &status);
++      status = hif_rw(target->device, HIF_WRITE, HIF_FIXED_ADDRESS, 
HIF_BYTE_BASIS,
++                      address, &target->table.error_int_status, 1);
++//    sdio_writeb(target->device, target->table.error_int_status, address,
++//                            &status);
 +      AR_DEBUG_ASSERT(status == 0);
 +}
 +
@@ -7552,10 +7725,13 @@
 +              element = allocateRegRequestElement(target);
 +              AR_DEBUG_ASSERT(element != NULL);
 +              FILL_REG_BUFFER(element, &endPoint->txCreditsAvailable[1], 1,
-+                                              TX_CREDIT_COUNTER_RESET_REG, 
endPointId);
++                              TX_CREDIT_COUNTER_RESET_REG, endPointId);
++              status = hif_rw(target->device, HIF_READ, HIF_FIXED_ADDRESS, 
HIF_BYTE_BASIS,
++                              address, &endPoint->txCreditsAvailable[1], 1);
++
 +              /* FIXME: async request? */
-+              sdio_writeb(target->device, endPoint->txCreditsAvailable[1],
-+                                      address, &status);
++//            sdio_writeb(target->device, endPoint->txCreditsAvailable[1],
++//                                    address, &status);
 +              if (status == 0) {
 +                      /* Enable the Tx credit counter interrupt so that we 
can get
 +                         the credits posted by the target */
@@ -7609,6 +7785,7 @@
 +      int status;
 +      u32 address;
 +      HTC_ENDPOINT *endPoint;
++      HTC_REG_REQUEST_ELEMENT *element;
 +
 +      endPoint = &target->endPoint[endPointId];
 +      AR_DEBUG_ASSERT(endPoint != NULL);
@@ -7619,19 +7796,30 @@
 +      address = getRegAddr(COUNTER_INT_STATUS_ENABLE_REG, ENDPOINT_UNUSED);
 +
 +      /* FIXME: async request? */
-+      sdio_writeb(target->device, ((target->endPoint[0].
-+                                                                
txCreditsIntrEnable << (4)) | (target->
-+                                                                              
                                                 endPoint
-+                                                                              
                                                 [1].
-+                                                                              
                                                 txCreditsIntrEnable
-+                                                                              
                                                 << (5)) |
-+                                                               
(target->endPoint[2].
-+                                                                
txCreditsIntrEnable << (6)) | (target->
-+                                                                              
                                                 endPoint
-+                                                                              
                                                 [3].
-+                                                                              
                                                 txCreditsIntrEnable
-+                                                                              
                                                 << (7)) |
-+                                                               0x0F), 
address, &status);
++      element = allocateRegRequestElement(target);
++      AR_DEBUG_ASSERT(element != NULL);
++      FILL_REG_BUFFER(element, NULL, 1, COUNTER_INT_STATUS_ENABLE_REG,
++                      (target->endPoint[0].txCreditsIntrEnable << (4)) |
++                      (target->endPoint[1].txCreditsIntrEnable << (5)) |
++                      (target->endPoint[2].txCreditsIntrEnable << (6)) |
++                      (target->endPoint[3].txCreditsIntrEnable << (7)) | 
0x0F);
++
++
++      status = hif_rw(target->device, HIF_WRITE, HIF_FIXED_ADDRESS, 
HIF_BYTE_BASIS,
++                      address, (u8 *)&((GET_REG_BUFFER(element))->offset), 1);
++
++      AR_DEBUG_ASSERT(status == 0);
++      if(status == 0) {
++              element->completionCB(element, status);
++      }
++#if 0
++      sdio_writeb(target->device, ((target->endPoint[0].txCreditsIntrEnable 
<< (4)) |
++                                   (target->endPoint[1].txCreditsIntrEnable 
<< (5)) |
++                                   (target->endPoint[2].txCreditsIntrEnable 
<< (6)) |
++                                   (target->endPoint[3].txCreditsIntrEnable 
<< (7)) |
++                                   0x0F),
++                  address, &status);
++#endif
 +      A_MUTEX_UNLOCK(&counterCS);
 +}
 +
@@ -7643,6 +7831,7 @@
 +      u32 address;
 +      HTC_ENDPOINT *endPoint;
 +      HTC_ENDPOINT_ID endPointId;
++      HTC_REG_REQUEST_ELEMENT *element;
 +      u8 counter_int_status;
 +      u8 update_credit_int_status;
 +
@@ -7671,6 +7860,23 @@
 +
 +      address = getRegAddr(COUNTER_INT_STATUS_DISABLE_REG, ENDPOINT_UNUSED);
 +      /* FIXME: async request? */
++      element = allocateRegRequestElement(target);
++      AR_DEBUG_ASSERT(element != NULL);
++      FILL_REG_BUFFER(element, NULL, 1,
++                      COUNTER_INT_STATUS_DISABLE_REG,
++                      (target->endPoint[0].txCreditsIntrEnable << (4)) |
++                      (target->endPoint[1].txCreditsIntrEnable << (5)) |
++                      (target->endPoint[2].txCreditsIntrEnable << (6)) |
++                      (target->endPoint[3].txCreditsIntrEnable << (7)) | 
0x0F);
++
++      status = hif_rw(target->device, HIF_WRITE, HIF_FIXED_ADDRESS, 
HIF_BYTE_BASIS,
++                      address, (u8 *)&((GET_REG_BUFFER(element))->offset), 1);
++
++      AR_DEBUG_ASSERT(status == 0);
++      if(status == 0) {
++              element->completionCB(element, status);
++      }
++#if 0
 +      sdio_writeb(target->device, ((target->endPoint[0].
 +                                    txCreditsIntrEnable << (4)) | 
(target->endPoint
 +                                                                   [1].
@@ -7684,6 +7890,7 @@
 +                                                                              
                 txCreditsIntrEnable
 +                                                                              
                 << (7)) |
 +                                   0x0F), address, &status);
++#endif
 +      A_MUTEX_UNLOCK(&counterCS);
 +}
 +
@@ -7730,11 +7937,15 @@
 +               * by the bus driver.
 +               */
 +              address = getRegAddr(INT_STATUS_REG, ENDPOINT_UNUSED);
-+              status =
-+                      sdio_memcpy_fromio(target->device,
-+                                         &target->table.host_int_status, 
address,
-+                                         24);
-+//            AR_DEBUG_ASSERT(status == 0);
++
++              status = hif_rw(target->device, HIF_READ, 
HIF_INCREMENTAL_ADDRESS, HIF_BYTE_BASIS,
++                              address, &target->table.host_int_status, 24);
++
++//            status =
++//                    sdio_memcpy_fromio(target->device,
++//                                       &target->table.host_int_status, 
address,
++//                                       24);
++              AR_DEBUG_ASSERT(status == 0);
 +              mailbox_int_status = target->table.host_int_status &
 +                      HOST_INT_STATUS_MBOX_DATA_MASK;
 +              counter--;
@@ -8206,8 +8417,8 @@
 Index: linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/htc/htc_recv.c
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/htc/htc_recv.c   
2007-12-11 02:30:20.000000000 +0100
-@@ -0,0 +1,197 @@
++++ linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/htc/htc_recv.c   
2007-12-11 21:54:22.000000000 +0100
+@@ -0,0 +1,205 @@
 +/*
 + * Copyright (c) 2004-2006 Atheros Communications Inc.
 + *
@@ -8291,6 +8502,7 @@
 +      int status;
 +      u32 paddedLength;
 +      u32 frameLength;
++      u32 block_mode;
 +      HTC_ENDPOINT_ID endPointId;
 +      HTC_QUEUE_ELEMENT *element;
 +      HTC_MBOX_BUFFER *mboxBuffer;
@@ -8343,7 +8555,7 @@
 +      AR_DEBUG_ASSERT((frameLength > 0) &&
 +                                      (frameLength <= HTC_MESSAGE_SIZE_MAX));
 +      AR_DEBUG_PRINTF(ATH_DEBUG_INF | ATH_DEBUG_RECV, ("Frame Length: %d\n",
-+                                                                              
                         frameLength));
++                                                       frameLength));
 +
 +      /* Adjust the length to be a multiple of block size if appropriate */
 +      paddedLength = (frameLength + (endPoint->blockSize - 1)) &
@@ -8356,32 +8568,39 @@
 +      element = removeFromMboxQueue(recvQueue);
 +      mboxBuffer = GET_MBOX_BUFFER(element);
 +      mboxBuffer->actualLength = paddedLength;
++      block_mode = (endPoint->blockSize > 1) ? HIF_BLOCK_BASIS : 
HIF_BYTE_BASIS;
 +
 +      /* FIXME: async request */
-+      status = sdio_memcpy_fromio(target->device, mboxBuffer->buffer,
-+                                                              
endPoint->address,
-+                                                              
mboxBuffer->actualLength);
++      status = hif_rw(target->device, HIF_READ, HIF_INCREMENTAL_ADDRESS, 
block_mode,
++                      endPoint->address, mboxBuffer->buffer, 
mboxBuffer->actualLength);
 +
++//    status = sdio_memcpy_fromio(target->device, mboxBuffer->buffer,
++//                                                            
endPoint->address,
++//                                                            
mboxBuffer->actualLength);
++
 +      if (status) {
 +              AR_DEBUG_PRINTF(ATH_DEBUG_ERR | ATH_DEBUG_RECV,
 +                                              ("Frame reception failed\n"));
 +              if (!IS_ELEMENT_FREE(element)) {
 +                      mboxBuffer->actualLength = 0;
 +                      FRAME_EVENT(eventInfo, mboxBuffer->buffer,
-+                                              mboxBuffer->bufferLength, 
mboxBuffer->actualLength,
-+                                              A_ECANCELED, 
mboxBuffer->cookie);
++                                  mboxBuffer->bufferLength, 
mboxBuffer->actualLength,
++                                  A_ECANCELED, mboxBuffer->cookie);
 +                      RECYCLE_DATA_REQUEST_ELEMENT(element);
 +                      dispatchEvent(target, endPointId, HTC_BUFFER_RECEIVED,
-+                                                &eventInfo);
++                                    &eventInfo);
 +                      AR_DEBUG_PRINTF(ATH_DEBUG_TRC | ATH_DEBUG_RECV,
-+                                                      ("htcReceiveFrame - 
Exit\n"));
++                                      ("htcReceiveFrame - Exit\n"));
 +              }
++
 +              return;
 +      }
++
 +      if (element->completionCB)
 +              element->completionCB(element, status);
++
 +      AR_DEBUG_PRINTF(ATH_DEBUG_TRC | ATH_DEBUG_RECV,
-+                                      ("htcReceiveFrame - Exit\n"));
++                      ("htcReceiveFrame - Exit\n"));
 +}
 +
 +u32 htcGetFrameLength(HTC_ENDPOINT * endPoint)
@@ -10390,8 +10609,8 @@
 Index: linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/include/hif.h
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/include/hif.h    
2007-12-11 02:30:20.000000000 +0100
-@@ -0,0 +1,79 @@
++++ linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/include/hif.h    
2007-12-11 18:05:40.000000000 +0100
+@@ -0,0 +1,75 @@
 +/*
 + * Copyright (c) 2004-2006 Atheros Communications Inc.
 + *
@@ -10410,8 +10629,8 @@
 + * HIF specific declarations and prototypes
 + */
 +
-+#ifndef _HIF_H_
-+#define _HIF_H_
++#ifndef _INCLUDE_HIF_H_
++#define _INCLUDE_HIF_H_
 +
 +/* Header files */
 +#include "../include/athdefs.h"
@@ -10430,10 +10649,6 @@
 +      int (*deviceResumeHandler) (struct sdio_func * func);
 +      int (*deviceWakeupHandler) (struct sdio_func * func);
 +      int (*rwCompletionHandler) (void *context, int status);
-+#ifdef CF
-+      int (*deviceInterruptDisabler) (struct sdio_func * func, u8 * callDsr);
-+      int (*deviceInterruptEnabler) (struct sdio_func * func);
-+#endif                                                        /* CF */
 +      int (*dsrHandler) (struct sdio_func * func);
 +};
 +
@@ -10470,7 +10685,7 @@
 +int
 + HIFUnMaskInterrupt(struct sdio_func *func);
 +
-+#endif                                                        /* _HIF_H_ */
++#endif                                                        /* 
_INCLUDE_HIF_H_ */
 Index: linux-2.6.22-atheros-ng/drivers/net/wireless/ar6k/include/host_version.h
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000




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

Reply via email to