Hello Kevin,
here is the Changelog, i hope that will be enough.
Changelog: There was a bug in the register indexing for GPIOs numbers> 31 to
get the relevant hardware registers of tnetv107x to control the GPIOs.
In the structure tnetv107x_gpio_regs:
struct tnetv107x_gpio_regs {
u32 idver;
u32 data_in[3];
u32 data_out[3];
u32 direction[3];
u32 enable[3];
};
The GPIO hardware register addresses of tnetv107x are stored.
The chip implements 3 registers of each entity to serve 96 GPIOs, each register
provides a subset of 32 GPIOs.
The driver provides these macros: gpio_reg_set_bit, gpio_reg_get_bit and
gpio_reg_clear_bit.
The bug implied the use of macros to access the relevant hardware register e.g.
the driver code used the macro like this:
'gpio_reg_clear_bit(®->data_out, gpio)'
But it has to be used like this:
'gpio_reg_clear_bit(reg->data_out, gpio)'.
The different results are shown here:
-&p->data_out + 1 (it will add the full array size of data_out i.e. 12 bytes)
-p->data_out + 1 (it will increment only the size of data_out i.e. only 4 bytes)
br,
Hirosh Dabui
On 12/21/2010 05:50 PM, Kevin Hilman wrote:
Hirosh Dabui<[email protected]> writes:
Please add a descriptive changelog here describing the problem being
fixed.
Also, I'll need an Acked-by from Cyril before merging any tnetv107x
patches.
Kevin
Signed-off-by: Hirosh Dabui<[email protected]>
---
arch/arm/mach-davinci/gpio-tnetv107x.c | 18 +++++++++---------
1 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/arch/arm/mach-davinci/gpio-tnetv107x.c
b/arch/arm/mach-davinci/gpio-tnetv107x.c
index d102986..3fa3e28 100644
--- a/arch/arm/mach-davinci/gpio-tnetv107x.c
+++ b/arch/arm/mach-davinci/gpio-tnetv107x.c
@@ -58,7 +58,7 @@ static int tnetv107x_gpio_request(struct gpio_chip *chip,
unsigned offset)
spin_lock_irqsave(&ctlr->lock, flags);
- gpio_reg_set_bit(®s->enable, gpio);
+ gpio_reg_set_bit(regs->enable, gpio);
spin_unlock_irqrestore(&ctlr->lock, flags);
@@ -74,7 +74,7 @@ static void tnetv107x_gpio_free(struct gpio_chip *chip,
unsigned offset)
spin_lock_irqsave(&ctlr->lock, flags);
- gpio_reg_clear_bit(®s->enable, gpio);
+ gpio_reg_clear_bit(regs->enable, gpio);
spin_unlock_irqrestore(&ctlr->lock, flags);
}
@@ -88,7 +88,7 @@ static int tnetv107x_gpio_dir_in(struct gpio_chip *chip,
unsigned offset)
spin_lock_irqsave(&ctlr->lock, flags);
- gpio_reg_set_bit(®s->direction, gpio);
+ gpio_reg_set_bit(regs->direction, gpio);
spin_unlock_irqrestore(&ctlr->lock, flags);
@@ -106,11 +106,11 @@ static int tnetv107x_gpio_dir_out(struct gpio_chip *chip,
spin_lock_irqsave(&ctlr->lock, flags);
if (value)
- gpio_reg_set_bit(®s->data_out, gpio);
+ gpio_reg_set_bit(regs->data_out, gpio);
else
- gpio_reg_clear_bit(®s->data_out, gpio);
+ gpio_reg_clear_bit(regs->data_out, gpio);
- gpio_reg_clear_bit(®s->direction, gpio);
+ gpio_reg_clear_bit(regs->direction, gpio);
spin_unlock_irqrestore(&ctlr->lock, flags);
@@ -124,7 +124,7 @@ static int tnetv107x_gpio_get(struct gpio_chip *chip,
unsigned offset)
unsigned gpio = chip->base + offset;
int ret;
- ret = gpio_reg_get_bit(®s->data_in, gpio);
+ ret = gpio_reg_get_bit(regs->data_in, gpio);
return ret ? 1 : 0;
}
@@ -140,9 +140,9 @@ static void tnetv107x_gpio_set(struct gpio_chip *chip,
spin_lock_irqsave(&ctlr->lock, flags);
if (value)
- gpio_reg_set_bit(®s->data_out, gpio);
+ gpio_reg_set_bit(regs->data_out, gpio);
else
- gpio_reg_clear_bit(®s->data_out, gpio);
+ gpio_reg_clear_bit(regs->data_out, gpio);
spin_unlock_irqrestore(&ctlr->lock, flags);
}
________________________________
Buon natale! God Jul! Frohe Festtage! Merry Christmas! Feliz Navidad! Chuc Mung
Giang Sinh! Boas Fesats! Mutlu Noel èr!
* The snom Advent Calendar: Win a prize every Day:
www.snom.com/christmas<http://www.snom.com/christmas>
* Did you know how versatile snom phones are?
www.snom.com/en/why-snom/did-you-know/<http://www.snom.com/en/why-snom/did-you-know/>
* introducing snom ONE:
http://www.snom.com/products/ip-pbx/snom-one<http://www.snom.com/products/ip-pbx/snom-one/>
* Join our Partner program: http://www.snom.com/partner
* Subscribe to our snom support RSS
Feed<http://wiki.snom.com/wiki/index.php?title=RSS&action=feed&feed=rss> and
get first-hand technical news about snom products, e.g. Firmware updates, FAQ updates,
troubleshooting hints, etc.
Follow us on Facebook<http://www.facebook.com/snom.VoIP.phones>,
Twitter<http://twitter.com/snom>, YouTube<http://www.youtube.com/user/snomvoip>,
Linkedin<http://www.linkedin.com/groups?gid=1773766>
Sitz/Domicile: Charlottenstr. 68-71, 10117 Berlin, Germany
Handelsregistereintrag/Register of Corporations entry: Berlin-Charlottenburg
HRB 61842 B
Vorstand/Executive Board: Dr. Christian Stredicke, Dr. Michael Knieling,
Alexander Khan
Vorsitzender des Aufsichtsrates/Chairman of the Supervisory Board: Prof. Dr.
Harald Melcher
snom technology AG<http://www.snom.com>
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source