[kernel] r11629 - in dists/trunk/linux-2.6/debian: . patches/features/all patches/series

Maximilian Attems maks at alioth.debian.org
Fri Jun 13 10:05:39 UTC 2008


Author: maks
Date: Fri Jun 13 10:05:38 2008
New Revision: 11629

Log:
add request_firmware patch for ip2

COMPUTONE driver still needs to be enabled,
but be happy for now..


Added:
   dists/trunk/linux-2.6/debian/patches/features/all/drivers-char-ip2-request_firmware.patch
Modified:
   dists/trunk/linux-2.6/debian/changelog
   dists/trunk/linux-2.6/debian/patches/series/1~experimental.1

Modified: dists/trunk/linux-2.6/debian/changelog
==============================================================================
--- dists/trunk/linux-2.6/debian/changelog	(original)
+++ dists/trunk/linux-2.6/debian/changelog	Fri Jun 13 10:05:38 2008
@@ -38,6 +38,7 @@
   * topconfig: Enable PROFILING across all flavours. (closes: #484885)
   * 486: enable OLPC support thanks Andres Salomon for merge. 
     Kconfig variable patch by Robert Millan (closes: #485063).
+  * Add request_firmware patch for ip2.
 
   [ Martin Michlmayr ]
   * [arm/orion5x] Update the config to reflect upstream renaming this

Added: dists/trunk/linux-2.6/debian/patches/features/all/drivers-char-ip2-request_firmware.patch
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/patches/features/all/drivers-char-ip2-request_firmware.patch	Fri Jun 13 10:05:38 2008
@@ -0,0 +1,171 @@
+From 6b99baa860efde1daacc8be88abdf008b697c0ca Mon Sep 17 00:00:00 2001
+From: David Woodhouse <dwmw2 at infradead.org>
+Date: Wed, 11 Jun 2008 16:57:21 +0100
+Subject: [PATCH] ip2: use request_firmware()
+
+Converted with help from Jaswinder Singh
+
+Signed-off-by: David Woodhouse <dwmw2 at infradead.org>
+
+[ ported to debian dfsg without moving firmware anywhere -maks ]
+
+---
+
+ drivers/char/Kconfig       |    1 
+ drivers/char/ip2/ip2base.c |    5 +--
+ drivers/char/ip2/ip2main.c |   45 ++++++++++++++++++++++++++---------
+ 3 files changed, 36 insertions(+), 15 deletions(-)
+
+diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
+index 7d3f39e..2d854bb 100644
+--- a/drivers/char/Kconfig
++++ b/drivers/char/Kconfig
+@@ -108,7 +108,6 @@ config SERIAL_NONSTANDARD
+ 
+ config COMPUTONE
+ 	tristate "Computone IntelliPort Plus serial support"
+-	depends on BROKEN
+ 	depends on SERIAL_NONSTANDARD && (ISA || EISA || PCI)
+ 	---help---
+ 	  This driver supports the entire family of Intelliport II/Plus
+diff --git a/drivers/char/ip2/ip2base.c b/drivers/char/ip2/ip2base.c
+index 435ccfc..8155e24 100644
+--- a/drivers/char/ip2/ip2base.c
++++ b/drivers/char/ip2/ip2base.c
+@@ -21,10 +21,9 @@
+ #endif
+ 
+ #include "ip2types.h"		
+-#include "fip_firm.h"		// the meat
+ 
+ int
+-ip2_loadmain(int *, int  *, unsigned char *, int ); // ref into ip2main.c
++ip2_loadmain(int *, int *); // ref into ip2main.c
+ 
+ /* Note: Add compiled in defaults to these arrays, not to the structure
+ 	in ip2.h any longer.  That structure WILL get overridden
+@@ -52,7 +51,7 @@ static int __init ip2_init(void)
+ 		irq[0] = irq[1] = irq[2] = irq[3] = 0;
+ 	}
+ 
+-	return ip2_loadmain(io,irq,(unsigned char *)fip_firm,sizeof(fip_firm));
++	return ip2_loadmain(io, irq);
+ }
+ module_init(ip2_init);
+ 
+diff --git a/drivers/char/ip2/ip2main.c b/drivers/char/ip2/ip2main.c
+index c12cf8f..4c05856 100644
+--- a/drivers/char/ip2/ip2main.c
++++ b/drivers/char/ip2/ip2main.c
+@@ -98,6 +98,8 @@
+ #include <linux/major.h>
+ #include <linux/wait.h>
+ #include <linux/device.h>
++#include <linux/firmware.h>
++#include <linux/platform_device.h>
+ 
+ #include <linux/tty.h>
+ #include <linux/tty_flip.h>
+@@ -155,9 +157,7 @@ static char *pcDriver_name   = "ip2";
+ static char *pcIpl    		 = "ip2ipl";
+ 
+ // cheezy kludge or genius - you decide?
+-int ip2_loadmain(int *, int *, unsigned char *, int);
+-static unsigned char *Fip_firmware;
+-static int Fip_firmware_size;
++int ip2_loadmain(int *, int *);
+ 
+ /***********************/
+ /* Function Prototypes */
+@@ -208,7 +208,7 @@ static int ip2_ipl_open(struct inode *, struct file *);
+ static int DumpTraceBuffer(char __user *, int);
+ static int DumpFifoBuffer( char __user *, int);
+ 
+-static void ip2_init_board(int);
++static void ip2_init_board(int, const struct firmware *);
+ static unsigned short find_eisa_board(int);
+ 
+ /***************/
+@@ -474,8 +474,25 @@ static const struct tty_operations ip2_ops = {
+ /* SA_RANDOM   - can be source for cert. random number generators */
+ #define IP2_SA_FLAGS	0
+ 
++
++static const struct firmware *ip2_request_firmware(void)
++{
++	struct platform_device *pdev;
++	const struct firmware *fw;
++
++	pdev = platform_device_register_simple("ip2", 0, NULL, 0);
++	if (!IS_ERR(pdev))
++		return NULL;
++	if (request_firmware(&fw, "intelliport2.bin", &pdev->dev)) {
++		printk(KERN_ERR "Failed to load firmware 'intelliport2.bin'\n");
++		fw = NULL;
++	}
++	platform_device_unregister(pdev);
++	return fw;
++}
++
+ int
+-ip2_loadmain(int *iop, int *irqp, unsigned char *firmware, int firmsize) 
++ip2_loadmain(int *iop, int *irqp)
+ {
+ 	int i, j, box;
+ 	int err = 0;
+@@ -483,6 +500,7 @@ ip2_loadmain(int *iop, int *irqp, unsigned char *firmware, int firmsize)
+ 	i2eBordStrPtr pB = NULL;
+ 	int rc = -1;
+ 	static struct pci_dev *pci_dev_i = NULL;
++	const struct firmware *fw = NULL;
+ 
+ 	ip2trace (ITRC_NO_PORT, ITRC_INIT, ITRC_ENTER, 0 );
+ 
+@@ -516,9 +534,6 @@ ip2_loadmain(int *iop, int *irqp, unsigned char *firmware, int firmsize)
+ 	}
+ 	poll_only = !poll_only;
+ 
+-	Fip_firmware = firmware;
+-	Fip_firmware_size = firmsize;
+-
+ 	/* Announce our presence */
+ 	printk( KERN_INFO "%s version %s\n", pcName, pcVersion );
+ 
+@@ -638,10 +653,18 @@ ip2_loadmain(int *iop, int *irqp, unsigned char *firmware, int firmsize)
+ 		}
+ 	}
+ 	for ( i = 0; i < IP2_MAX_BOARDS; ++i ) {
++		/* We don't want to request the firmware unless we have at
++		   least one board */
+ 		if ( i2BoardPtrTable[i] != NULL ) {
+-			ip2_init_board( i );
++			if (!fw)
++				fw = ip2_request_firmware();
++			if (!fw)
++				break;
++			ip2_init_board(i, fw);
+ 		}
+ 	}
++	if (fw)
++		release_firmware(fw);
+ 
+ 	ip2trace (ITRC_NO_PORT, ITRC_INIT, 2, 0 );
+ 
+@@ -769,7 +792,7 @@ out:
+ /* are reported on the console.                                               */
+ /******************************************************************************/
+ static void
+-ip2_init_board( int boardnum )
++ip2_init_board(int boardnum, const struct firmware *fw)
+ {
+ 	int i;
+ 	int nports = 0, nboxes = 0;
+@@ -789,7 +812,7 @@ ip2_init_board( int boardnum )
+ 		goto err_initialize;
+ 	}
+ 
+-	if ( iiDownloadAll ( pB, (loadHdrStrPtr)Fip_firmware, 1, Fip_firmware_size )
++	if ( iiDownloadAll ( pB, (loadHdrStrPtr)fw->data, 1, fw->size )
+ 	    != II_DOWN_GOOD ) {
+ 		printk ( KERN_ERR "IP2: failed to download loadware\n" );
+ 		goto err_release_region;

Modified: dists/trunk/linux-2.6/debian/patches/series/1~experimental.1
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/series/1~experimental.1	(original)
+++ dists/trunk/linux-2.6/debian/patches/series/1~experimental.1	Fri Jun 13 10:05:38 2008
@@ -10,6 +10,7 @@
 + debian/dfsg/drivers-net-tg3-fix-simple.patch
 #+ debian/dfsg/drivers-net-bnx2-request_firmware-1.patch
 + features/all/drivers-usb-serial-keyspan-request_firmware.patch
++ features/all/drivers-char-ip2-request_firmware.patch
 + features/all/export-gfs2-locking-symbols.patch
 + features/all/export-unionfs-symbols.patch
 



More information about the Kernel-svn-changes mailing list