All of lore.kernel.org
 help / color / mirror / Atom feed
From: 张自强 <jackzhang@superlink.com.cn>
To: <linuxppc-dev@ozlabs.org>
Subject: help
Date: Tue, 8 Jan 2008 15:04:47 +0800	[thread overview]
Message-ID: <20080108070940.00999DE290@ozlabs.org> (raw)
In-Reply-To: <mailman.230.1199775553.6908.linuxppc-dev@ozlabs.org>

Help

-----=D3=CA=BC=FE=D4=AD=BC=FE-----
=B7=A2=BC=FE=C8=CB: =
linuxppc-dev-bounces+jackzhang=3Dsuperlink.com.cn@ozlabs.org
[mailto:linuxppc-dev-bounces+jackzhang=3Dsuperlink.com.cn@ozlabs.org] =
=B4=FA=B1=ED
linuxppc-dev-request@ozlabs.org
=B7=A2=CB=CD=CA=B1=BC=E4: 2008=C4=EA1=D4=C28=C8=D5 14:59
=CA=D5=BC=FE=C8=CB: linuxppc-dev@ozlabs.org
=D6=F7=CC=E2: Linuxppc-dev Digest, Vol 41, Issue 56

Send Linuxppc-dev mailing list submissions to
	linuxppc-dev@ozlabs.org

To subscribe or unsubscribe via the World Wide Web, visit
	https://ozlabs.org/mailman/listinfo/linuxppc-dev
or, via email, send a message with subject or body 'help' to
	linuxppc-dev-request@ozlabs.org

You can reach the person managing the list at
	linuxppc-dev-owner@ozlabs.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Linuxppc-dev digest..."


Today's Topics:

   1. Re: [PATCH] Fix remainder calculating bug in single floating
      point	division (Kumar Gala)
   2. Re: [PATCH] Fix carry bug in 128-bit unsigned integer adding
      (Kumar Gala)
   3. Re: [PATCH] Hwmon for Taco (Sean MacLennan)
   4. Re: [PATCH] i2c-ibm_iic driver - new patch (Stephen Rothwell)
   5. Re: [PATCH] Hwmon for Taco (Grant Likely)


----------------------------------------------------------------------

Message: 1
Date: Tue, 8 Jan 2008 00:22:25 -0600
From: Kumar Gala <galak@kernel.crashing.org>
Subject: Re: [PATCH] Fix remainder calculating bug in single floating
	point	division
To: Liu Yu <Yu.Liu@freescale.com>
Cc: linuxppc-dev@ozlabs.org
Message-ID: <CC561FA6-0590-4BC0-B42B-7EE1B379CE8E@kernel.crashing.org>
Content-Type: text/plain; charset=3DUS-ASCII; format=3Dflowed; =
delsp=3Dyes


On Jan 6, 2008, at 8:26 AM, Liu Yu wrote:

> This bug exists in the emulation of floating point division for =20
> powerpc.
>
> The original code cannot count the remainder correctly.
> I can provide a test case to trigger this bug.
> When use fdiv to count 1.1754941e-38f / 0.9999999f,
> the result is expected to be 1.175494e-38f,
> but we will get 1.174921e-38f in the original case.
>
> Comments are always welcomed!

can you provide the test case that shows the error.

- k



------------------------------

Message: 2
Date: Tue, 8 Jan 2008 00:27:59 -0600
From: Kumar Gala <galak@kernel.crashing.org>
Subject: Re: [PATCH] Fix carry bug in 128-bit unsigned integer adding
To: Liu Yu <Yu.Liu@freescale.com>
Cc: linuxppc-dev@ozlabs.org
Message-ID: <7040EDB2-7E89-4BBD-A4FC-50E168F9286F@kernel.crashing.org>
Content-Type: text/plain; charset=3DUS-ASCII; format=3Dflowed; =
delsp=3Dyes


On Jan 6, 2008, at 8:26 AM, Liu Yu wrote:

> This bug exists in math emulation for powerpc.
> The macro define are mainly used by multiplication.
>
> When adding two unsigned operands ( r =3D x + y ),
> the carry bit can be counted by whether r is less than x.
> However, when adding three unsigned operands, this method does not =20
> work.
>
> The original code below uses this method to count carry,
> it apparently overlook the case of three operands.
> Assume all the operands is 32-bit wide,
> ( r =3D x + y + last_carry , x =3D 0, y =3D 0xffffffff, last_carry =3D =
1),
> then r is no less than x but it actually gets a carry.
>
> I tried to fix this bug, but this patch seems not that pretty.
> Are there any better ideas?
> Comments are always welcomed!

take a look at how include/math-emu/op-4.h implements __FP_FRAC_ADD_4 =20
& __FP_FRAC_SUB_4.  Will that fix the bug, if so we should make the =20
code match how its done there.

- k



------------------------------

Message: 3
Date: Tue, 08 Jan 2008 01:30:00 -0500
From: Sean MacLennan <smaclennan@pikatech.com>
Subject: Re: [PATCH] Hwmon for Taco
To: benh@kernel.crashing.org
Cc: linuxppc-dev@ozlabs.org
Message-ID: <47831868.3030309@pikatech.com>
Content-Type: text/plain; charset=3DISO-8859-1; format=3Dflowed

Benjamin Herrenschmidt wrote:
> That should be in the device-tree...
>
> Cheers,
> Ben.
>
>  =20

Now in the device tree. The name of the file has changed.

Cheers,
    Sean

diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index a0445be..1f89186 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -57,6 +57,16 @@ config SENSORS_ABITUGURU3
       This driver can also be built as a module.  If so, the module
       will be called abituguru3.
=20
+config SENSORS_AD7414
+    tristate "Analog Devices AD7414"
+    depends on I2C && EXPERIMENTAL
+    help
+      If you say yes here you get support for the Analog Devices
+      AD7414 temperature monitoring chip.
+
+      This driver can also be built as a module. If so, the module
+      will be called ad7414.
+
 config SENSORS_AD7418
     tristate "Analog Devices AD7416, AD7417 and AD7418"
     depends on I2C && EXPERIMENTAL
@@ -763,4 +773,13 @@ config HWMON_DEBUG_CHIP
       a problem with I2C support and want to see more of what is going
       on.
=20
+config PIKA_DTM
+    tristate "PIKA DTM (Dynamic Thermal Management)"
+    depends on HWMON && WARP
+    select SENSORS_AD7414
+    default y
+    help
+      Say Y here if you have a PIKA Warp(tm) Appliance. This driver is
+      required for the DTM to work properly.
+
 endif # HWMON
diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
index 55595f6..0c6ee71 100644
--- a/drivers/hwmon/Makefile
+++ b/drivers/hwmon/Makefile
@@ -15,6 +15,7 @@ obj-$(CONFIG_SENSORS_W83791D)    +=3D w83791d.o
=20
 obj-$(CONFIG_SENSORS_ABITUGURU)    +=3D abituguru.o
 obj-$(CONFIG_SENSORS_ABITUGURU3)+=3D abituguru3.o
+obj-$(CONFIG_SENSORS_AD7414)    +=3D ad7414.o
 obj-$(CONFIG_SENSORS_AD7418)    +=3D ad7418.o
 obj-$(CONFIG_SENSORS_ADM1021)    +=3D adm1021.o
 obj-$(CONFIG_SENSORS_ADM1025)    +=3D adm1025.o
@@ -69,7 +70,8 @@ obj-$(CONFIG_SENSORS_VT8231)    +=3D vt8231.o
 obj-$(CONFIG_SENSORS_W83627EHF)    +=3D w83627ehf.o
 obj-$(CONFIG_SENSORS_W83L785TS)    +=3D w83l785ts.o
=20
+obj-$(CONFIG_PIKA_DTM)        +=3D pika-dtm.o
+
 ifeq ($(CONFIG_HWMON_DEBUG_CHIP),y)
 EXTRA_CFLAGS +=3D -DDEBUG
 endif
-
--- /dev/null    2005-11-20 22:22:37.000000000 -0500
+++ drivers/hwmon/pika-dtm.c    2008-01-08 01:23:32.000000000 -0500
@@ -0,0 +1,87 @@
+/*
+ *  drivers/hwmon/pika-dtm.c
+ *
+ *  Overview: On the Warp, the fpga controls the fan. This provides
+ *  the temperature to the fpga.
+ *
+ *  Copyright (c) 2008 PIKA Technologies
+ *    Sean MacLennan <smaclennan@pikatech.com>
+ *
+ *  This program is free software; you can redistribute     it and/or=20
modify it
+ *  under  the terms of     the GNU General  Public License as=20
published by the
+ *  Free Software Foundation;  either version 2 of the    License, or=20
(at your
+ *  option) any later version.
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/kthread.h>
+#include <linux/io.h>
+#include <linux/of_platform.h>
+
+
+extern int ad7414_get_temp(void);
+
+static unsigned __iomem *dtm_fpga;
+static struct task_struct *dtm_thread;
+
+
+static int pika_dtm_thread(void *arg)
+{
+    while(!kthread_should_stop()) {
+        int temp =3D ad7414_get_temp();
+
+        // Write to FPGA
+        out_be32(dtm_fpga, temp);
+
+        set_current_state(TASK_INTERRUPTIBLE);
+        schedule_timeout(HZ);
+    }
+
+    return 0;
+}
+
+
+int __init pika_dtm_init(void)
+{
+    struct device_node *np;
+    struct resource res;
+
+    if((np =3D of_find_compatible_node(NULL, NULL, "pika,fpga")) =3D=3D =
NULL) {
+        printk(KERN_ERR __FILE__ ": Unable to find FPGA\n");
+        return -ENOENT;
+    }
+
+    /* We do not call of_iomap here since it would map in the entire
+     * fpga space, which is overkill for 4 bytes.
+     */
+    if(of_address_to_resource(np, 0, &res) ||
+       (dtm_fpga =3D ioremap(res.start + 0x20, 4)) =3D=3D NULL) {
+        printk(KERN_ERR __FILE__ ": Unable to map FPGA\n");
+        return -ENOENT;
+    }
+
+    dtm_thread =3D kthread_run(pika_dtm_thread, NULL, "pika-dtm");
+
+    if(IS_ERR(dtm_thread)) {
+        iounmap(dtm_fpga);
+        printk(KERN_ERR __FILE__ ": Unable to start PIKA DTM =
thread\n");
+        return PTR_ERR(dtm_thread);
+    }
+
+    return 0;
+}
+module_init(pika_dtm_init);
+
+
+void __exit pika_dtm_exit(void)
+{
+    kthread_stop(dtm_thread);
+    iounmap(dtm_fpga);
+}
+module_exit(pika_dtm_exit);
+
+
+MODULE_DESCRIPTION("PIKA DTM driver");
+MODULE_AUTHOR("Sean MacLennan");
+MODULE_LICENSE("GPL");
--- /dev/null    2005-11-20 22:22:37.000000000 -0500
+++ drivers/hwmon/ad7414.c    2008-01-05 20:36:06.000000000 -0500
@@ -0,0 +1,296 @@
+/*
+ * An hwmon driver for the Analog Devices AD7414
+ *
+ * Copyright 2006 Stefan Roese <sr@denx.de>, DENX Software Engineering
+ *
+ * Based on ad7418.c
+ * Copyright 2006 Tower Technologies, Alessandro Zummo=20
<a.zummo@towertech.it>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#include <linux/module.h>
+#include <linux/jiffies.h>
+#include <linux/i2c.h>
+#include <linux/hwmon.h>
+#include <linux/err.h>
+#include <linux/mutex.h>
+#include <linux/delay.h>
+
+
+#define DRV_VERSION "0.2"
+
+/* straight from the datasheet */
+#define AD7414_TEMP_MIN (-55000)
+#define AD7414_TEMP_MAX 125000
+
+/* Addresses to scan */
+static unsigned short normal_i2c[] =3D { 0x48, 0x4a, I2C_CLIENT_END };
+
+/* Insmod parameters */
+I2C_CLIENT_INSMOD;
+
+/* AD7414 registers */
+#define AD7414_REG_TEMP        0x00
+#define AD7414_REG_CONF        0x01
+#define AD7414_REG_T_HIGH    0x02
+#define AD7414_REG_T_LOW    0x03
+
+struct ad7414_data {
+    struct i2c_client    client;
+    struct device    *dev;
+    struct mutex        lock;
+    char            valid;        /* !=3D0 if following fields are =
valid */
+    unsigned long        last_updated;    /* In jiffies */
+    u16            temp_input;    /* Register values */
+    u8            temp_max;
+    u8            temp_min;
+    u8            temp_alert;
+    u8            temp_max_flag;
+    u8            temp_min_flag;
+};
+
+static int ad7414_attach_adapter(struct i2c_adapter *adapter);
+static int ad7414_detect(struct i2c_adapter *adapter, int address, int=20
kind);
+static int ad7414_detach_client(struct i2c_client *client);
+
+static struct i2c_driver ad7414_driver =3D {
+    .driver =3D {
+        .name    =3D "ad7414",
+    },
+    .attach_adapter    =3D ad7414_attach_adapter,
+    .detach_client    =3D ad7414_detach_client,
+};
+
+/*
+ * TEMP: 0.001C/bit (-55C to +125C)
+ * REG: (0.5C/bit, two's complement) << 7
+ */
+static inline int AD7414_TEMP_FROM_REG(u16 reg)
+{
+    /* use integer division instead of equivalent right shift to
+     * guarantee arithmetic shift and preserve the sign
+     */
+    return ((s16)reg / 128) * 500;
+}
+
+/* All registers are word-sized, except for the configuration =
registers.
+ * AD7414 uses a high-byte first convention, which is exactly opposite =
to
+ * the usual practice.
+ */
+static int ad7414_read(struct i2c_client *client, u8 reg)
+{
+    if (reg =3D=3D AD7414_REG_TEMP)
+        return swab16(i2c_smbus_read_word_data(client, reg));
+    else
+        return i2c_smbus_read_byte_data(client, reg);
+}
+
+static int ad7414_write(struct i2c_client *client, u8 reg, u16 value)
+{
+    return i2c_smbus_write_byte_data(client, reg, value);
+}
+
+/* PIKA Taco - we need to access the temperature in kernel mode. As a
+ * hack we store the device here. This works because we only have one
+ * ad7414 chip.
+ */
+static struct device *ad7414_dev;
+
+static void ad7414_init_client(struct i2c_client *client)
+{
+    /* TODO: anything to do here??? */
+    ad7414_dev =3D &client->dev;
+}
+
+static struct ad7414_data *ad7414_update_device(struct device *dev)
+{
+    struct i2c_client *client =3D to_i2c_client(dev);
+    struct ad7414_data *data =3D i2c_get_clientdata(client);
+
+    mutex_lock(&data->lock);
+
+    if (time_after(jiffies, data->last_updated + HZ + HZ / 2)
+        || !data->valid) {
+        dev_dbg(&client->dev, "starting ad7414 update\n");
+
+        data->temp_input =3D ad7414_read(client, AD7414_REG_TEMP);
+        data->temp_alert =3D (data->temp_input >> 5) & 0x01;
+        data->temp_max_flag =3D (data->temp_input >> 4) & 0x01;
+        data->temp_min_flag =3D (data->temp_input >> 3) & 0x01;
+        data->temp_max =3D ad7414_read(client, AD7414_REG_T_HIGH);
+        data->temp_min =3D ad7414_read(client, AD7414_REG_T_LOW);
+
+        data->last_updated =3D jiffies;
+        data->valid =3D 1;
+    }
+
+    mutex_unlock(&data->lock);
+
+    return data;
+}
+
+int ad7414_get_temp(void)
+{
+    if(ad7414_dev) {
+        struct ad7414_data *data =3D ad7414_update_device(ad7414_dev);
+        return data->temp_input;
+    } else
+        return 0x1f4; // +125
+}
+EXPORT_SYMBOL(ad7414_get_temp);
+
+#define show(value) \
+static ssize_t show_##value(struct device *dev, struct device_attribute =

*attr, char *buf)        \
+{                                    \
+    struct ad7414_data *data =3D ad7414_update_device(dev);        \
+    return sprintf(buf, "%d\n", AD7414_TEMP_FROM_REG(data->value));    =
\
+}
+show(temp_input);
+
+#define show_8(value)    \
+static ssize_t show_##value(struct device *dev, struct device_attribute =

*attr, char *buf)        \
+{                                \
+    struct ad7414_data *data =3D ad7414_update_device(dev);    \
+    return sprintf(buf, "%d\n", data->value);        \
+}
+show_8(temp_max);
+show_8(temp_min);
+show_8(temp_alert);
+show_8(temp_max_flag);
+show_8(temp_min_flag);
+
+#define set(value, reg)    \
+static ssize_t set_##value(struct device *dev, struct device_attribute=20
*attr, const char *buf, size_t count)    \
+{                                \
+    struct i2c_client *client =3D to_i2c_client(dev);        \
+    struct ad7414_data *data =3D i2c_get_clientdata(client);    \
+    int temp =3D simple_strtoul(buf, NULL, 10);        \
+                                \
+    mutex_lock(&data->lock);                \
+    data->value =3D temp;                    \
+    ad7414_write(client, reg, data->value);            \
+    mutex_unlock(&data->lock);                \
+    return count;                        \
+}
+set(temp_max, AD7414_REG_T_HIGH);
+set(temp_min, AD7414_REG_T_LOW);
+
+static DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO, show_temp_max,=20
set_temp_max);
+static DEVICE_ATTR(temp1_min, S_IWUSR | S_IRUGO, show_temp_min,=20
set_temp_min);
+static DEVICE_ATTR(temp1_input, S_IRUGO, show_temp_input, NULL);
+static DEVICE_ATTR(temp1_alert, S_IRUGO, show_temp_alert, NULL);
+static DEVICE_ATTR(temp1_max_flag, S_IRUGO, show_temp_max_flag, NULL);
+static DEVICE_ATTR(temp1_min_flag, S_IRUGO, show_temp_min_flag, NULL);
+
+static int ad7414_attach_adapter(struct i2c_adapter *adapter)
+{
+    if (!(adapter->class & I2C_CLASS_HWMON))
+        return 0;
+    return i2c_probe(adapter, &addr_data, ad7414_detect);
+}
+
+static struct attribute *ad7414_attributes[] =3D {
+    &dev_attr_temp1_input.attr,
+    &dev_attr_temp1_max.attr,
+    &dev_attr_temp1_min.attr,
+    &dev_attr_temp1_alert.attr,
+    &dev_attr_temp1_max_flag.attr,
+    &dev_attr_temp1_min_flag.attr,
+    NULL
+};
+
+static const struct attribute_group ad7414_group =3D {
+    .attrs =3D ad7414_attributes,
+};
+
+static int ad7414_detect(struct i2c_adapter *adapter, int address, int=20
kind)
+{
+    struct i2c_client *client;
+    struct ad7414_data *data;
+    int err =3D 0;
+
+    if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA |
+                    I2C_FUNC_SMBUS_WORD_DATA))
+        goto exit;
+
+    if (!(data =3D kzalloc(sizeof(struct ad7414_data), GFP_KERNEL))) {
+        err =3D -ENOMEM;
+        goto exit;
+    }
+
+    client =3D &data->client;
+    client->addr =3D address;
+    client->adapter =3D adapter;
+    client->driver =3D &ad7414_driver;
+    client->flags =3D 0;
+
+    i2c_set_clientdata(client, data);
+
+    mutex_init(&data->lock);
+
+    /* TODO: not testing for AD7414 done yet... */
+
+    strlcpy(client->name, ad7414_driver.driver.name, I2C_NAME_SIZE);
+
+    if ((err =3D i2c_attach_client(client)))
+        goto exit_free;
+
+    dev_info(&client->dev, "chip found, driver version " DRV_VERSION =
"\n");
+
+    /* Initialize the AD7414 chip */
+    ad7414_init_client(client);
+
+    /* Register sysfs hooks */
+    if ((err =3D sysfs_create_group(&client->dev.kobj, &ad7414_group)))
+        goto exit_detach;
+
+    data->dev =3D hwmon_device_register(&client->dev);
+    if (IS_ERR(data->dev)) {
+        err =3D PTR_ERR(data->dev);
+        goto exit_remove;
+    }
+
+    return 0;
+
+exit_remove:
+    sysfs_remove_group(&client->dev.kobj, &ad7414_group);
+exit_detach:
+    i2c_detach_client(client);
+exit_free:
+    kfree(data);
+exit:
+    return err;
+}
+
+static int ad7414_detach_client(struct i2c_client *client)
+{
+    struct ad7414_data *data =3D i2c_get_clientdata(client);
+    ad7414_dev =3D NULL;
+    hwmon_device_unregister(data->dev);
+    sysfs_remove_group(&client->dev.kobj, &ad7414_group);
+    i2c_detach_client(client);
+    kfree(data);
+    return 0;
+}
+
+static int __init ad7414_init(void)
+{
+    return i2c_add_driver(&ad7414_driver);
+}
+
+static void __exit ad7414_exit(void)
+{
+    i2c_del_driver(&ad7414_driver);
+}
+
+MODULE_AUTHOR("Stefan Roese <sr@denx.de>");
+MODULE_DESCRIPTION("AD7414 driver");
+MODULE_LICENSE("GPL");
+MODULE_VERSION(DRV_VERSION);
+
+module_init(ad7414_init);
+module_exit(ad7414_exit);




------------------------------

Message: 4
Date: Tue, 8 Jan 2008 17:36:36 +1100
From: Stephen Rothwell <sfr@canb.auug.org.au>
Subject: Re: [PATCH] i2c-ibm_iic driver - new patch
To: Sean MacLennan <smaclennan@pikatech.com>
Cc: linuxppc-dev@ozlabs.org, Stefan Roese <sr@denx.de>,	Arnd Bergmann
	<arnd@arndb.de>
Message-ID: <20080108173636.73db1623.sfr@canb.auug.org.au>
Content-Type: text/plain; charset=3D"us-ascii"

On Tue, 08 Jan 2008 00:56:27 -0500 Sean MacLennan =
<smaclennan@pikatech.com>
wrote:
>
> Stephen Rothwell wrote:
> >
> > On Mon, 07 Jan 2008 21:03:12 -0500 Sean MacLennan
<smaclennan@pikatech.com> wrote:
> >  =20
> > Please don't post patches as attachments.
> =20
> Ok.

Unfortunately, you are using thunderbird and so the patch is now =
wrapped.
There is a workaround, see Documentation/email-clients.txt.

> > Please split the assignments from the tests.  Here and elsewhere.
> >  =20
> I made the changes in my code. I am trying to leave the original code =
as=20
> much as possible.

Thats all we ask.

> >> +	} else {
> >> +		if (dev->irq !=3D NO_IRQ){
> >> +		    iic_interrupt_mode(dev, 0);
> >> +		    free_irq(dev->irq, dev);
> >> +		}
> >> +		iounmap(dev->vaddr);
> >> +		kfree(dev);
> >>    =20
> >
> > Should these last two be after the below brace?
> >
> >  =20
> I'm not really qualified to answer, but I will anyway ;) I assume the=20
> original author is basically saying if he cannot delete the adapter, =
it=20
> is unsafe to free the memory since the i2c code may still use it. If I =

> have read that right, then I agree.

OK, I can see that this is a "that should not happen" condition.

> +    if (iic_force_poll)
> +        dev->irq =3D NO_IRQ;
> +    else if ((dev->irq =3D irq_of_parse_and_map(np, 0)) =3D=3D =
NO_IRQ)

You missed this one.

Overall looks better, except all your indentation is now 4 spaces. We =
use
a TAB character for each level of indentation and you should be able to
set your editor to *display* the TABs as 4 places if that is what you =
like.

--=20
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url :
http://ozlabs.org/pipermail/linuxppc-dev/attachments/20080108/3c5fd612/at=
tac
hment-0001.pgp=20

------------------------------

Message: 5
Date: Mon, 7 Jan 2008 23:59:09 -0700
From: "Grant Likely" <grant.likely@secretlab.ca>
Subject: Re: [PATCH] Hwmon for Taco
To: "Sean MacLennan" <smaclennan@pikatech.com>
Cc: linuxppc-dev@ozlabs.org
Message-ID:
	<fa686aa40801072259w63899e74y45d55bd5e9844b68@mail.gmail.com>
Content-Type: text/plain; charset=3DISO-8859-1

On 1/7/08, Sean MacLennan <smaclennan@pikatech.com> wrote:
> diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
> index a0445be..1f89186 100644
> --- a/drivers/hwmon/Kconfig
> +++ b/drivers/hwmon/Kconfig
> @@ -57,6 +57,16 @@ config SENSORS_ABITUGURU3
>        This driver can also be built as a module.  If so, the module
>        will be called abituguru3.
>
> +config SENSORS_AD7414
> +    tristate "Analog Devices AD7414"
> +    depends on I2C && EXPERIMENTAL
> +    help
> +      If you say yes here you get support for the Analog Devices
> +      AD7414 temperature monitoring chip.
> +
> +      This driver can also be built as a module. If so, the module
> +      will be called ad7414.
> +
>  config SENSORS_AD7418
>      tristate "Analog Devices AD7416, AD7417 and AD7418"
>      depends on I2C && EXPERIMENTAL
> @@ -763,4 +773,13 @@ config HWMON_DEBUG_CHIP
>        a problem with I2C support and want to see more of what is =
going
>        on.
>
> +config PIKA_DTM
> +    tristate "PIKA DTM (Dynamic Thermal Management)"
> +    depends on HWMON && WARP
> +    select SENSORS_AD7414

select is dangerous because it bypasses dependency checking.  Make it
'depends on' instead.

> +    default y
> +    help
> +      Say Y here if you have a PIKA Warp(tm) Appliance. This driver =
is
> +      required for the DTM to work properly.
> +

This patch should be split in 2; one for the AD7414 driver and one for
the thermal management driver.

>  endif # HWMON
> diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
> index 55595f6..0c6ee71 100644
> --- a/drivers/hwmon/Makefile
> +++ b/drivers/hwmon/Makefile
> @@ -15,6 +15,7 @@ obj-$(CONFIG_SENSORS_W83791D)    +=3D w83791d.o
>
>  obj-$(CONFIG_SENSORS_ABITUGURU)    +=3D abituguru.o
>  obj-$(CONFIG_SENSORS_ABITUGURU3)+=3D abituguru3.o
> +obj-$(CONFIG_SENSORS_AD7414)    +=3D ad7414.o
>  obj-$(CONFIG_SENSORS_AD7418)    +=3D ad7418.o
>  obj-$(CONFIG_SENSORS_ADM1021)    +=3D adm1021.o
>  obj-$(CONFIG_SENSORS_ADM1025)    +=3D adm1025.o
> @@ -69,7 +70,8 @@ obj-$(CONFIG_SENSORS_VT8231)    +=3D vt8231.o
>  obj-$(CONFIG_SENSORS_W83627EHF)    +=3D w83627ehf.o
>  obj-$(CONFIG_SENSORS_W83L785TS)    +=3D w83l785ts.o
>
> +obj-$(CONFIG_PIKA_DTM)        +=3D pika-dtm.o
> +
>  ifeq ($(CONFIG_HWMON_DEBUG_CHIP),y)
>  EXTRA_CFLAGS +=3D -DDEBUG
>  endif
> -
> --- /dev/null    2005-11-20 22:22:37.000000000 -0500
> +++ drivers/hwmon/pika-dtm.c    2008-01-08 01:23:32.000000000 -0500

This is *very* board specific and not very complex a driver.  It
should probably live with the platform code somewhere in
arch/powerpc/platforms.  You can use the machine_device_initcall()
hook to kick off the thread.

> @@ -0,0 +1,87 @@
> +/*
> + *  drivers/hwmon/pika-dtm.c
> + *
> + *  Overview: On the Warp, the fpga controls the fan. This provides
> + *  the temperature to the fpga.
> + *
> + *  Copyright (c) 2008 PIKA Technologies
> + *    Sean MacLennan <smaclennan@pikatech.com>
> + *
> + *  This program is free software; you can redistribute     it and/or
> modify it
> + *  under  the terms of     the GNU General  Public License as
> published by the
> + *  Free Software Foundation;  either version 2 of the    License, or
> (at your
> + *  option) any later version.

Your mailer chewed up the patch here (line wrap).

> + *
> + */
> +
> +#include <linux/module.h>
> +#include <linux/kthread.h>
> +#include <linux/io.h>
> +#include <linux/of_platform.h>
> +
> +
> +extern int ad7414_get_temp(void);

Bad!  Function decls must be in common header files.

> +
> +static unsigned __iomem *dtm_fpga;
> +static struct task_struct *dtm_thread;
> +
> +
> +static int pika_dtm_thread(void *arg)
> +{
> +    while(!kthread_should_stop()) {
> +        int temp =3D ad7414_get_temp();
> +
> +        // Write to FPGA

Style; use /* */, not //

> +        out_be32(dtm_fpga, temp);
> +
> +        set_current_state(TASK_INTERRUPTIBLE);
> +        schedule_timeout(HZ);
> +    }
> +
> +    return 0;
> +}
> +
> +
> +int __init pika_dtm_init(void)
> +{
> +    struct device_node *np;
> +    struct resource res;
> +
> +    if((np =3D of_find_compatible_node(NULL, NULL, "pika,fpga")) =
=3D=3D NULL) {
> +        printk(KERN_ERR __FILE__ ": Unable to find FPGA\n");
> +        return -ENOENT;
> +    }
> +
> +    /* We do not call of_iomap here since it would map in the entire
> +     * fpga space, which is overkill for 4 bytes.
> +     */

iomapping is not expensive; just map the whole space (it's going to
map a minimum 4k page anyway).  The code will be easier to read if you
just use of_iomap().

> +    if(of_address_to_resource(np, 0, &res) ||
> +       (dtm_fpga =3D ioremap(res.start + 0x20, 4)) =3D=3D NULL) {
> +        printk(KERN_ERR __FILE__ ": Unable to map FPGA\n");
> +        return -ENOENT;
> +    }
> +
> +    dtm_thread =3D kthread_run(pika_dtm_thread, NULL, "pika-dtm");
> +
> +    if(IS_ERR(dtm_thread)) {
> +        iounmap(dtm_fpga);
> +        printk(KERN_ERR __FILE__ ": Unable to start PIKA DTM =
thread\n");
> +        return PTR_ERR(dtm_thread);
> +    }
> +
> +    return 0;
> +}
> +module_init(pika_dtm_init);
> +
> +
> +void __exit pika_dtm_exit(void)
> +{
> +    kthread_stop(dtm_thread);
> +    iounmap(dtm_fpga);
> +}
> +module_exit(pika_dtm_exit);
> +
> +
> +MODULE_DESCRIPTION("PIKA DTM driver");
> +MODULE_AUTHOR("Sean MacLennan");
> +MODULE_LICENSE("GPL");
> --- /dev/null    2005-11-20 22:22:37.000000000 -0500
> +++ drivers/hwmon/ad7414.c    2008-01-05 20:36:06.000000000 -0500
> @@ -0,0 +1,296 @@
> +/*
> + * An hwmon driver for the Analog Devices AD7414
> + *
> + * Copyright 2006 Stefan Roese <sr@denx.de>, DENX Software =
Engineering
> + *
> + * Based on ad7418.c
> + * Copyright 2006 Tower Technologies, Alessandro Zummo
> <a.zummo@towertech.it>
> + *
> + * This program is free software; you can redistribute it and/or =
modify
> + * it under the terms of the GNU General Public License as published =
by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + */
> +
> +#include <linux/module.h>
> +#include <linux/jiffies.h>
> +#include <linux/i2c.h>
> +#include <linux/hwmon.h>
> +#include <linux/err.h>
> +#include <linux/mutex.h>
> +#include <linux/delay.h>
> +
> +
> +#define DRV_VERSION "0.2"
> +
> +/* straight from the datasheet */
> +#define AD7414_TEMP_MIN (-55000)
> +#define AD7414_TEMP_MAX 125000
> +
> +/* Addresses to scan */
> +static unsigned short normal_i2c[] =3D { 0x48, 0x4a, I2C_CLIENT_END =
};
> +
> +/* Insmod parameters */
> +I2C_CLIENT_INSMOD;
> +
> +/* AD7414 registers */
> +#define AD7414_REG_TEMP        0x00
> +#define AD7414_REG_CONF        0x01
> +#define AD7414_REG_T_HIGH    0x02
> +#define AD7414_REG_T_LOW    0x03
> +
> +struct ad7414_data {
> +    struct i2c_client    client;
> +    struct device    *dev;
> +    struct mutex        lock;
> +    char            valid;        /* !=3D0 if following fields are =
valid */
> +    unsigned long        last_updated;    /* In jiffies */
> +    u16            temp_input;    /* Register values */
> +    u8            temp_max;
> +    u8            temp_min;
> +    u8            temp_alert;
> +    u8            temp_max_flag;
> +    u8            temp_min_flag;
> +};
> +
> +static int ad7414_attach_adapter(struct i2c_adapter *adapter);
> +static int ad7414_detect(struct i2c_adapter *adapter, int address, =
int
> kind);
> +static int ad7414_detach_client(struct i2c_client *client);
> +
> +static struct i2c_driver ad7414_driver =3D {
> +    .driver =3D {
> +        .name    =3D "ad7414",
> +    },
> +    .attach_adapter    =3D ad7414_attach_adapter,
> +    .detach_client    =3D ad7414_detach_client,
> +};
> +
> +/*
> + * TEMP: 0.001C/bit (-55C to +125C)
> + * REG: (0.5C/bit, two's complement) << 7
> + */
> +static inline int AD7414_TEMP_FROM_REG(u16 reg)
> +{
> +    /* use integer division instead of equivalent right shift to
> +     * guarantee arithmetic shift and preserve the sign
> +     */
> +    return ((s16)reg / 128) * 500;
> +}
> +
> +/* All registers are word-sized, except for the configuration =
registers.
> + * AD7414 uses a high-byte first convention, which is exactly =
opposite to
> + * the usual practice.
> + */
> +static int ad7414_read(struct i2c_client *client, u8 reg)
> +{
> +    if (reg =3D=3D AD7414_REG_TEMP)
> +        return swab16(i2c_smbus_read_word_data(client, reg));
> +    else
> +        return i2c_smbus_read_byte_data(client, reg);
> +}
> +
> +static int ad7414_write(struct i2c_client *client, u8 reg, u16 value)
> +{
> +    return i2c_smbus_write_byte_data(client, reg, value);
> +}
> +
> +/* PIKA Taco - we need to access the temperature in kernel mode. As a
> + * hack we store the device here. This works because we only have one
> + * ad7414 chip.
> + */
> +static struct device *ad7414_dev;

Can you use a list_head instead?  That would allow multiple instances.

This driver shouldn't contain board specific code.

> +
> +static void ad7414_init_client(struct i2c_client *client)
> +{
> +    /* TODO: anything to do here??? */
> +    ad7414_dev =3D &client->dev;

ick.

> +}
> +
> +static struct ad7414_data *ad7414_update_device(struct device *dev)
> +{
> +    struct i2c_client *client =3D to_i2c_client(dev);
> +    struct ad7414_data *data =3D i2c_get_clientdata(client);
> +
> +    mutex_lock(&data->lock);
> +
> +    if (time_after(jiffies, data->last_updated + HZ + HZ / 2)
> +        || !data->valid) {
> +        dev_dbg(&client->dev, "starting ad7414 update\n");
> +
> +        data->temp_input =3D ad7414_read(client, AD7414_REG_TEMP);
> +        data->temp_alert =3D (data->temp_input >> 5) & 0x01;
> +        data->temp_max_flag =3D (data->temp_input >> 4) & 0x01;
> +        data->temp_min_flag =3D (data->temp_input >> 3) & 0x01;
> +        data->temp_max =3D ad7414_read(client, AD7414_REG_T_HIGH);
> +        data->temp_min =3D ad7414_read(client, AD7414_REG_T_LOW);
> +
> +        data->last_updated =3D jiffies;
> +        data->valid =3D 1;
> +    }
> +
> +    mutex_unlock(&data->lock);
> +
> +    return data;
> +}
> +
> +int ad7414_get_temp(void)

maybe ad7414_get_temp(int index)?  Would allow for multiple instances.

> +{
> +    if(ad7414_dev) {
> +        struct ad7414_data *data =3D =
ad7414_update_device(ad7414_dev);
> +        return data->temp_input;
> +    } else
> +        return 0x1f4; // +125

Style; c++ comment

Cheers,
g.

--=20
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.


------------------------------

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

End of Linuxppc-dev Digest, Vol 41, Issue 56
********************************************

       reply	other threads:[~2008-01-08  7:09 UTC|newest]

Thread overview: 250+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <mailman.230.1199775553.6908.linuxppc-dev@ozlabs.org>
2008-01-08  7:04 ` 张自强 [this message]
2026-03-22  9:07 Help D
     [not found] <mailman.1444.1742249864.725.u-boot@lists.denx.de>
2025-03-18 16:49 ` help vijays
  -- strict thread matches above, loose matches on Subject: below --
2025-01-15  6:24 HELP Ganesh Mahajan
2023-06-12  9:33 help stanzgy
2023-06-12  9:36 ` help stanzgy
2022-11-29 21:01 help hinxx
2022-11-15  4:35 Help jovial umwari
2022-11-15 13:59 ` Help Julia Lawall
2022-06-16  5:26 help Andreas Radke
2022-06-03 23:04 help Thomas Green
2022-02-25  0:04 Help 张健
2020-11-28 14:32 help Rroach
2020-09-16 16:33 help Dan Jakubiec
2020-04-07  5:06 help number201724
2020-03-21 19:26 help don fisher
2020-02-07  5:26 help Frank Esposito
     [not found] <20191121140040.GB9271.ref@pc1lin.fred.org>
2019-11-21 14:00 ` help Fred
2019-03-14  6:39 help Yubin
2019-02-06  5:26 help John Klug
2018-11-21 13:32 help _
2018-10-17  8:33 help Lorenzo Chelini
2018-10-17  9:28 ` help Madhavan Srinivasan
2018-08-07 13:01 help Marcel J.E. Mol
2018-05-06 19:28 help Richard Lee
2018-01-06 16:44 Help Farouk Maâboudallah
2018-01-06 22:40 ` Help Ozgur
2018-01-07  0:56 ` Help Tobin C. Harding
2018-01-07  1:39 ` Help valdis.kletnieks at vt.edu
2017-09-28  1:21 Help Nityananda
2017-09-28  3:06 ` Help Christian Couder
2017-05-17 14:26 help James Okken
     [not found] <mailman.63189.1489153806.15860.yocto@yoctoproject.org>
2017-03-10 14:25 ` help Suneetha Lakshmi G
2017-03-10 14:28   ` help Robert P. J. Day
2017-03-10 14:39   ` help Schmitt, Richard
2017-03-10 18:15   ` help Khem Raj
2017-03-13  4:28     ` help Suneetha Lakshmi G
2017-01-17 17:35 help Jay Miller
2016-08-19 13:11 help jayachandran.subramanian
2016-08-19 18:09 ` help Stephen Hemminger
2016-08-19 18:36   ` help Wiles, Keith
2016-08-20  0:26 ` help harshavardhan Reddy
2016-05-13  7:25 help Chandrakanth Sherkhane (IC Nexus)
2016-05-13  7:34 ` help Chris Z.
2016-05-13  9:26 ` help Burton, Ross
2016-05-13  9:30   ` help Herman van Hazendonk
2015-11-24 14:40 Help Almeida, Gabriel
2015-11-23 18:31 help Carlos Palminha
2015-11-02  8:22 Help Almeida, Gabriel
2015-11-02 17:38 ` Help Michael Wood
2015-11-30  7:31 ` Help Almeida, Gabriel
     [not found] <CAD-PXq+fMXjH3r==9wDBRn0U37HLmkfWPT7JPh+82OWQEqph-w@mail.gmail.com>
2015-09-30  9:41 ` Help Mulyadi Santosa
2015-10-05 18:00   ` Help Prem Kumar
2015-01-21 20:38 Help Natesh Relhan
2015-01-14  9:16 Help SAJID HOSSAIN
2015-01-14 10:19 ` Help Anuz Pratap Singh Tomar
2015-01-14 10:24   ` Help Anuz Pratap Singh Tomar
2014-12-04 19:01 help m_del_buon
2014-12-04 19:19 ` help Arend van Spriel
2014-10-09 12:43 help Manuel Piroz
2014-10-09 13:14 ` help Burton, Ross
2013-01-23  9:59 help Narendra Pal Singh
     [not found] <mailman.3.1347822001.6317.yocto@yoctoproject.org>
2012-09-16 19:10 ` help Jam1e Harr1s
2012-08-21  1:26 help du81692468
2012-08-23 19:18 ` help Dexter Filmore
2012-06-14 16:30 help chen.chenchacha
2011-11-18  5:12 help shepherd Lazy
2011-10-29 20:37 help Kai Moonbourn
2011-10-17 23:50 help Mario Torres
2011-10-14 16:22 help Mario Torres
2011-10-14 16:21 help Mario Torres
2011-07-28 23:33 help Martin Partridge
2011-07-28 23:47 ` help Christian Lamparter
2011-07-29  3:12 ` help Pavel Roskin
2011-07-29 16:32   ` help Pavel Roskin
2011-04-22  8:49 help wolfu
2010-12-21  7:58 help andy xu
2010-09-20 12:06 help Marcos
2010-09-20 12:16 ` help Oskar Berggren
2010-09-20 12:06 help Marcos
2010-05-29  2:48 help code.perfect
2010-05-28  9:06 help code.perfect
2010-05-17 17:00 Help Sgt. Ken Holland
2010-05-17 17:00 Help Sgt. Ken Holland
2010-05-17 17:00 ` Help Sgt. Ken Holland
2009-10-24  5:15 help Ingo Krabbe
2009-10-19 16:07 help Jens-U. Mozdzen
2009-10-01 13:22 help Jie Cai
2009-10-01 13:16 help Jie Cai
     [not found] <E1McOLX-0003Lq-BN@665xhf1.ch3.sourceforge.com>
     [not found] ` <200908152239.15915.rjw@sisk.pl>
     [not found]   ` <20090822073516.GD2108@elf.ucw.cz>
2009-09-22 23:33     ` Help Rafael J. Wysocki
     [not found]     ` <200909230133.28689.rjw@sisk.pl>
2009-09-23 16:43       ` Help Pavel Machek
2009-09-18 11:19 Help Lorenzo Brito Morales
2009-09-18 13:18 ` Help Iain Hibbert
2009-09-10 13:57 help Dante Durham
2009-08-21 13:27 RAID10 Layouts Info
2009-08-21 16:43 ` Goswin von Brederlow
2009-08-21 18:02   ` Info
2009-08-21 19:20     ` Help Info
2009-08-21 19:38       ` Help John Robinson
2009-08-21 20:51         ` Help Info
2009-08-22  6:14       ` Help Info
2009-08-22  9:34         ` Help NeilBrown
2009-08-22 12:56           ` Help Info
2009-08-22 16:47             ` Help John Robinson
2009-08-22 18:12               ` Help Info
2009-08-22 20:45                 ` Help Info
2009-08-22 20:59                   ` Help Guy Watkins
     [not found]                     ` <200908230631.46865.Info@quantum-sci.net>
2009-08-24 23:08                       ` Help Info
2009-08-24 23:38                         ` Help NeilBrown
2009-08-25 13:18                           ` Help Info
2009-08-27 12:47                             ` Help Info
2009-08-23 20:28                 ` Help John Robinson
2009-04-24 11:31 Help Sudeept Prusti
2009-04-24 11:39 ` Help Jaroslav Kysela
2009-04-24 11:53   ` Help Sudeept Prusti
2009-04-24 16:05     ` Help Alan Horstmann
     [not found] <20081205170026.821496198E3@hormel.redhat.com>
2008-12-05 17:24 ` help Brian Rosenberger
2008-09-28  5:06 help Reg Clemens
2008-08-13  9:26 Help Boris Shteinbock
2008-08-13 12:02 ` Help Arnd Bergmann
2008-08-13  8:22 help Artem Bityutskiy
2008-08-13  8:29 ` help Artem Bityutskiy
2008-07-24  7:18 Help Sudeept Prusti
2008-07-24 16:53 ` Help stan
     [not found] <20080220170012.C9E168E0292@hormel.redhat.com>
2008-02-21  8:25 ` help Lothar Brendel
2007-12-26  1:15 Help xiaodan
2007-12-10 11:48 help Thanos Chatziathanassiou
2007-12-11  1:02 ` help David Newall
2007-12-02  4:24 help YanBob
2007-12-02 17:09 ` help Tobin Davis
2007-11-26 14:53 help liujiusheng
2007-11-18 18:48 help mattias
2007-11-18 19:06 ` help Morten K. Poulsen
     [not found] <46D25A05.4070606@davidnewall.com>
2007-08-27 17:18 ` help David Newall
2007-08-27 17:31   ` help Michal Piotrowski
     [not found] <mailman.274497.1187370904.21973.nfs@lists.sourceforge.net>
2007-08-18  5:35 ` help Kapil Maheshwari
2007-05-16  0:25 help Mao Wei
2006-08-29  8:12 help Limeng [李萌]
2006-08-29  8:48 ` help Jan Engelhardt
2006-08-23 19:21 help Archie Cotton
2006-08-23 19:21 help Archie Cotton
2006-08-16 12:46 help Hemanth KumarBS
2006-08-15  2:35 help derrywang
2006-04-09 20:47 help amirhosein jahanbekam
2006-03-09  2:57 help zhaoyw
2006-03-09  9:51 ` help Matej Kupljen
2006-02-04  2:21 Help Oren Ben-Menachem
2005-12-28 10:53 help wayne.chen
2005-11-27 20:30 help Matt Darcy
     [not found] <1122236195.3173.68.camel@localhost>
2005-11-19 12:40 ` help Yu Luming
2005-11-17  6:02 help prabha.j
2005-11-17 14:04 ` help Wolfgang Denk
2005-11-16  8:26 help Hua Feijun
2005-11-16  8:40 ` help Ian McDonald
2005-08-29  4:01 help raja
2005-08-29  4:41 ` help Randy.Dunlap
2005-08-27  7:01 help raja
2005-08-27  7:32 ` help Pekka Enberg
2005-08-09 17:24 help androsov
     [not found] ` <000001c59d07$3a9ee170$a14a3d0a-8fM5sft8TcWs1BDpvl8NfQ@public.gmane.org>
2005-08-09 17:59   ` help Andrew Haninger
     [not found]     ` <105c793f05080910595ceb4199-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2005-08-10  7:28       ` help Bruno Ducrot
2005-07-26  9:21 help 戴红刚
2005-07-25  7:50 help support
2005-07-21 11:39 help Jordan, Kyle
2005-07-21  5:59 help 戴红刚
2005-05-28 14:15 help John W. M. Stevens
2005-05-19  6:23 help NEC
2005-05-19  6:23 ` help Jean Delvare
2005-05-19  6:23 ` Help Ville Jutvik
2005-05-19  6:23 ` Help phil
2005-05-19  6:23 ` Help Mark Studebaker
2005-05-19  6:23 ` help Stealth
2005-05-19  6:23 ` help Kyösti Mälkki
2005-05-19  6:25 ` HELP Lev A. Melnikovsky
2005-05-13 13:25 [PATCH 2.6] vr41xx: remove old TB0219 driver Yoichi Yuasa
2005-05-17  6:20 ` help Steve Alexander
2005-05-10  8:01 help andyliu
2005-05-07 13:46 help sen lin
2005-04-07 16:29 Help James Carlson
2005-04-07 16:32 ` Help Kumar
2005-04-07 16:42 ` Help Bill Unruh
2005-01-24  4:33 help wayne.chen
2005-01-22 10:12 Help Pankaj Agarwal
2005-01-22 11:16 ` Help Graeme T Ford
2005-01-11 15:36 help Bhupesh Kumar Pandey, Noida
2005-01-11 15:51 ` help Greg KH
2005-01-11 17:00   ` help Theodore Ts'o
2005-01-11 16:07 ` help Erik Mouw
2005-01-11 14:28 help Bhupesh Kumar Pandey, Noida
2005-01-11 15:16 ` help Greg KH
2004-12-11 11:25 HELP Bartosz Hetmanski
2004-11-25  9:55 help Bakki Srinivas
2004-11-27  9:57 ` help Jan-Benedict Glaw
2004-10-20  5:05 help Srinivasa S
2004-10-20  5:50 ` help Guy
2004-10-21  1:47 ` help Jon Lewis
2004-08-18 12:24 help Manik Raina
2004-04-01 16:56 Help Jason C. Leach
2004-04-01 17:00 ` Help Måns Rullgård
2004-04-01  0:50 help g lh
2004-03-06 17:00 help Billy Rose
2004-03-06 19:22 ` help Francois Romieu
2004-02-01 13:13 help Rami Addady
2003-12-14 22:30 help Cristiano Soares
2003-12-17 18:09 ` help Ian Hunter
2003-12-17 18:22   ` help Antony Stone
2003-10-30 10:04 help stefan.eletzhofer
2003-10-28  3:04 help Kenneth H. Braun
2003-08-29 13:58 help Adeel Malik
2003-08-29 12:57 help Adeel Malik
     [not found] <20030725061502.30342.8650.Mailman@kashyyyk>
2003-07-25 14:33 ` help durga prasad
2003-07-23  6:53 help Adeel Malik
2003-07-23  6:53 ` help Adeel Malik
2003-07-07 18:20 help Justin Rush
2003-06-10 22:15 help George Vieira
2003-06-06  5:55 Help madalin mihailescu
2003-06-11  1:14 ` Help Lucas Correia Villa Real
2003-06-05  9:19 help dawn lin
2003-06-02  7:47 supermount for 2.5 test version available Andrey Borzenkov
2003-06-02  8:02 ` help Pedro Requejo
2003-06-02  0:54 help 김용철
2003-05-31  2:25 help chandrashekhar dethe
2003-04-09  9:40 help prem nath
2003-03-08  6:10 help kalpesh
2003-03-08  8:28 ` help Patrick Schaaf
2003-02-22  8:55 YAMON Harald Koerfgen
2001-08-14  5:54 ` help Sathish Vasudevaiah
2003-02-17 15:04 help Khanh Tran
2003-02-17 10:11 help Laxman Gummadavally
2003-01-02 21:01 Help lmonroy
2003-01-03  7:17 ` Help Reinhard Karcher
2002-12-25  7:31 help Mailhebuau Christophe
2002-12-18 15:23 Help manish
2002-12-18 16:00 ` Help Maciej Soltysiak
2002-12-18 15:00 Help manish
2002-12-11 17:45 Help manish
2002-12-05 16:14 help Dmitry V. Zhulanov
2002-12-05 15:17 help Dmitry V. Zhulanov
     [not found] <E18D9IZ-0006nI-00@sc8-sf-list2.sourceforge.net>
     [not found] ` <E18D9IZ-0006nI-00-ek0oC1U1TqqnvZpeIfgr/KQD96bmaF075NbjCUgZEJk@public.gmane.org>
2002-11-16 20:22   ` help deepak singh
     [not found] <F392BE64738A7143B00E86A5634FBF142C85@akun2900.intra.savi.ch>
2002-10-31  8:50 ` Help Antony Stone
2002-10-11 10:38 help Nataraj
2002-10-14  4:02 ` help ashutosh.varshney
2001-11-19 20:48 Help dave
2001-11-20 13:19 ` Help David Woodhouse
2001-06-07  9:04 HELP Abraham vd Merwe
2001-06-07  9:35 ` HELP David Woodhouse
2001-06-07  9:43   ` HELP Abraham vd Merwe
2001-06-07  9:44     ` HELP David Woodhouse
2001-06-07  9:47       ` HELP Abraham vd Merwe
2001-06-07  9:48       ` HELP David Woodhouse
2001-06-07  9:51         ` HELP Abraham vd Merwe
2001-06-07 10:16           ` HELP David Woodhouse
2001-06-07 17:21       ` HELP Russ Dill
2001-06-07 20:01         ` HELP David Woodhouse
2001-06-07 14:30     ` HELP Nicolas Pitre
2001-06-07 14:23   ` HELP Nicolas Pitre

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080108070940.00999DE290@ozlabs.org \
    --to=jackzhang@superlink.com.cn \
    --cc=linuxppc-dev@ozlabs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.