* [lm-sensors] Patch for i2c-elektor driver
@ 2005-10-04 12:51 Stig Telfer
2005-10-04 16:56 ` Jean Delvare
` (8 more replies)
0 siblings, 9 replies; 10+ messages in thread
From: Stig Telfer @ 2005-10-04 12:51 UTC (permalink / raw)
To: lm-sensors
Hi -
Please excuse me if this is not the right place to send a patch.
I have updated the i2c-elektor driver to work on kernel 2.6.13. The
driver now compiles cleanly and works on my system. However, I only
have access to a UP2000 Alpha system to test the i2c-elektor driver. I
don't think anything else will be broken by this patch, but I don't
have an Elektor ISA card to test to be certain. Does anybody have one?
Are they still in use?
The patch is available at:
http://www.lizardlogic.co.uk/software/hwmon/elektor-alpha.patch
Share and Enjoy,
Stig Telfer
^ permalink raw reply [flat|nested] 10+ messages in thread* [lm-sensors] Patch for i2c-elektor driver 2005-10-04 12:51 [lm-sensors] Patch for i2c-elektor driver Stig Telfer @ 2005-10-04 16:56 ` Jean Delvare 2005-10-04 21:23 ` Stig Telfer ` (7 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: Jean Delvare @ 2005-10-04 16:56 UTC (permalink / raw) To: lm-sensors Hi Stig, On 2005-10-04, Stig Telfer wrote: > Please excuse me if this is not the right place to send a patch. This is the right place. > I have updated the i2c-elektor driver to work on kernel 2.6.13. The > driver now compiles cleanly and works on my system. However, I only > have access to a UP2000 Alpha system to test the i2c-elektor driver. I > don't think anything else will be broken by this patch, but I don't > have an Elektor ISA card to test to be certain. Does anybody have one? > Are they still in use? No idea. I don't have such a card myself, and don't remember anyone mentioning it for the past two years. > The patch is available at: > > http://www.lizardlogic.co.uk/software/hwmon/elektor-alpha.patch Could you please follow the usual patch submission procedure? I would like to apply your patch but can't accept it in its current form. I would like you to: 1* Sumbit the file itself rather than linking to it. Please also sign it, by adding a line like: Signed-off-by: Stig Telfer <email@address> at the top of the patch. See Documentation/SubmittingPatches in the Linux kernel source tree for additional information. 2* Explain in detail why your patch is needed, and how it fixes the problem you were having. 3* Not include code cleanups in a patch which fixes bugs. I accept code cleanups, but as a separate patch, to be applied before or after the bugfixing patch, at your option. Thanks, -- Jean Delvare ^ permalink raw reply [flat|nested] 10+ messages in thread
* [lm-sensors] Patch for i2c-elektor driver 2005-10-04 12:51 [lm-sensors] Patch for i2c-elektor driver Stig Telfer 2005-10-04 16:56 ` Jean Delvare @ 2005-10-04 21:23 ` Stig Telfer 2005-10-04 23:39 ` Jean Delvare ` (6 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: Stig Telfer @ 2005-10-04 21:23 UTC (permalink / raw) To: lm-sensors Hi Jean - I have split the patch into two, annotated and signed off. Patch 1 is the bug fixes. Patch 2 is a bit of code cleanup. Some of patch 2 you may think is not worth changing. I have no problem with that. On my system, the current elektor driver will oops on module load and has no chance of working because the IO regions are not mapped. Patch 1 fixes it (for me). Regards, Stig Telfer -------------- next part -------------- A non-text attachment was scrubbed... Name: elektor-alpha-1.patch Type: application/octet-stream Size: 4121 bytes Desc: not available Url : http://lists.lm-sensors.org/pipermail/lm-sensors/attachments/20051004/038fd7c6/elektor-alpha-1.obj -------------- next part -------------- A non-text attachment was scrubbed... Name: elektor-alpha-2.patch Type: application/octet-stream Size: 2089 bytes Desc: not available Url : http://lists.lm-sensors.org/pipermail/lm-sensors/attachments/20051004/038fd7c6/elektor-alpha-2.obj -------------- next part -------------- ^ permalink raw reply [flat|nested] 10+ messages in thread
* [lm-sensors] Patch for i2c-elektor driver 2005-10-04 12:51 [lm-sensors] Patch for i2c-elektor driver Stig Telfer 2005-10-04 16:56 ` Jean Delvare 2005-10-04 21:23 ` Stig Telfer @ 2005-10-04 23:39 ` Jean Delvare 2005-10-04 23:46 ` Jean Delvare ` (5 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: Jean Delvare @ 2005-10-04 23:39 UTC (permalink / raw) To: lm-sensors Hi Stig, One preliminary question: Did you attempt to contact Hans Berglund or Oleg I. Vdovikin for their opinion on and testing of your patch? > I have split the patch into two, annotated and signed off. Patch 1 is > the bug fixes. Patch 2 is a bit of code cleanup. Some of patch 2 you > may think is not worth changing. I have no problem with that. > > On my system, the current elektor driver will oops on module load and > has no chance of working because the IO regions are not mapped. Patch > 1 fixes it (for me). Are you using mmapped=0 or 1? Wasn't it just a matter of using the other? I guess there is a reason why this option exists. I don't really feel qualified to review the first patch, as I have relatively little idea how I/O mapping is supposed to work. Greg, want to comment? All the (relatively) recent changes to the driver are yours, although I'm not sure it actually means anything. All I can offer myself are a few comments on the rest: > + pr_debug("i2c-elektor: Write %p 0x%02X\n", address, val & 255); Can we get rid of that "& 255"? Looks pointless to me. > +#if __alpha__ > + /* API UP2000 needs some hardware fudging to make the write stick */ > + iowrite8(val, address); > +#endif My understanding is that adding this here means that the following lines later in the code: > /* I don't know why we need to > write twice */ > mmapped = 2; could (and should) be removed. Right? > + printk(KERN_ERR "i2c-elektor: requested mem region (%#x:2) " > + "is in use.\n", base ); No dot at end of message please. Also a coding style problem, no space before closing parenthesis. > + if( base_iomem = NULL ) { Coding style. > + printk(KERN_ERR "i2c-elecktor: remap of memory region failed\n"); s/elecktor/elektor/ > + pr_debug("registers %#x remapped to %p\n", base, base_iomem); Please add an "i2c-elektor: " prefix as the other messages have. As for the second patch, I'm globally happy with it, only a few minor comments as well: > - "i2c-elektor: requested I/O region (0x%X:2) " > + "i2c-elektor: requested I/O region (%#x:2) " > "is in use.\n", base); You could additionally drop the trailing dot. > - printk(KERN_INFO "i2c-elektor: found API UP2000 like board, will probe PCF8584 later.\n"); > + printk(KERN_INFO > + "i2c-elektor: found API UP2000 like board, will probe PCF8584 later.\n"); This is still too wide after your change. Please split the string, and drop the training dot while you're there. > - printk(KERN_ERR "i2c-elektor: incorrect base address (0x%0X) specified for mmapped I/O.\n", base); > + printk(KERN_ERR "i2c-elektor: incorrect base address (%#x) specified for mmapped I/O.\n", base); Likewise, please split into pieces so that it fits in 80 columns, and drop the trailing dot. Additional possible cleanup: > printk(KERN_ERR "i2c-elektor: found device at %#x.\n", base); This certainly isn't an error, and trailing dot can be dropped. Care to respin the patches with the suggested changes? Then I'll push them upwards. Thanks for the good work, -- Jean Delvare ^ permalink raw reply [flat|nested] 10+ messages in thread
* [lm-sensors] Patch for i2c-elektor driver 2005-10-04 12:51 [lm-sensors] Patch for i2c-elektor driver Stig Telfer ` (2 preceding siblings ...) 2005-10-04 23:39 ` Jean Delvare @ 2005-10-04 23:46 ` Jean Delvare 2005-10-04 23:51 ` Greg KH ` (4 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: Jean Delvare @ 2005-10-04 23:46 UTC (permalink / raw) To: lm-sensors Oh, BTW... > +#if __alpha__ This really should be #ifdef __alpha__, else I get a warning at compilation time (due to -Wundef which was recently added to the build system). Thanks, -- Jean Delvare ^ permalink raw reply [flat|nested] 10+ messages in thread
* [lm-sensors] Patch for i2c-elektor driver 2005-10-04 12:51 [lm-sensors] Patch for i2c-elektor driver Stig Telfer ` (3 preceding siblings ...) 2005-10-04 23:46 ` Jean Delvare @ 2005-10-04 23:51 ` Greg KH 2005-10-06 12:46 ` Stig Telfer ` (3 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: Greg KH @ 2005-10-04 23:51 UTC (permalink / raw) To: lm-sensors On Tue, Oct 04, 2005 at 11:38:13PM +0200, Jean Delvare wrote: > Hi Stig, > > One preliminary question: Did you attempt to contact Hans Berglund or > Oleg I. Vdovikin for their opinion on and testing of your patch? > > > I have split the patch into two, annotated and signed off. Patch 1 is > > the bug fixes. Patch 2 is a bit of code cleanup. Some of patch 2 you > > may think is not worth changing. I have no problem with that. > > > > On my system, the current elektor driver will oops on module load and > > has no chance of working because the IO regions are not mapped. Patch > > 1 fixes it (for me). > > Are you using mmapped=0 or 1? Wasn't it just a matter of using the > other? I guess there is a reason why this option exists. > > I don't really feel qualified to review the first patch, as I have > relatively little idea how I/O mapping is supposed to work. Greg, want > to comment? All the (relatively) recent changes to the driver are > yours, although I'm not sure it actually means anything. the iomap stuff looks good, did you run it through sparse to make sure you got it all correct? Also, all of the printk() and pr_debug() lines should be changed to use dev_dbg(), dev_err() and friends. thanks, greg k-h ^ permalink raw reply [flat|nested] 10+ messages in thread
* [lm-sensors] Patch for i2c-elektor driver 2005-10-04 12:51 [lm-sensors] Patch for i2c-elektor driver Stig Telfer ` (4 preceding siblings ...) 2005-10-04 23:51 ` Greg KH @ 2005-10-06 12:46 ` Stig Telfer 2005-10-06 22:37 ` Jean Delvare ` (2 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: Stig Telfer @ 2005-10-06 12:46 UTC (permalink / raw) To: lm-sensors Wow, this is getting to be quite a spring-cleaning now. I have incorporated all your suggestions into this patch, except for these two: * Jean: use of val & 255 in printk statement in pcf_isa_setbyte() - I think this is actually required because parameter val is an integer quantity and could have been sign-extended? I would prefer to change the function parameter to u8, but this violates the types of struct i2c_algo_pcf_data. * Greg: I haven't changed the printk and pr_debug calls yet, because there are some printk calls before a struct device is initialised (this is done when the device is registered to i2c_algo_pcf at the end of driver init). What is the policy relating to driver output before there is an associated struct device initialised? I took a look at the code with sparse, there were no reported problems. However, am I right in thinking that sparse is x86-centric? I was running the compilation on an Alpha system. With more than a little irony considering the political harangue against gcc in the sparse documentation, it didn't compile on my RH8 x86 system: gcc gave an internal compiler error... The attached patch is for code cleanup and is a direct replacement for patch 2. Regards, Stig Telfer -------------- next part -------------- A non-text attachment was scrubbed... Name: elektor-alpha-3.patch Type: application/octet-stream Size: 5054 bytes Desc: not available Url : http://lists.lm-sensors.org/pipermail/lm-sensors/attachments/20051006/196ffd32/elektor-alpha-3.obj ^ permalink raw reply [flat|nested] 10+ messages in thread
* [lm-sensors] Patch for i2c-elektor driver 2005-10-04 12:51 [lm-sensors] Patch for i2c-elektor driver Stig Telfer ` (5 preceding siblings ...) 2005-10-06 12:46 ` Stig Telfer @ 2005-10-06 22:37 ` Jean Delvare 2005-10-07 15:30 ` Stig Telfer 2005-10-07 22:21 ` Jean Delvare 8 siblings, 0 replies; 10+ messages in thread From: Jean Delvare @ 2005-10-06 22:37 UTC (permalink / raw) To: lm-sensors Hi Stig, > I have incorporated all your suggestions into this patch, except for > these two: > > * Jean: use of val & 255 in printk statement in pcf_isa_setbyte() - I > think this is actually required because parameter val is an integer > quantity and could have been sign-extended? I would prefer to change > the function parameter to u8, but this violates the types of struct > i2c_algo_pcf_data. The "& 255" is done in the debug printk only, iowrite8 is still called with val unmasked, so if the masking actually did something, something bas is happening, and the debug trace won't ever show it. Looking at i2c-algo-pcf, it's quite clear that val will always fit in an u8, so the masking is actually needless. > * Greg: I haven't changed the printk and pr_debug calls yet, because > there are some printk calls before a struct device is initialised (this > is done when the device is registered to i2c_algo_pcf at the end of > driver init). What is the policy relating to driver output before > there is an associated struct device initialised? pr_debug and pr_info are fine to use in these cases (or even explicit printk for other cases). > I took a look at the code with sparse, there were no reported problems. > However, am I right in thinking that sparse is x86-centric? I was > running the compilation on an Alpha system. With more than a little > irony considering the political harangue against gcc in the sparse > documentation, it didn't compile on my RH8 x86 system: gcc gave an > internal compiler error... I had the exact same problem :( > The attached patch is for code cleanup and is a direct replacement for > patch 2. Comments: > * all printed messages are prefixed by "i2c-elektor: ", via new preprocessor > definitions DRVNAME and DRVPFX This is pretty pointless considering that we want to convert all of these to dev_{dbg,err,warn,info} anyway, and these do not need a prefix. > * #if __alpha__ converted to #ifdef __alpha__ This is a bug you introduced in patch #1! Don't fix it in patch #2, fix patch #1 not to introduce it in the first place. So, here comes a respin of both patches. I'd like to enqueue them and push them to Greg soon. Can you test them and confirm them work OK for you? Thanks, -- Jean Delvare -------------- next part -------------- This patch updates the i2c-elektor driver, enabling it to compile cleanly, load and run. The key change is that it uses the new __iomem/iowrite8/ioread8 functions to abstract the direct or memory-mapped variants of register access. Also, the original driver would crash on module load on the Alpha because the PCI memory region was not remapped into kernel memory. I have managed the following testing: * compiled and tested it on my Alpha UP2000+ system. * compiles cleanly for x86 but I don't have the hardware to test. Signed-off-by: Stig Telfer <stig@lizardlogic.co.uk> Signed-off-by: Jean Delvare <khali@linux-fr.org> drivers/i2c/busses/i2c-elektor.c | 74 +++++++++++++++++++++++++------------- 1 file changed, 49 insertions(+), 25 deletions(-) --- linux-2.6.14-rc3.orig/drivers/i2c/busses/i2c-elektor.c 2005-10-05 21:55:34.000000000 +0200 +++ linux-2.6.14-rc3/drivers/i2c/busses/i2c-elektor.c 2005-10-06 22:18:20.000000000 +0200 @@ -46,6 +46,8 @@ #define DEFAULT_BASE 0x330 static int base; +static u8 __iomem *base_iomem; + static int irq; static int clock = 0x1c; static int own = 0x55; @@ -64,36 +66,27 @@ static void pcf_isa_setbyte(void *data, int ctl, int val) { - int address = ctl ? (base + 1) : base; + u8 __iomem *address = ctl ? (base_iomem + 1) : base_iomem; /* enable irq if any specified for serial operation */ if (ctl && irq && (val & I2C_PCF_ESO)) { val |= I2C_PCF_ENI; } - pr_debug("i2c-elektor: Write 0x%X 0x%02X\n", address, val & 255); - - switch (mmapped) { - case 0: /* regular I/O */ - outb(val, address); - break; - case 2: /* double mapped I/O needed for UP2000 board, - I don't know why this... */ - writeb(val, (void *)address); - /* fall */ - case 1: /* memory mapped I/O */ - writeb(val, (void *)address); - break; - } + pr_debug("i2c-elektor: Write %p 0x%02X\n", address, val); + iowrite8(val, address); +#ifdef __alpha__ + /* API UP2000 needs some hardware fudging to make the write stick */ + iowrite8(val, address); +#endif } static int pcf_isa_getbyte(void *data, int ctl) { - int address = ctl ? (base + 1) : base; - int val = mmapped ? readb((void *)address) : inb(address); - - pr_debug("i2c-elektor: Read 0x%X 0x%02X\n", address, val); + u8 __iomem *address = ctl ? (base_iomem + 1) : base_iomem; + int val = ioread8(address); + pr_debug("i2c-elektor: Read %p 0x%02X\n", address, val); return (val); } @@ -155,7 +148,30 @@ "is in use.\n", base); return -ENODEV; } + base_iomem = ioport_map(base, 2); + if (!base_iomem) { + printk(KERN_ERR "i2c-elektor: remap of I/O region " + "%#x failed\n", base); + release_region(base, 2); + return -ENODEV; + } + } else { + if (!request_mem_region(base, 2, "i2c-elektor")) { + printk(KERN_ERR "i2c-elektor: requested memory region " + "(%#x:2) is in use\n", base); + return -ENODEV; + } + base_iomem = ioremap(base, 2); + if (base_iomem = NULL) { + printk(KERN_ERR "i2c-elektor: remap of memory region " + "%#x failed\n", base); + release_mem_region(base, 2); + return -ENODEV; + } } + pr_debug("i2c-elektor: registers %#x remapped to %p\n", base, + base_iomem); + if (irq > 0) { if (request_irq(irq, pcf_isa_handler, 0, "PCF8584", NULL) < 0) { printk(KERN_ERR "i2c-elektor: Request irq%d failed\n", irq); @@ -200,7 +216,7 @@ cy693_dev = pci_get_device(PCI_VENDOR_ID_CONTAQ, PCI_DEVICE_ID_CONTAQ_82C693, NULL); if (cy693_dev) { - char config; + unsigned char config; /* yeap, we've found cypress, let's check config */ if (!pci_read_config_byte(cy693_dev, 0x47, &config)) { @@ -219,9 +235,7 @@ if ((config & 0x7f) = 0x61) { /* seems to be UP2000 like board */ base = 0xe0000; - /* I don't know why we need to - write twice */ - mmapped = 2; + mmapped = 1; /* UP2000 drives ISA with 8.25 MHz (PCI/4) clock (this can be read from cypress) */ @@ -262,8 +276,13 @@ free_irq(irq, NULL); } - if (!mmapped) + if (!mmapped) { + ioport_unmap(base_iomem); release_region(base , 2); + } else { + iounmap(base_iomem); + release_mem_region(base, 2); + } return -ENODEV; } @@ -276,8 +295,13 @@ free_irq(irq, NULL); } - if (!mmapped) + if (!mmapped) { + ioport_unmap(base_iomem); release_region(base , 2); + } else { + iounmap(base_iomem); + release_mem_region(base, 2); + } } MODULE_AUTHOR("Hans Berglund <hb@spacetec.no>"); -------------- next part -------------- Cleanups to the i2c-elektor driver: * Set the i2c_adapter name field to "i2c-elektor" and use this string in all resource requests and printks. * Change space-padding for tab indentation, kill trailing white space. * Use dev_dbg and dev_info instead of printk where possible, and pr_debug and pr_info where not. * Lines chopped to 80 columns. Signed-off-by: Stig Telfer <stig@lizardlogic.co.uk> Signed-off-by: Jean Delvare <khali@linux-fr.org> drivers/i2c/busses/i2c-elektor.c | 80 ++++++++++++++++++++------------------ 1 file changed, 43 insertions(+), 37 deletions(-) --- linux-2.6.14-rc3.orig/drivers/i2c/busses/i2c-elektor.c 2005-10-06 22:18:20.000000000 +0200 +++ linux-2.6.14-rc3/drivers/i2c/busses/i2c-elektor.c 2005-10-06 22:19:39.000000000 +0200 @@ -22,7 +22,7 @@ /* With some changes from Kyösti Mälkki <kmalkki@cc.hut.fi> and even Frodo Looijaard <frodol@dds.nl> */ -/* Partialy rewriten by Oleg I. Vdovikin for mmapped support of +/* Partialy rewriten by Oleg I. Vdovikin for mmapped support of for Alpha Processor Inc. UP-2000(+) boards */ #include <linux/kernel.h> @@ -53,7 +53,7 @@ static int own = 0x55; static int mmapped; -/* vdovikin: removed static struct i2c_pcf_isa gpi; code - +/* vdovikin: removed static struct i2c_pcf_isa gpi; code - this module in real supports only one device, due to missing arguments in some functions, called from the algo-pcf module. Sometimes it's need to be rewriten - but for now just remove this for simpler reading */ @@ -62,6 +62,8 @@ static int pcf_pending; static spinlock_t lock; +static struct i2c_adapter pcf_isa_ops; + /* ----- local functions ---------------------------------------------- */ static void pcf_isa_setbyte(void *data, int ctl, int val) @@ -73,7 +75,7 @@ val |= I2C_PCF_ENI; } - pr_debug("i2c-elektor: Write %p 0x%02X\n", address, val); + dev_dbg(&pcf_isa_ops.dev, "Write %p 0x%02X\n", address, val); iowrite8(val, address); #ifdef __alpha__ /* API UP2000 needs some hardware fudging to make the write stick */ @@ -86,7 +88,7 @@ u8 __iomem *address = ctl ? (base_iomem + 1) : base_iomem; int val = ioread8(address); - pr_debug("i2c-elektor: Read %p 0x%02X\n", address, val); + dev_dbg(&pcf_isa_ops.dev, "Read %p 0x%02X\n", address, val); return (val); } @@ -142,39 +144,40 @@ { spin_lock_init(&lock); if (!mmapped) { - if (!request_region(base, 2, "i2c (isa bus adapter)")) { - printk(KERN_ERR - "i2c-elektor: requested I/O region (0x%X:2) " - "is in use.\n", base); + if (!request_region(base, 2, pcf_isa_ops.name)) { + printk(KERN_ERR "%s: requested I/O region (%#x:2) is " + "in use\n", pcf_isa_ops.name, base); return -ENODEV; } base_iomem = ioport_map(base, 2); if (!base_iomem) { - printk(KERN_ERR "i2c-elektor: remap of I/O region " - "%#x failed\n", base); + printk(KERN_ERR "%s: remap of I/O region %#x failed\n", + pcf_isa_ops.name, base); release_region(base, 2); return -ENODEV; } } else { - if (!request_mem_region(base, 2, "i2c-elektor")) { - printk(KERN_ERR "i2c-elektor: requested memory region " - "(%#x:2) is in use\n", base); + if (!request_mem_region(base, 2, pcf_isa_ops.name)) { + printk(KERN_ERR "%s: requested memory region (%#x:2) " + "is in use\n", pcf_isa_ops.name, base); return -ENODEV; } base_iomem = ioremap(base, 2); if (base_iomem = NULL) { - printk(KERN_ERR "i2c-elektor: remap of memory region " - "%#x failed\n", base); + printk(KERN_ERR "%s: remap of memory region %#x " + "failed\n", pcf_isa_ops.name, base); release_mem_region(base, 2); return -ENODEV; } } - pr_debug("i2c-elektor: registers %#x remapped to %p\n", base, + pr_debug("%s: registers %#x remapped to %p\n", pcf_isa_ops.name, base, base_iomem); if (irq > 0) { - if (request_irq(irq, pcf_isa_handler, 0, "PCF8584", NULL) < 0) { - printk(KERN_ERR "i2c-elektor: Request irq%d failed\n", irq); + if (request_irq(irq, pcf_isa_handler, 0, pcf_isa_ops.name, + NULL) < 0) { + printk(KERN_ERR "%s: Request irq%d failed\n", + pcf_isa_ops.name, irq); irq = 0; } else enable_irq(irq); @@ -202,45 +205,49 @@ .class = I2C_CLASS_HWMON, .id = I2C_HW_P_ELEK, .algo_data = &pcf_isa_data, - .name = "PCF8584 ISA adapter", + .name = "i2c-elektor", }; -static int __init i2c_pcfisa_init(void) +static int __init i2c_pcfisa_init(void) { #ifdef __alpha__ - /* check to see we have memory mapped PCF8584 connected to the + /* check to see we have memory mapped PCF8584 connected to the Cypress cy82c693 PCI-ISA bridge as on UP2000 board */ if (base = 0) { struct pci_dev *cy693_dev; - - cy693_dev = pci_get_device(PCI_VENDOR_ID_CONTAQ, + + cy693_dev = pci_get_device(PCI_VENDOR_ID_CONTAQ, PCI_DEVICE_ID_CONTAQ_82C693, NULL); if (cy693_dev) { unsigned char config; /* yeap, we've found cypress, let's check config */ if (!pci_read_config_byte(cy693_dev, 0x47, &config)) { - - pr_debug("i2c-elektor: found cy82c693, config register 0x47 = 0x%02x.\n", config); + + pr_debug("%s: found cy82c693, config " + "register 0x47 = 0x%02x\n", + pcf_isa_ops.name, config); /* UP2000 board has this register set to 0xe1, - but the most significant bit as seems can be + but the most significant bit as seems can be reset during the proper initialisation - sequence if guys from API decides to do that - (so, we can even enable Tsunami Pchip - window for the upper 1 Gb) */ + sequence if guys from API decides to do that + (so, we can even enable Tsunami Pchip + window for the upper 1 Gb) */ /* so just check for ROMCS at 0xe0000, - ROMCS enabled for writes + ROMCS enabled for writes and external XD Bus buffer in use. */ if ((config & 0x7f) = 0x61) { /* seems to be UP2000 like board */ base = 0xe0000; mmapped = 1; - /* UP2000 drives ISA with + /* UP2000 drives ISA with 8.25 MHz (PCI/4) clock (this can be read from cypress) */ clock = I2C_PCF_CLK | I2C_PCF_TRNS90; - printk(KERN_INFO "i2c-elektor: found API UP2000 like board, will probe PCF8584 later.\n"); + pr_info("%s: found API UP2000 like " + "board, will probe PCF8584 " + "later\n", pcf_isa_ops.name); } } pci_dev_put(cy693_dev); @@ -250,12 +257,11 @@ /* sanity checks for mmapped I/O */ if (mmapped && base < 0xc8000) { - printk(KERN_ERR "i2c-elektor: incorrect base address (0x%0X) specified for mmapped I/O.\n", base); + printk(KERN_ERR "%s: incorrect base address (%#x) specified " + "for mmapped I/O\n", pcf_isa_ops.name, base); return -ENODEV; } - printk(KERN_INFO "i2c-elektor: i2c pcf8584-isa adapter driver\n"); - if (base = 0) { base = DEFAULT_BASE; } @@ -265,8 +271,8 @@ return -ENODEV; if (i2c_pcf_add_bus(&pcf_isa_ops) < 0) goto fail; - - printk(KERN_ERR "i2c-elektor: found device at %#x.\n", base); + + dev_info(&pcf_isa_ops.dev, "found device at %#x\n", base); return 0; ^ permalink raw reply [flat|nested] 10+ messages in thread
* [lm-sensors] Patch for i2c-elektor driver 2005-10-04 12:51 [lm-sensors] Patch for i2c-elektor driver Stig Telfer ` (6 preceding siblings ...) 2005-10-06 22:37 ` Jean Delvare @ 2005-10-07 15:30 ` Stig Telfer 2005-10-07 22:21 ` Jean Delvare 8 siblings, 0 replies; 10+ messages in thread From: Stig Telfer @ 2005-10-07 15:30 UTC (permalink / raw) To: lm-sensors Hi Jean - Thanks for the new patches. I tested them and they appear to work. However, the problem with dev_dbg message prefixes early in driver initialisation is still there: i2c-elektor: found cy82c693, config register 0x47 = 0xe1 i2c-elektor: found API UP2000 like board, will probe PCF8584 later i2c-elektor: registers 0xe0000 remapped to fffffd00000e0000 : Write fffffd00000e0001 0x80 : Read fffffd00000e0001 0x00 : Write fffffd00000e0000 0x55 : Read fffffd00000e0000 0x55 : Write fffffd00000e0001 0xA0 : Read fffffd00000e0001 0x20 : Write fffffd00000e0000 0x18 : Read fffffd00000e0000 0xF8 : Write fffffd00000e0001 0xC1 : Read fffffd00000e0001 0x81 i2c-algo-pcf.o: deteted and initialized PCF8584. i2c_adapter i2c-0: Registered as minor 0 i2c_adapter i2c-0: registered as adapter #0 i2c_adapter i2c-0: found device at 0xe0000 We don't get the driver name until we call i2c_add_adapter in i2c-algo-pcf.c. Should we revert the dev_dbg statements to pr_debugs for device byte read/writes? That doesn't sound very consistent though... >> * Jean: use of val & 255 in printk statement in pcf_isa_setbyte() - I >> think this is actually required because parameter val is an integer >> quantity and could have been sign-extended? I would prefer to change >> the function parameter to u8, but this violates the types of struct >> i2c_algo_pcf_data. > > The "& 255" is done in the debug printk only, iowrite8 is still called > with val unmasked, so if the masking actually did something, something > bas is happening, and the debug trace won't ever show it. > > Looking at i2c-algo-pcf, it's quite clear that val will always fit in > an u8, so the masking is actually needless. Perhaps the author's original intention would have been better described by casting val as (u8)val. This avoids any sign-extended mangling from implicit size conversions, like this one: char val=0x80; printf("Write 0x%02X\n", val); As you say, it doesn't matter for this case because our only caller (i2c-algo-pcf) does not generate arguments to pcf_isa_setbyte in this way. Best wishes, Stig ^ permalink raw reply [flat|nested] 10+ messages in thread
* [lm-sensors] Patch for i2c-elektor driver 2005-10-04 12:51 [lm-sensors] Patch for i2c-elektor driver Stig Telfer ` (7 preceding siblings ...) 2005-10-07 15:30 ` Stig Telfer @ 2005-10-07 22:21 ` Jean Delvare 8 siblings, 0 replies; 10+ messages in thread From: Jean Delvare @ 2005-10-07 22:21 UTC (permalink / raw) To: lm-sensors Hi Stig, > Thanks for the new patches. I tested them and they appear to work. > However, the problem with dev_dbg message prefixes early in driver > initialisation is still there: > > i2c-elektor: found cy82c693, config register 0x47 = 0xe1 > i2c-elektor: found API UP2000 like board, will probe PCF8584 later > i2c-elektor: registers 0xe0000 remapped to fffffd00000e0000 > : Write fffffd00000e0001 0x80 > : Read fffffd00000e0001 0x00 > : Write fffffd00000e0000 0x55 > : Read fffffd00000e0000 0x55 > : Write fffffd00000e0001 0xA0 > : Read fffffd00000e0001 0x20 > : Write fffffd00000e0000 0x18 > : Read fffffd00000e0000 0xF8 > : Write fffffd00000e0001 0xC1 > : Read fffffd00000e0001 0x81 > i2c-algo-pcf.o: deteted and initialized PCF8584. > i2c_adapter i2c-0: Registered as minor 0 > i2c_adapter i2c-0: registered as adapter #0 > i2c_adapter i2c-0: found device at 0xe0000 > > We don't get the driver name until we call i2c_add_adapter in > i2c-algo-pcf.c. I get it now. I had missed the fact that pcf_isa_{set,get}byte would be called during the initialization step. > Should we revert the dev_dbg statements to pr_debugs for device byte > read/writes? That doesn't sound very consistent though... That's the only option as far as I can see. I'll do that. Thanks, -- Jean Delvare ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2005-10-07 22:21 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-10-04 12:51 [lm-sensors] Patch for i2c-elektor driver Stig Telfer 2005-10-04 16:56 ` Jean Delvare 2005-10-04 21:23 ` Stig Telfer 2005-10-04 23:39 ` Jean Delvare 2005-10-04 23:46 ` Jean Delvare 2005-10-04 23:51 ` Greg KH 2005-10-06 12:46 ` Stig Telfer 2005-10-06 22:37 ` Jean Delvare 2005-10-07 15:30 ` Stig Telfer 2005-10-07 22:21 ` Jean Delvare
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.