Matrox Meteor II cards: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
m (16 revision(s))
 
(provide a bit of description; organize model and board revision stuff)
Line 1: Line 1:
The Matrox Meteor II consists of the custom Matrox VIA (Video Interface ASIC) which connects to the PCI bus.
The Matrox Meteor II is a family of frame grabber cards produced by Matrox (in the mid-1990s ?) which utilize the custom Matrox VIA (Video Interface ASIC) PCI interface chipset.


==Models(and board revisions of those models)==
There are different models:
Matrox Meteor-II (aka Matrox Meteor II/Standard)
* '''Matrox Meteor-II (aka Matrox Meteor II/Standard)'''
Part Numbers:
:Part Numbers:
METEOR2/4 : PCI
:*METEOR2/4 : Matrox Meteor-II/Standard for PCI
::750-00 rev. A Original version.
MET2-C/4 : CompactPCI
::750-01 rev. A No functional change.
MET2+/4 : PC/104-Plus
::750-02 rev. A Added expansion connectors, moved up from 4 to 7 inputs.
Matrox Meteor-II/1394, Part Number: METEOR2-1394
::750-02 rev. B No functional change.
Matrox Meteor-II/MC (aka Matrox Meteor-II/Multi Channel)
::750-0201 rev. A Support for KS0127 rev. B video decoder, and moved up from 7 to 12 inputs.
Part Numbers:
:::Note that MJPEG module support has been removed for some boards with this revision number. This is due to the discontinuation of this module.
METEOR2-MC/4C : PCI
:*MET2-C/4 : Matrox Meteor-II/Standard for CompactPCI
MET2-C-MC : CompactPCI
::807-00 rev. A Original version.
MET2-MC+/4 : PC/104-Plu
::807-00 rev. B No functional changes.
Matrox Meteor-II/DIG (aka Matrox Meteor-II/Digital)
::807-0001 rev. A Support for KS0127 rev. B video decoder.
Part Numbers
:::Note that MJPEG module support has been removed for some boards with this revision number. This is due to the discontinuation of this module.
METEOR2-DIG/4/R : PCI, RS-422 digital (METEOR2DIG64R ?)
:*MET2+/4 : Matrox Meteor-II/Standard for PC/104-Plus
METEOR2-DIG/4/L : PCI, LVDS digital
::885-00 rev. A Original version.
MET2-DIG+/R : PC/104-Plus, RS-422 (METEOR2DIG64L ?)
::885-00 rev. B No functional change.
MET2-DIG+/L : PC/104-Plus, LVDS
::885-00 rev. C No functional change.
Matrox Meteor-II/CL (aka Matrox Meteor-II/Camera Link), Part Number METEOR2-CL/32
::885-0001 rev. A Support for KS0127 rev. B video decoder.
::885-01 rev. A Replaced expansion connectors (for 896-01).
:::Note that MJPEG module support has been removed for some boards with this revision number. This is due to the discontinuation of this module.


* '''Matrox Meteor-II/1394, Part Number: METEOR2-1394'''
Note 1: The Meteor II is the successor of the Meteor, Meteor/RGB, Meteor/PPB, and Meteor/RGB/PPB boards.

* '''Matrox Meteor-II/MC (aka Matrox Meteor-II/Multi Channel)'''
:Part Numbers:
:*METEOR2-MC/4C : Matrox Meteor-II/Multi-Channel for PCI
::751-00 rev. A Original version.
::751-01 rev. A No functional change.
::751-02 rev. A No functional change.
::751-0201 rev. A No functional change.
:::Note that MJPEG module support has been removed for some boards with this revision number. This is due to the discontinuation of this module.
::751-03 rev. A VMChannel removed.
:::MJPEG module support removed for all boards.
:::Board now fits in a half-length PCI slot.
::751-0301 rev. A No functional change.
:*MET2-C-MC : Matrox Meteor-II/Multi-Channel for CompactPCI
:*MET2-MC+/4 : Matrox Meteor-II/Multi-Channel for PC/104-Plus
::886-00 rev. A Original version.
::886-00 rev. B No functional change.
::886-01 rev. A Replaced expansion connectors (for 896-01).
:::Note that MJPEG module support has been removed for some boards with this revision number. This is due to the discountinuation of this module.

* '''Matrox Meteor-II/DIG (aka Matrox Meteor-II/Digital)'''
: Part Numbers
:*METEOR2-DIG/4/R : Matrox Meteor-II/Digital for PCI, RS-422 digital (METEOR2DIG64R ?)
:*METEOR2-DIG/4/L : Matrox Meteor-II/Digital for PCI, LVDS digital
::752-00 rev. A Original version.
::752-01 rev. A No functional change.
::752-02 rev. A No functional change.
:*MET2-DIG+/R : Matrox Meteor-II/Digital for PC/104-Plus, RS-422 (METEOR2DIG64L ?)
:*MET2-DIG+/L : Matrox Meteor-II/Digital for PC/104-Plus, LVDS
::7035-01 rev. A Original version

* '''Matrox Meteor-II/CL (aka Matrox Meteor-II/Camera Link), Part Number METEOR2-CL/32'''

Note: There is also a card called Meteor-II/Display, but this is not a framgrabber !!!
MET2-C-DISP/AD Graphics adapter for CompactPCI with one analog VGA and one digital VGA (DVI) output
MET2-C-DISP/A24 Graphics adapter for CompactPCI with two analog VGA outputs
MET2-C-DISP/D24 Graphics adapter for CompactPCI with two digital VGA (DVI) outputs

Note: The Meteor II is the successor of the Meteor, Meteor/RGB, Meteor/PPB, and Meteor/RGB/PPB boards.
Matrox Meteor comes in four versions:
Matrox Meteor comes in four versions:
Matrox Meteor, a standard monochrome and color frame grabber.
Matrox Meteor, a standard monochrome and color frame grabber.
Line 28: Line 70:
Matrox Meteor/PPB/RGB, an RGB color frame grabber with an integrated PCI-to-PCI bridge.
Matrox Meteor/PPB/RGB, an RGB color frame grabber with an integrated PCI-to-PCI bridge.
The "PPB" boards were introduced to address compatibility problems with chipsets on early Pentium PRO motherboards.
The "PPB" boards were introduced to address compatibility problems with chipsets on early Pentium PRO motherboards.

Note 2: There is also a card called Meteor-II/Display, but this is not a framgrabber !!!
MET2-C-DISP/AD Graphics adapter for CompactPCI with one analog VGA and one digital VGA (DVI) output
MET2-C-DISP/A24 Graphics adapter for CompactPCI with two analog VGA outputs
MET2-C-DISP/D24 Graphics adapter for CompactPCI with two digital VGA (DVI) outputs

== Revisions of Matrox Meteor-II/Standard ==
Board Version Description
Matrox Meteor-II/Standard for PCI
750-00 rev. A Original version.
750-01 rev. A No functional change.
750-02 rev. A Added expansion connectors, moved up from 4 to 7 inputs.
750-02 rev. B No functional change.
750-0201 rev. A Support for KS0127 rev. B video decoder, and moved up from 7 to 12 inputs.
Note that MJPEG module support has been removed for some boards with this revision number. This is due to the discontinuation of this module.
Matrox Meteor-II/Standard for CompactPCI
807-00 rev. A Original version.
807-00 rev. B No functional changes.
807-0001 rev. A Support for KS0127 rev. B video decoder.
Note that MJPEG module support has been removed for
some boards with this revision number. This is due to the
discontinuation of this module.
Matrox Meteor-II/Standard for PC/104-Plus
885-00 rev. A Original version.
885-00 rev. B No functional change.
885-00 rev. C No functional change.
885-0001 rev. A Support for KS0127 rev. B video decoder.
885-01 rev. A Replaced expansion connectors (for 896-01).
Note that MJPEG module support has been removed for
some boards with this revision number. This is due to the
discontinuation of this module.


== Revisions of Matrox Meteor-II /Multi-Channel ==
Board Version Description
Matrox Meteor-II/Multi-Channel for PCI
751-00 rev. A Original version.
751-01 rev. A No functional change.
751-02 rev. A No functional change.
751-0201 rev. A No functional change.
Note that MJPEG module support has been removed for some boards with this revision number.
This is due to the discontinuation of this module.
751-03 rev. A VMChannel removed.
MJPEG module support removed for all boards.
Board now fits in a half-length PCI slot.
751-0301 rev. A No functional change.
Matrox Meteor-II/Multi-Channel for PC/104-Plus
886-00 rev. A Original version.
886-00 rev. B No functional change.
886-01 rev. A Replaced expansion connectors (for 896-01).
Note that MJPEG module support has been
removed for some boards with this revision number.
This is due to the discountinuation of this module.

== Revisions of Matrox Meteor-II /Digital ==
Board Version Description
Matrox Meteor-II/Digital for PCI
752-00 rev. A Original version.
752-01 rev. A No functional change.
752-02 rev. A No functional change.
Matrox Meteor-II/Digital for PC/104-Plus
7035-01 rev. A Original version



== User experience ==
== User experience ==

I have what I think is a Matrox Meteor II Multichannel card. I have had no luck getting it to work with v4l2, but here's how far I have gotten, in case it helps anyone out.
I have what I think is a Matrox Meteor II Multichannel card. I have had no luck getting it to work with v4l2, but here's how far I have gotten, in case it helps anyone out.

Revision as of 04:41, 22 January 2012

The Matrox Meteor II is a family of frame grabber cards produced by Matrox (in the mid-1990s ?) which utilize the custom Matrox VIA (Video Interface ASIC) PCI interface chipset.

Models(and board revisions of those models)

  • Matrox Meteor-II (aka Matrox Meteor II/Standard)
Part Numbers:
  • METEOR2/4 : Matrox Meteor-II/Standard for PCI
750-00 rev. A Original version.
750-01 rev. A No functional change.
750-02 rev. A Added expansion connectors, moved up from 4 to 7 inputs.
750-02 rev. B No functional change.
750-0201 rev. A Support for KS0127 rev. B video decoder, and moved up from 7 to 12 inputs.
Note that MJPEG module support has been removed for some boards with this revision number. This is due to the discontinuation of this module.
  • MET2-C/4  : Matrox Meteor-II/Standard for CompactPCI
807-00 rev. A Original version.
807-00 rev. B No functional changes.
807-0001 rev. A Support for KS0127 rev. B video decoder.
Note that MJPEG module support has been removed for some boards with this revision number. This is due to the discontinuation of this module.
  • MET2+/4  : Matrox Meteor-II/Standard for PC/104-Plus
885-00 rev. A Original version.
885-00 rev. B No functional change.
885-00 rev. C No functional change.
885-0001 rev. A Support for KS0127 rev. B video decoder.
885-01 rev. A Replaced expansion connectors (for 896-01).
Note that MJPEG module support has been removed for some boards with this revision number. This is due to the discontinuation of this module.
  • Matrox Meteor-II/1394, Part Number: METEOR2-1394
  • Matrox Meteor-II/MC (aka Matrox Meteor-II/Multi Channel)
Part Numbers:
  • METEOR2-MC/4C  : Matrox Meteor-II/Multi-Channel for PCI
751-00 rev. A Original version.
751-01 rev. A No functional change.
751-02 rev. A No functional change.
751-0201 rev. A No functional change.
Note that MJPEG module support has been removed for some boards with this revision number. This is due to the discontinuation of this module.
751-03 rev. A VMChannel removed.
MJPEG module support removed for all boards.
Board now fits in a half-length PCI slot.
751-0301 rev. A No functional change.
  • MET2-C-MC  : Matrox Meteor-II/Multi-Channel for CompactPCI
  • MET2-MC+/4  : Matrox Meteor-II/Multi-Channel for PC/104-Plus
886-00 rev. A Original version.
886-00 rev. B No functional change.
886-01 rev. A Replaced expansion connectors (for 896-01).
Note that MJPEG module support has been removed for some boards with this revision number. This is due to the discountinuation of this module.
  • Matrox Meteor-II/DIG (aka Matrox Meteor-II/Digital)
Part Numbers
  • METEOR2-DIG/4/R : Matrox Meteor-II/Digital for PCI, RS-422 digital (METEOR2DIG64R ?)
  • METEOR2-DIG/4/L : Matrox Meteor-II/Digital for PCI, LVDS digital
752-00 rev. A Original version.
752-01 rev. A No functional change.
752-02 rev. A No functional change.
  • MET2-DIG+/R  : Matrox Meteor-II/Digital for PC/104-Plus, RS-422 (METEOR2DIG64L ?)
  • MET2-DIG+/L  : Matrox Meteor-II/Digital for PC/104-Plus, LVDS
7035-01 rev. A Original version
  • Matrox Meteor-II/CL (aka Matrox Meteor-II/Camera Link), Part Number METEOR2-CL/32
Note: There is also a card called Meteor-II/Display, but this is not a framgrabber !!!
 MET2-C-DISP/AD Graphics adapter for CompactPCI with one analog VGA and one digital VGA (DVI) output
 MET2-C-DISP/A24 Graphics adapter for CompactPCI with two analog VGA outputs 
 MET2-C-DISP/D24 Graphics adapter for CompactPCI with two digital VGA (DVI) outputs
Note: The Meteor II is the successor of the Meteor, Meteor/RGB, Meteor/PPB, and Meteor/RGB/PPB boards.
Matrox Meteor comes in four versions:
 Matrox Meteor, a standard monochrome and color frame grabber.
 Matrox Meteor/PPB, a standard monochrome and color frame grabber with an integrated PCI-to-PCI bridge.
 Matrox Meteor/RGB, an RGB color frame grabber.
 Matrox Meteor/PPB/RGB, an RGB color frame grabber with an integrated PCI-to-PCI bridge.
The "PPB" boards were introduced to address compatibility problems with chipsets on early Pentium PRO motherboards.

User experience

I have what I think is a Matrox Meteor II Multichannel card. I have had no luck getting it to work with v4l2, but here's how far I have gotten, in case it helps anyone out.

lspci gives:

...
0000:03:01.0 ff00: Matrox Graphics, Inc. VIA Framegrabber
...

lspci -n gives:

...
0000:03:01.0 ff00: 102b:4536
...


In order from **oldest** to **newest** here are relevant driver projects that I found. None have been updated in the last year.

The best I was able to do (as of Apr 26 2006) was:

(1) Download the latest version from the Sourceforge project CVS:

cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/meteor2mc login
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/meteor2mc co meteor2mc 

(2) Made some changes. My changes are contained in the following patch, produced by diff -u:

diff -u meteor2mc/Makefile meteor2mcMe/Makefile
--- meteor2mc/Makefile	2005-03-10 19:16:31.000000000 -0800
+++ meteor2mcMe/Makefile	2006-04-26 01:29:29.000000000 -0700
@@ -20,7 +20,7 @@
 ##############################################################################
 
 obj-y		:=
-obj-m		:= $(MOD_NAME).o
+obj-m		:= via-init.o via-io.o $(MOD_NAME).o
 
 export-objs	:= 
 list-multi	:= $(MOD_NAME).o
Common subdirectories: meteor2mc/utils and meteor2mcMe/utils
diff -u meteor2mc/via-io.c meteor2mcMe/via-io.c
--- meteor2mc/via-io.c	2004-04-18 04:13:11.000000000 -0700
+++ meteor2mcMe/via-io.c	2006-04-26 01:30:27.000000000 -0700
@@ -117,7 +117,7 @@
 
 
 /* merge bits from insert into master (according to bitmask) */
-static inline u32
+static  u32
 merge_data (u32 master, u32 insert, u32 bitmask)
 {
 #if 0
@@ -133,7 +133,7 @@
 
 
 /* returns index of reg in list ([0,...]) or REG_NOT_FOUND */
-static inline int
+static  int
 get_list_index (const struct io_reg_list *list, u32 reg)
 {
 	int i = 0;
@@ -154,7 +154,7 @@
 
 
 /* returns index of reg in list ([0,...]) or REG_NOT_FOUND */
-static inline int
+static  int
 get_bitmask (const struct io_reg_list *list, u32 reg, u32 *bitmask)
 {
 	int idx;
@@ -191,7 +191,7 @@
 
 #ifdef NEW_REG_HANDLING
 
-inline void
+ void
 via_write (struct via_card *card, unsigned reg, u32 val)
 {
 	int idx;
@@ -202,7 +202,7 @@
 	writel (val, card->via_regs + reg);
 }
 
-inline u32
+ u32
 via_read (const struct via_card *card, unsigned reg)
 {
 	u32 val, bitmask;
@@ -218,13 +218,13 @@
 
 #else
 
-inline void
+ void
 via_write (const struct via_card *card, unsigned reg, u32 val)
 {
 	writel (val, card->via_regs + reg);
 }
 
-inline u32
+ u32
 via_read (const struct via_card *card, unsigned reg)
 {
 	return readl (card->via_regs + reg);
@@ -239,13 +239,13 @@
 /* -------------------------------------------------------------------
  * external registers (8 bit, mapped as 64 bit resources)
  * ------------------------------------------------------------------- */
-inline void
+ void
 ext_write (const struct via_card *card, unsigned reg, u32 val)
 {
 	writel ((val & VIA_BYTE), card->ext_regs + reg);
 }
 
-inline u32
+ u32
 ext_read (const struct via_card *card, unsigned reg)
 {
 	return (readl (card->ext_regs + reg) & VIA_BYTE);
@@ -258,7 +258,7 @@
 /* -------------------------------------------------------------------
  * threshold registers (mapped as 32 bit resources)
  * ------------------------------------------------------------------- */
-inline void
+ void
 thr_write (const struct via_card *card, unsigned reg, u32 val)
 {
 	writel (val, card->thr_regs + reg);
@@ -281,7 +281,7 @@
 
 #ifdef NEW_REG_HANDLING
 
-inline void
+ void
 psg_write (struct via_card *card, unsigned reg, u32 val)
 {
 	if (CHECK_PSG_REG (reg)) {
@@ -299,7 +299,7 @@
 	return;
 }
 
-inline u32
+ u32
 psg_read (struct via_card *card, unsigned reg)
 {
 	u32 val, bitmask;
@@ -326,7 +326,7 @@
 
 #else /* NEW_REG_HANDLING */
 
-inline void
+ void
 psg_write (struct via_card *card, unsigned reg, u32 val)
 {
 	if (CHECK_PSG_REG (reg)) {
@@ -349,7 +349,7 @@
 	return;
 }
 
-inline u32
+ u32
 psg_read (struct via_card *card, unsigned reg)
 {
 	u32 tmp;
@@ -380,7 +380,7 @@
  * LUT registers (8 bit, mapped as 64 bit resources)
  * ------------------------------------------------------------------- */
 
-inline void
+ void
 lut_write (struct via_card *card, unsigned reg, u32 val)
 {
 	if (CHECK_LUT_REG (reg)) {
@@ -399,7 +399,7 @@
 	writel (val, card->lut_regs + reg);
 }
 
-inline u32
+ u32
 lut_read (const struct via_card *card, unsigned reg)
 {
 	if (CHECK_LUT_REG (reg)) {
@@ -419,7 +419,7 @@
  * ICS1522 registers
  * ------------------------------------------------------------------- */
 
-static inline void
+static  void
 ics1522_write_bit (struct via_card *card, unsigned select, u8 bit)
 {
 	CLEAR_BIT (TMP_SERINT, (PSG_SERINT_SERSDATA |
@@ -440,7 +440,7 @@
 	return;
 }
 
-inline void
+ void
 ics1522_write (struct via_card *card, unsigned reg, u32 val)
 {
 	int i;
@@ -489,7 +489,7 @@
 
 #ifdef TRY_TO_READ_FROM_ICS1522
 
-static inline u32
+static  u32
 ics1522_read_bit (struct via_card *card, unsigned state)
 {
 	u32 tmp;
@@ -515,7 +515,7 @@
 	return tmp & PSG_SERINT_SERSDATA;
 }
 
-inline u32
+ u32
 ics1522_read (const struct via_card *card, unsigned reg)
 {
 	u32 tmp, r, d;
@@ -578,7 +578,7 @@
 
 #else /* TRY_TO_READ_FROM_ICS1522 */
 
-inline u32
+ u32
 ics1522_read (const struct via_card *card, unsigned reg)
 {
 	reg &= ICS1522_REG_MASK;
@@ -604,13 +604,13 @@
 /*
  * I2C bus between VIA and KS0127
  */
-static inline void
+static  void
 via_i2c_write (struct via_card *card, unsigned reg, u32 val)
 {
 	/* FIXME */
 }
 
-inline void
+void
 ks0127_write (struct via_card *card, unsigned reg, u32 val)
 {
 	via_i2c_write (card, reg, val);
@@ -624,7 +624,7 @@
 		ks0127_write (card, KS0127_CMDD, card->regs.ks0127_cmdd);
 }
 
-inline u32
+ u32
 ks0127_read (const struct via_card *card, unsigned reg)
 {
 	/* FIXME */
@@ -640,7 +640,7 @@
  * DAC8800 registers
  * ------------------------------------------------------------------- */
 
-static inline void
+static  void
 dac8800_write_bit (struct via_card *card, u8 set)
 {
 	CLEAR_BIT (TMP_SERINT, (PSG_SERINT_SERSDATA | PSG_SERINT_SERSCLK));
@@ -658,7 +658,7 @@
 	BIT_DEBUG;
 }
 
-inline void
+ void
 dac8800_write (struct via_card *card, unsigned reg, u32 val)
 {
 	int i;
@@ -781,7 +781,7 @@
 }
 
 
-inline u32
+ u32
 dac8800_read (struct via_card *card, unsigned reg)
 {
 	if (CHECK_DAC8800_REG (reg))  {
@@ -801,7 +801,7 @@
  * DS1020 Delay line
  * ------------------------------------------------------------------- */
 
-static inline void
+static  void
 ds1020_write_bit (struct via_card *card, u8 set)
 {
 	if (set)
@@ -821,7 +821,7 @@
 	BIT_DEBUG;
 }
 
-inline void
+ void
 ds1020_write (struct via_card *card, u32 val)
 {
 	int i;
@@ -853,7 +853,7 @@
 }
 
 
-inline u32
+ u32
 ds1020_read (struct via_card *card)
 {
 	/* we can't read from hw, always use the shadow value */
diff -u meteor2mc/via-stream.c meteor2mcMe/via-stream.c
--- meteor2mc/via-stream.c	2005-03-10 19:16:31.000000000 -0800
+++ meteor2mcMe/via-stream.c	2006-04-26 01:35:56.000000000 -0700
@@ -347,7 +347,9 @@
 	phys = card->himem_base + sbuf->vbuf.m.offset;
 	via_debug(VIA_DBG_MMAP,
 		  "remapping 0x%lx bytes @ 0x%lx (phys)\n", size, phys);
-	if (io_remap_page_range(vma,vma->vm_start, phys, size, PAGE_SHARED /* vma->vm_page_prot */)) {
+	// BAYLE: changed based on http://www.4front-tech.com/forum/viewtopic.php?p=2225&sid=0ba0ebb50ad4bdfa68a3ef8d94ef40fa
+	//	if (io_remap_page_range(vma,vma->vm_start, phys, size, PAGE_SHARED /* vma->vm_page_prot */)) {
+	if (remap_pfn_range(vma,vma->vm_start, (phys) >> PAGE_SHIFT, size, PAGE_SHARED /* vma->vm_page_prot */)) {
 		via_error("io_remap_page_range() failed\n");
 		ret = -EAGAIN;
 		goto err_out;
diff -u meteor2mc/via.c meteor2mcMe/via.c
--- meteor2mc/via.c	2005-03-10 19:16:31.000000000 -0800
+++ meteor2mcMe/via.c	2006-04-26 01:06:51.000000000 -0700
@@ -3272,7 +3272,7 @@
 		
 		strcpy(cap->driver,card->vdev.name);
 		strncpy(cap->card,card->vdev.name,sizeof(cap->card));
-		sprintf(cap->bus_info,"PCI:%s",card->pdev->slot_name);
+		sprintf(cap->bus_info,"PCI:%s",card->pdev->dev.bus_id);
 		cap->version = KERNEL_VERSION(1,1,10);
 		cap->capabilities =V4L2_CAP_VIDEO_CAPTURE;
 		return 0;
diff -u meteor2mc/via.h meteor2mcMe/via.h
--- meteor2mc/via.h	2005-03-10 18:29:07.000000000 -0800
+++ meteor2mcMe/via.h	2006-04-26 01:30:13.000000000 -0700
@@ -960,43 +960,43 @@
 
 
 /* VIA registers (mapped as 64 bit resources) */
-extern inline void via_write (struct via_card *card, unsigned reg, u32 val);
-extern inline u32 via_read (const struct via_card *card, unsigned reg);
+extern  void via_write (struct via_card *card, unsigned reg, u32 val);
+extern  u32 via_read (const struct via_card *card, unsigned reg);
 
 /* external registers (mapped as 64 bit resources) */
-extern inline void ext_write (const struct via_card *card, unsigned reg,
+extern  void ext_write (const struct via_card *card, unsigned reg,
 			      u32 val);
-extern inline u32 ext_read (const struct via_card *card, unsigned reg);
+extern  u32 ext_read (const struct via_card *card, unsigned reg);
 
 /* threshold registers (mapped as 32 bit resources) */
-extern inline void thr_write (const struct via_card *card, unsigned reg,
+extern  void thr_write (const struct via_card *card, unsigned reg,
 			      u32 val);
 
 /* PSG registers (mapped as 64 bit resources) */
-extern inline void psg_write (struct via_card *card, unsigned reg, u32 val);
-extern inline u32 psg_read (struct via_card *card, unsigned reg);
+extern  void psg_write (struct via_card *card, unsigned reg, u32 val);
+extern  u32 psg_read (struct via_card *card, unsigned reg);
 
 /* LUT registers (mapped as 64 bit resources) */
-extern inline void lut_write (struct via_card *card, unsigned reg, u32 val);
-extern inline u32 lut_read (const struct via_card *card, unsigned reg);
+extern  void lut_write (struct via_card *card, unsigned reg, u32 val);
+extern  u32 lut_read (const struct via_card *card, unsigned reg);
 
 /* ICS1522 registers */
-extern inline void ics1522_write (struct via_card *card, unsigned reg,
+extern  void ics1522_write (struct via_card *card, unsigned reg,
 				  u32 val);
-extern inline u32 ics1522_read (const struct via_card *card, unsigned reg);
+extern  u32 ics1522_read (const struct via_card *card, unsigned reg);
 
 /* KS0127 registers */
-extern inline void ks0127_write (struct via_card *card, unsigned reg, u32 val);
-extern inline u32 ks0127_read (const struct via_card *card, unsigned reg);
+extern void ks0127_write (struct via_card *card, unsigned reg, u32 val);
+extern  u32 ks0127_read (const struct via_card *card, unsigned reg);
 
-extern inline void via_i2c_init (struct via_card *card);
+extern  void via_i2c_init (struct via_card *card);
 
-extern inline u32 dac8800_read (struct via_card *card, unsigned reg);
-extern inline void dac8800_write (struct via_card *card, unsigned reg,
+extern  u32 dac8800_read (struct via_card *card, unsigned reg);
+extern  void dac8800_write (struct via_card *card, unsigned reg,
 				  u32 val);
 
-extern inline u32 ds1020_read (struct via_card *card);
-extern inline void ds1020_write (struct via_card *card, u32 val);
+extern  u32 ds1020_read (struct via_card *card);
+extern  void ds1020_write (struct via_card *card, u32 val);
 
 /* via-init.c */
 extern int via_init_all (struct via_card *card);

Basically, I made everything non-inline (there were recursive inline problems), changed io_remap_page_range to remap_pfn_range, changed card->pdev->slot_name to card->pdev->dev.bus_id, and modified the Makefile. Maybe I did something else too, I don't remember.


(3) Compiled on Debian with kernel linux-image-2.6.16-1-686 (and the matching kernel-headers package installed), and gcc-4.0.

(4) Tried "modprobe meteor2mc" which succeeded and left the following messages in dmsg:

meteor2mc: Unknown symbol io_remap_page_range
meteor2mc [via_module_init]: loading driver (dmask: 0x0, himem_offset 0, max_himem_mb: 16)
videodev: "meteor2mc (#0)" has no release callback. Please fix your driver for proper sysfs support, see http://lwn.net/Articles/36850/
meteor2mc [via_v4l2_initialize]: initialize called
meteor2mc [via_irq_init]: requested irq 5 and request_irq returned 0
meteor2mc [via_set_format]: unsupported color mode: 0
meteor2mc [via_set_channel]: FIXME: pcf_write (card, PCF8574_VIDSEL, 1)
meteor2mc [via_v4l2_initialize]: initialize succeeded
meteor2mc [via_module_init]: 1 Matrox VIA card(s) found.
meteor2mc [via_module_init]: card 0: Meteor-II/Std, IRQ 5, minor 0, 480 kB himem @ 0x3f688000 (phys)

(5) So far so good. But v4l2ucp fails with "/dev/video0 is not a V4L2 device". So it's not quite working yet.

xawtv fails with

/dev/video0 [v4l]: ioctl VIDIOCGCAP: Invalid argument
no video grabber device available


Please be aware that I am not a kernel guy and just hacked my way through this; I had no idea what I was doing, so it's possible that some of my patches weren't right. --BayleShanks 11:24, 26 April 2006 (CEST)