Skip to contentSkip to conversation

radeonfb: use PCI device Id in hex for name string

PATCH In review [email protected] 2 participants 3 messages Sep 4, 2007 – Sep 10, 2007 Framebuffer layer

lore
Share & tools
lore
#0 lore raw

PATCH 4/4 radeonfb: use PCI device Id in hex for name string

.. instead of potentially using nonprintable characters.

I guess the former (odd) concatenation was used to construct name strings that match the "*_ATI_RADEON_??" macros in include/linux/pci_ids.h

The PCI Id in hex is much more convenient to use. E.g. it can easily be verified against "lspci -nn" output.

---
 drivers/video/aty/radeon_base.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)
drivers/video/aty/radeon_base.c +2 -3
index 71b0c17..e6229b4 100644
@@ -2184,9 +2184,8 @@ static int __devinit radeonfb_pci_register (struct pci_dev *pdev,
 	rinfo->lvds_timer.function = radeon_lvds_timer_func;
 	rinfo->lvds_timer.data = (unsigned long)rinfo;
 
-	strcpy(rinfo->name, "ATI Radeon XX ");
-	rinfo->name[11] = ent->device >> 8;
-	rinfo->name[12] = ent->device & 0xFF;
+	snprintf(rinfo->name, sizeof(rinfo->name),
+		 "ATI Radeon %x", ent->device & 0xffff);
 	rinfo->family = ent->driver_data & CHIP_FAMILY_MASK;
 	rinfo->chipset = pdev->device;
 	rinfo->has_CRTC2 = (ent->driver_data & CHIP_HAS_CRTC2) != 0;
Signature · 1 line
1.5.3
#1 lore raw
Quoted 9 lines · On Tue, 2007-09-04 at 13:00 +0200, [email protected] wrote:

.. instead of potentially using nonprintable characters.

I guess the former (odd) concatenation was used to construct name strings that match the "*_ATI_RADEON_??" macros in include/linux/pci_ids.h

The PCI Id in hex is much more convenient to use. E.g. it can easily be verified against "lspci -nn" output.

Well... ATI used to have printable characters and those were commonly used to identify the cards. I'm not sure we want to unilateraly switch to hex here...

Ben.

Quoted 10 lines
---
 drivers/video/aty/radeon_base.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)
drivers/video/aty/radeon_base.c +0 -0
index 71b0c17..e6229b4 100644
@@ -2184,9 +2184,8 @@ static int __devinit radeonfb_pci_register (struct pci_dev *pdev,
 	rinfo->lvds_timer.function = radeon_lvds_timer_func;

drivers/video/aty/radeon_base.c static int __devinit radeonfb_pci_register (struct pci_dev *pdev, · line 2191

Quoted 10 lines
drivers/video/aty/radeon_base.c +2 -3
 	rinfo->lvds_timer.data = (unsigned long)rinfo;
 
-	strcpy(rinfo->name, "ATI Radeon XX ");
-	rinfo->name[11] = ent->device >> 8;
-	rinfo->name[12] = ent->device & 0xFF;
+	snprintf(rinfo->name, sizeof(rinfo->name),
+		 "ATI Radeon %x", ent->device & 0xffff);
 	rinfo->family = ent->driver_data & CHIP_FAMILY_MASK;
 	rinfo->chipset = pdev->device;
 	rinfo->has_CRTC2 = (ent->driver_data & CHIP_HAS_CRTC2) != 0;

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/

#2 lore raw
Quoted 3 lines · Benjamin Herrenschmidt

Well... ATI used to have printable characters and those were commonly used to identify the cards. I'm not sure we want to unilateraly switch to hex here...

I see.
How about the following patch?
As an illustration this gives following output for some cards:

radeonfb (0000:01:05.0): ATI Radeon 5975 "Yu"
radeonfb (0000:02:00.0): ATI Radeon 5b60 "[`"
radeonfb (0000:02:00.0): ATI Radeon 5960 "Y`"

Regards,

Andreas

--
radeonfb: use PCI device id in hex for name string

Additionally provide PCI device id in character format if possible. (The printable characters were commonly used to identify the cards.)

---
 drivers/video/aty/radeon_base.c |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)
drivers/video/aty/radeon_base.c +11 -3
index b1bee6f..306d3c7 100644
@@ -57,6 +57,7 @@
 #include <linux/kernel.h>
 #include <linux/errno.h>
 #include <linux/string.h>
+#include <linux/ctype.h>
 #include <linux/mm.h>
 #include <linux/slab.h>
 #include <linux/delay.h>
@@ -2156,6 +2157,7 @@ static int __devinit radeonfb_pci_register (struct pci_dev *pdev,
 	struct fb_info *info;
 	struct radeonfb_info *rinfo;
 	int ret;
+	unsigned char c1, c2;
 
 	RTRACE("radeonfb_pci_register BEGIN\n");
 	
@@ -2183,9 +2185,15 @@ static int __devinit radeonfb_pci_register (struct pci_dev *pdev,
 	rinfo->lvds_timer.function = radeon_lvds_timer_func;
 	rinfo->lvds_timer.data = (unsigned long)rinfo;
 
-	strcpy(rinfo->name, "ATI Radeon XX ");
-	rinfo->name[11] = ent->device >> 8;
-	rinfo->name[12] = ent->device & 0xFF;
+	c1 = ent->device >> 8;
+	c2 = ent->device & 0xff;
+	if (isprint(c1) && isprint(c2))
+		snprintf(rinfo->name, sizeof(rinfo->name),
+			 "ATI Radeon %x \"%c%c\"", ent->device & 0xffff, c1, c2);
+	else
+		snprintf(rinfo->name, sizeof(rinfo->name),
+			 "ATI Radeon %x", ent->device & 0xffff);
+
 	rinfo->family = ent->driver_data & CHIP_FAMILY_MASK;
 	rinfo->chipset = pdev->device;
 	rinfo->has_CRTC2 = (ent->driver_data & CHIP_HAS_CRTC2) != 0;
Signature · 8 lines
1.5.3



-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/