Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Panasonic Let's Note CF-SX2 problem (Re: kern info: [drm] failed to find VBIOS tables



Hi, 
Again Panasonic Let's Note CF Series Video card issue:
(i915m or i915gm)

Some time before,
N10 and SX2 were working without attached my nasty patch.

Say, even when at failing VBIOS table is not found, they were fine.
But that is NOT true recently, so the attached patch is necessary
for N10 and SX2

Checked with 9.0 and 9.99.48

           PCI_PRODCUT(pa->pa_id) 
           |     rom.rom_product                
           |     |     builtin			      9.0 
           v     v     LCD     console      X11	      install image
---     -----  ----    -----   ---------- ----------- ---  
R4
S9         46    46    OK      1024 x 768 1280 x 800  OK
J10        46    46    OK      1024 x 768 1366 x 768  OK
N10       126   106    -                               -
  (w/tweak)            OK      1024 x 768 1280 x 800  
SX2       166   106    -                               -
  (w/tweak)            OK      1024 x 768 1600 x 900 
SX3       a16   406    OK      1024 x 768 1600 x 900  OK
NX4      1616   406    OK      1024 x 768 1600 x 900  OK


(from dmesg:)
N9
i915drmkms0 at pci0 dev 2 function 0: vendor 8086 product 0046 (rev. 0x02)
J10
i915drmkms0 at pci0 dev 2 function 0: vendor 8086 product 0046 (rev. 0x02)
N10
i915drmkms0 at pci0 dev 2 function 0: Intel Sandy Bridge (mobile) GT2+ Integrated Graphics Device (rev. 0x09)
SX2
i915drmkms0 at pci0 dev 2 function 0: vendor 8086 product 0166 (rev. 0x09)
SX3
i915drmkms0 at pci0 dev 2 function 0: Intel HD Graphics (GT2) (rev. 0x0b)
NX4
i915drmkms0 at pci0 dev 2 function 0: Intel Ivy Bridge Integrated Graphics Device (rev. 0x09)


diff --git a/sys/dev/pci/pci_map.c b/sys/dev/pci/pci_map.c
index fa91835f99f..7c19cbe557f 100644
--- a/sys/dev/pci/pci_map.c
+++ b/sys/dev/pci/pci_map.c
@@ -393,6 +393,18 @@ pci_find_rom(const struct pci_attach_args *pa, bus_space_tag_t bst,
 		    offsetof(struct pci_rom, rom_vendor));
 		rom.rom_product = bus_space_read_2(bst, bsh, ptr +
 		    offsetof(struct pci_rom, rom_product));
+		/*  ------------ XXXXXXXX ------------------ */
+		if (
+		    rom.rom_vendor		== 0x8086 &&
+		    rom.rom_product		== 0x0106 &&
+		    ( PCI_PRODUCT(pa->pa_id)	== 0x0166 ||
+		      PCI_PRODUCT(pa->pa_id)	== 0x0126 
+		     )
+		    ) {
+		  rom.rom_product  = PCI_PRODUCT(pa->pa_id);
+		  printf( "%s:%4d: %s * XXXXX mapped XXXX\n", __FILE__, __LINE__, __func__);
+		}
+		/*  ------------ XXXXXXXX ------------------ */
 		rom.rom_class = bus_space_read_1(bst, bsh,
 		    ptr + offsetof (struct pci_rom, rom_class));
 		rom.rom_subclass = bus_space_read_1(bst, bsh,
@@ -413,6 +425,17 @@ pci_find_rom(const struct pci_attach_args *pa, bus_space_tag_t bst,
 
 		imagesz = rom.rom_len * 512;
 
+		printf( "%s:%4d: %s\n", __FILE__, __LINE__, __func__);
+		printf( "%9s\t%8s \t%8s\n", "sub", "PCI_..", "rom.rom_");
+		printf( "%9s\t%8s \t%8s\n", "--------", "--------", "--------");
+		printf( "%9s\t%08x\t%08x\n%9s\t%08x\t%08x\n%9s\t%08x\t%08x\n%9s\t%08x\t%08x\n%9s\t%08x\t%08x\n%9s\t%08x\t%08x\n",
+			"vendor",	PCI_VENDOR(pa->pa_id),       rom.rom_vendor,
+			"product",	PCI_PRODUCT(pa->pa_id),      rom.rom_product,
+			"class",	PCI_CLASS(pa->pa_class),     rom.rom_class,
+			"subclass",	PCI_SUBCLASS(pa->pa_class),  rom.rom_subclass,
+			"interface",	PCI_INTERFACE(pa->pa_class), rom.rom_interface,
+			"type",		type,			     rom.rom_code_type
+			);
 		if ((rom.rom_vendor == PCI_VENDOR(pa->pa_id)) &&
 		    (rom.rom_product == PCI_PRODUCT(pa->pa_id)) &&
 		    (rom.rom_class == PCI_CLASS(pa->pa_class)) &&
-- 
Makoto Fujiwara
mef%NetBSD.org@localhost
makoto%if.t.u-tokyo.ac.jp@localhost
Key fingerprint = 0BFA FAEB EAD1 90BA 7498  8F85 6809 9E0B B7EF A12E


Home | Main Index | Thread Index | Old Index