rpms/kernel/F-12 kernel.spec, 1.1915, 1.1916 linux-2.6-firewire-git-update.patch, 1.20, 1.21 linux-2.6-v4l-dvb-experimental.patch, 1.8, 1.9 linux-2.6-v4l-dvb-fixes.patch, 1.13, 1.14 linux-2.6-v4l-dvb-update.patch, 1.14, 1.15 linux-2.6-revert-dvb-net-kabi-change.patch, 1.1, NONE

Chuck Ebbert cebbert at fedoraproject.org
Thu Nov 12 16:50:25 UTC 2009


Author: cebbert

Update of /cvs/pkgs/rpms/kernel/F-12
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv328

Modified Files:
	kernel.spec linux-2.6-firewire-git-update.patch 
	linux-2.6-v4l-dvb-experimental.patch 
	linux-2.6-v4l-dvb-fixes.patch linux-2.6-v4l-dvb-update.patch 
Removed Files:
	linux-2.6-revert-dvb-net-kabi-change.patch 
Log Message:
Use ApplyOptionalPatch for v4l and firewire updates.
Drop unused v4l ABI fix.


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-12/kernel.spec,v
retrieving revision 1.1915
retrieving revision 1.1916
diff -u -p -r1.1915 -r1.1916
--- kernel.spec	12 Nov 2009 16:40:36 -0000	1.1915
+++ kernel.spec	12 Nov 2009 16:50:22 -0000	1.1916
@@ -738,7 +738,6 @@ Patch2802: linux-2.6-silence-acpi-blackl
 Patch2899: linux-2.6-v4l-dvb-fixes.patch
 Patch2900: linux-2.6-v4l-dvb-update.patch
 Patch2901: linux-2.6-v4l-dvb-experimental.patch
-Patch2903: linux-2.6-revert-dvb-net-kabi-change.patch
 Patch2904: v4l-dvb-fix-cx25840-firmware-loading.patch
 
 # fs fixes
@@ -1415,17 +1414,19 @@ ApplyPatch drm-vga-arb.patch
 ApplyPatch drm-radeon-kms-arbiter-return-ignore.patch
 
 # linux1394 git patches
-#ApplyPatch linux-2.6-firewire-git-update.patch
-#ApplyOptionalPatch linux-2.6-firewire-git-pending.patch
+# apply if non-empty
+ApplyOptionalPatch linux-2.6-firewire-git-update.patch
+ApplyOptionalPatch linux-2.6-firewire-git-pending.patch
 
 # silence the ACPI blacklist code
 ApplyPatch linux-2.6-silence-acpi-blacklist.patch
 
 # V4L/DVB updates/fixes/experimental drivers
-#ApplyPatch linux-2.6-v4l-dvb-fixes.patch
-#ApplyPatch linux-2.6-v4l-dvb-update.patch
-#ApplyPatch linux-2.6-v4l-dvb-experimental.patch
-#ApplyPatch linux-2.6-revert-dvb-net-kabi-change.patch
+# apply if non-empty
+ApplyOptionalPatch linux-2.6-v4l-dvb-fixes.patch
+ApplyOptionalPatch linux-2.6-v4l-dvb-update.patch
+ApplyOptionalPatch linux-2.6-v4l-dvb-experimental.patch
+
 ApplyPatch v4l-dvb-fix-cx25840-firmware-loading.patch
 
 # Patches headed upstream
@@ -2107,7 +2108,11 @@ fi
 # and build.
 
 %changelog
-* Thu Nov 12 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31.6-117
+* Thu Nov 12 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31.6-130
+- Use ApplyOptionalPatch for v4l and firewire updates.
+- Drop unused v4l ABI fix.
+
+* Thu Nov 12 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31.6-129
 - Linux 2.6.31.6
 - Drop merged patches:
   linux-2.6-iwlwifi-reduce-noise-when-skb-allocation-fails.patch

linux-2.6-firewire-git-update.patch:
 0 files changed

View full diff with command:
/usr/bin/cvs -n -f diff -kk -u -p -N -r 1.20 -r 1.21 linux-2.6-firewire-git-update.patchIndex: linux-2.6-firewire-git-update.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-12/linux-2.6-firewire-git-update.patch,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -p -r1.20 -r1.21
--- linux-2.6-firewire-git-update.patch	30 Jan 2009 19:15:58 -0000	1.20
+++ linux-2.6-firewire-git-update.patch	12 Nov 2009 16:50:22 -0000	1.21
@@ -1,3682 +1 @@
-linux1394-2.6.git tree vs. linus v2.6.29-rc3-git1 on 20090130 by jarod
-
----
- firewire-git/drivers/firewire/fw-card.c        |   68 -
- firewire-git/drivers/firewire/fw-cdev.c        | 1014 +++++++++++++++++--------
- firewire-git/drivers/firewire/fw-device.c      |   43 -
- firewire-git/drivers/firewire/fw-device.h      |    7 
- firewire-git/drivers/firewire/fw-iso.c         |  225 ++++-
- firewire-git/drivers/firewire/fw-ohci.c        |  236 ++---
- firewire-git/drivers/firewire/fw-sbp2.c        |   57 -
- firewire-git/drivers/firewire/fw-topology.c    |   28 
- firewire-git/drivers/firewire/fw-topology.h    |   19 
- firewire-git/drivers/firewire/fw-transaction.c |  151 +--
- firewire-git/drivers/firewire/fw-transaction.h |  125 ---
- include/linux/firewire-cdev.h                  |  170 +++-
- 12 files changed, 1359 insertions(+), 784 deletions(-)
-
-diff -Naurp linux-2.6-git/drivers/firewire/fw-card.c firewire-git/drivers/firewire/fw-card.c
---- linux-2.6-git/drivers/firewire/fw-card.c	2009-01-30 13:39:02.989651512 -0500
-+++ firewire-git/drivers/firewire/fw-card.c	2009-01-30 13:35:51.859771884 -0500
-@@ -63,8 +63,7 @@ static int descriptor_count;
- #define BIB_CMC			((1) << 30)
- #define BIB_IMC			((1) << 31)
- 
--static u32 *
--generate_config_rom(struct fw_card *card, size_t *config_rom_length)
-+static u32 *generate_config_rom(struct fw_card *card, size_t *config_rom_length)
- {
- 	struct fw_descriptor *desc;
- 	static u32 config_rom[256];
-@@ -128,8 +127,7 @@ generate_config_rom(struct fw_card *card
- 	return config_rom;
- }
- 
--static void
--update_config_roms(void)
-+static void update_config_roms(void)
- {
- 	struct fw_card *card;
- 	u32 *config_rom;
-@@ -141,8 +139,7 @@ update_config_roms(void)
- 	}
- }
- 
--int
--fw_core_add_descriptor(struct fw_descriptor *desc)
-+int fw_core_add_descriptor(struct fw_descriptor *desc)
- {
- 	size_t i;
- 
-@@ -171,8 +168,7 @@ fw_core_add_descriptor(struct fw_descrip
- 	return 0;
- }
- 
--void
--fw_core_remove_descriptor(struct fw_descriptor *desc)
-+void fw_core_remove_descriptor(struct fw_descriptor *desc)
- {
- 	mutex_lock(&card_mutex);
- 
-@@ -189,8 +185,7 @@ static const char gap_count_table[] = {
- 	63, 5, 7, 8, 10, 13, 16, 18, 21, 24, 26, 29, 32, 35, 37, 40
- };
- 
--void
--fw_schedule_bm_work(struct fw_card *card, unsigned long delay)
-+void fw_schedule_bm_work(struct fw_card *card, unsigned long delay)
- {
- 	int scheduled;
- 
-@@ -200,8 +195,7 @@ fw_schedule_bm_work(struct fw_card *card
- 		fw_card_put(card);
- }
- 
--static void
--fw_card_bm_work(struct work_struct *work)
-+static void fw_card_bm_work(struct work_struct *work)
- {
- 	struct fw_card *card = container_of(work, struct fw_card, work.work);
- 	struct fw_device *root_device;
-@@ -371,17 +365,16 @@ fw_card_bm_work(struct work_struct *work
- 	fw_card_put(card);
- }
- 
--static void
--flush_timer_callback(unsigned long data)
-+static void flush_timer_callback(unsigned long data)
- {
- 	struct fw_card *card = (struct fw_card *)data;
- 
- 	fw_flush_transactions(card);
- }
- 
--void
--fw_card_initialize(struct fw_card *card, const struct fw_card_driver *driver,
--		   struct device *device)
-+void fw_card_initialize(struct fw_card *card,
-+			const struct fw_card_driver *driver,
-+			struct device *device)
- {
- 	static atomic_t index = ATOMIC_INIT(-1);
- 
-@@ -406,9 +399,8 @@ fw_card_initialize(struct fw_card *card,
- }
- EXPORT_SYMBOL(fw_card_initialize);
- 
--int
--fw_card_add(struct fw_card *card,
--	    u32 max_receive, u32 link_speed, u64 guid)
-+int fw_card_add(struct fw_card *card,
-+		u32 max_receive, u32 link_speed, u64 guid)
- {
- 	u32 *config_rom;
- 	size_t length;
-@@ -435,23 +427,20 @@ EXPORT_SYMBOL(fw_card_add);
-  * dummy driver just fails all IO.
-  */
- 
--static int
--dummy_enable(struct fw_card *card, u32 *config_rom, size_t length)
-+static int dummy_enable(struct fw_card *card, u32 *config_rom, size_t length)
- {
- 	BUG();
- 	return -1;
- }
- 
--static int
--dummy_update_phy_reg(struct fw_card *card, int address,
--		     int clear_bits, int set_bits)
-+static int dummy_update_phy_reg(struct fw_card *card, int address,
-+				int clear_bits, int set_bits)
- {
- 	return -ENODEV;
- }
- 
--static int
--dummy_set_config_rom(struct fw_card *card,
--		     u32 *config_rom, size_t length)
-+static int dummy_set_config_rom(struct fw_card *card,
-+				u32 *config_rom, size_t length)
- {
- 	/*
- 	 * We take the card out of card_list before setting the dummy
-@@ -461,27 +450,23 @@ dummy_set_config_rom(struct fw_card *car
- 	return -1;
- }
- 
--static void
--dummy_send_request(struct fw_card *card, struct fw_packet *packet)
-+static void dummy_send_request(struct fw_card *card, struct fw_packet *packet)
- {
- 	packet->callback(packet, card, -ENODEV);
- }
- 
--static void
--dummy_send_response(struct fw_card *card, struct fw_packet *packet)
-+static void dummy_send_response(struct fw_card *card, struct fw_packet *packet)
- {
- 	packet->callback(packet, card, -ENODEV);
- }
- 
--static int
--dummy_cancel_packet(struct fw_card *card, struct fw_packet *packet)
-+static int dummy_cancel_packet(struct fw_card *card, struct fw_packet *packet)
- {
- 	return -ENOENT;
- }
- 
--static int
--dummy_enable_phys_dma(struct fw_card *card,
--		      int node_id, int generation)
-+static int dummy_enable_phys_dma(struct fw_card *card,
-+				 int node_id, int generation)
- {
- 	return -ENODEV;
- }
-@@ -496,16 +481,14 @@ static struct fw_card_driver dummy_drive
- 	.enable_phys_dma = dummy_enable_phys_dma,
- };
- 
--void
--fw_card_release(struct kref *kref)
-+void fw_card_release(struct kref *kref)
- {
- 	struct fw_card *card = container_of(kref, struct fw_card, kref);
- 
- 	complete(&card->done);
- }
- 
--void
--fw_core_remove_card(struct fw_card *card)
[...3292 lines suppressed...]
-+ * An %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event is sent after an isochronous
-+ * resource was deallocated at the IRM.  It is also sent when automatic
-+ * reallocation after a bus reset failed.
-+ *
-+ * @channel is <0 if no channel was (de)allocated or if reallocation failed.
-+ * @bandwidth is 0 if no bandwidth was (de)allocated or if reallocation failed.
-+ */
-+struct fw_cdev_event_iso_resource {
-+	__u64 closure;
-+	__u32 type;
-+	__u32 handle;
-+	__s32 channel;
-+	__s32 bandwidth;
-+};
-+
-+/**
-  * union fw_cdev_event - Convenience union of fw_cdev_event_ types
-  * @common:        Valid for all types
-  * @bus_reset:     Valid if @common.type == %FW_CDEV_EVENT_BUS_RESET
-  * @response:      Valid if @common.type == %FW_CDEV_EVENT_RESPONSE
-  * @request:       Valid if @common.type == %FW_CDEV_EVENT_REQUEST
-  * @iso_interrupt: Valid if @common.type == %FW_CDEV_EVENT_ISO_INTERRUPT
-+ * @iso_resource:  Valid if @common.type ==
-+ *				%FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED or
-+ *				%FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED
-  *
-  * Convenience union for userspace use.  Events could be read(2) into an
-  * appropriately aligned char buffer and then cast to this union for further
-@@ -163,13 +214,15 @@ struct fw_cdev_event_iso_interrupt {
-  * not fit will be discarded so that the next read(2) will return a new event.
-  */
- union fw_cdev_event {
--	struct fw_cdev_event_common common;
--	struct fw_cdev_event_bus_reset bus_reset;
--	struct fw_cdev_event_response response;
--	struct fw_cdev_event_request request;
--	struct fw_cdev_event_iso_interrupt iso_interrupt;
-+	struct fw_cdev_event_common		common;
-+	struct fw_cdev_event_bus_reset		bus_reset;
-+	struct fw_cdev_event_response		response;
-+	struct fw_cdev_event_request		request;
-+	struct fw_cdev_event_iso_interrupt	iso_interrupt;
-+	struct fw_cdev_event_iso_resource	iso_resource;
- };
- 
-+/* available since kernel version 2.6.22 */
- #define FW_CDEV_IOC_GET_INFO		_IOWR('#', 0x00, struct fw_cdev_get_info)
- #define FW_CDEV_IOC_SEND_REQUEST	_IOW('#', 0x01, struct fw_cdev_send_request)
- #define FW_CDEV_IOC_ALLOCATE		_IOWR('#', 0x02, struct fw_cdev_allocate)
-@@ -178,18 +231,29 @@ union fw_cdev_event {
- #define FW_CDEV_IOC_INITIATE_BUS_RESET	_IOW('#', 0x05, struct fw_cdev_initiate_bus_reset)
- #define FW_CDEV_IOC_ADD_DESCRIPTOR	_IOWR('#', 0x06, struct fw_cdev_add_descriptor)
- #define FW_CDEV_IOC_REMOVE_DESCRIPTOR	_IOW('#', 0x07, struct fw_cdev_remove_descriptor)
--
- #define FW_CDEV_IOC_CREATE_ISO_CONTEXT	_IOWR('#', 0x08, struct fw_cdev_create_iso_context)
- #define FW_CDEV_IOC_QUEUE_ISO		_IOWR('#', 0x09, struct fw_cdev_queue_iso)
- #define FW_CDEV_IOC_START_ISO		_IOW('#', 0x0a, struct fw_cdev_start_iso)
- #define FW_CDEV_IOC_STOP_ISO		_IOW('#', 0x0b, struct fw_cdev_stop_iso)
-+
-+/* available since kernel version 2.6.24 */
- #define FW_CDEV_IOC_GET_CYCLE_TIMER	_IOR('#', 0x0c, struct fw_cdev_get_cycle_timer)
- 
--/* FW_CDEV_VERSION History
-- *
-- * 1	Feb 18, 2007:  Initial version.
-+/* available since kernel version 2.6.30 */
-+#define FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE       _IOWR('#', 0x0d, struct fw_cdev_allocate_iso_resource)
-+#define FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE      _IOW('#', 0x0e, struct fw_cdev_deallocate)
-+#define FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE   _IOW('#', 0x0f, struct fw_cdev_allocate_iso_resource)
-+#define FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE _IOW('#', 0x10, struct fw_cdev_allocate_iso_resource)
-+#define FW_CDEV_IOC_GET_SPEED                    _IOR('#', 0x11, struct fw_cdev_get_speed)
-+#define FW_CDEV_IOC_SEND_BROADCAST_REQUEST       _IOW('#', 0x12, struct fw_cdev_send_request)
-+
-+/*
-+ * FW_CDEV_VERSION History
-+ *  1  (2.6.22)  - initial version
-+ *  2  (2.6.30)  - changed &fw_cdev_event_iso_interrupt.header if
-+ *                 &fw_cdev_create_iso_context.header_size is 8 or more
-  */
--#define FW_CDEV_VERSION		1
-+#define FW_CDEV_VERSION 2
- 
- /**
-  * struct fw_cdev_get_info - General purpose information ioctl
-@@ -201,7 +265,7 @@ union fw_cdev_event {
-  *		case, @rom_length is updated with the actual length of the
-  *		configuration ROM.
-  * @rom:	If non-zero, address of a buffer to be filled by a copy of the
-- *		local node's configuration ROM
-+ *		device's configuration ROM
-  * @bus_reset:	If non-zero, address of a buffer to be filled by a
-  *		&struct fw_cdev_event_bus_reset with the current state
-  *		of the bus.  This does not cause a bus reset to happen.
-@@ -229,7 +293,7 @@ struct fw_cdev_get_info {
-  * Send a request to the device.  This ioctl implements all outgoing requests.
-  * Both quadlet and block request specify the payload as a pointer to the data
-  * in the @data field.  Once the transaction completes, the kernel writes an
-- * &fw_cdev_event_request event back.  The @closure field is passed back to
-+ * &fw_cdev_event_response event back.  The @closure field is passed back to
-  * user space in the response event.
-  */
- struct fw_cdev_send_request {
-@@ -284,9 +348,9 @@ struct fw_cdev_allocate {
- };
- 
- /**
-- * struct fw_cdev_deallocate - Free an address range allocation
-- * @handle:	Handle to the address range, as returned by the kernel when the
-- *		range was allocated
-+ * struct fw_cdev_deallocate - Free a CSR address range or isochronous resource
-+ * @handle:	Handle to the address range or iso resource, as returned by the
-+ *		kernel when the range or resource was allocated
-  */
- struct fw_cdev_deallocate {
- 	__u32 handle;
-@@ -370,6 +434,9 @@ struct fw_cdev_remove_descriptor {
-  *
-  * If a context was successfully created, the kernel writes back a handle to the
-  * context, which must be passed in for subsequent operations on that context.
-+ *
-+ * Note that the effect of a @header_size > 4 depends on
-+ * &fw_cdev_get_info.version, as documented at &fw_cdev_event_iso_interrupt.
-  */
- struct fw_cdev_create_iso_context {
- 	__u32 type;
-@@ -473,10 +540,73 @@ struct fw_cdev_stop_iso {
-  * The %FW_CDEV_IOC_GET_CYCLE_TIMER ioctl reads the isochronous cycle timer
-  * and also the system clock.  This allows to express the receive time of an
-  * isochronous packet as a system time with microsecond accuracy.
-+ *
-+ * @cycle_timer consists of 7 bits cycleSeconds, 13 bits cycleCount, and
-+ * 12 bits cycleOffset, in host byte order.
-  */
- struct fw_cdev_get_cycle_timer {
- 	__u64 local_time;
- 	__u32 cycle_timer;
- };
- 
-+/**
-+ * struct fw_cdev_allocate_iso_resource - (De)allocate a channel or bandwidth
-+ * @closure:	Passed back to userspace in correponding iso resource events
-+ * @channels:	Isochronous channels of which one is to be (de)allocated
-+ * @bandwidth:	Isochronous bandwidth units to be (de)allocated
-+ * @handle:	Handle to the allocation, written by the kernel (only valid in
-+ *		case of %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE ioctls)
-+ *
-+ * The %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE ioctl initiates allocation of an
-+ * isochronous channel and/or of isochronous bandwidth at the isochronous
-+ * resource manager (IRM).  Only one of the channels specified in @channels is
-+ * allocated.  An %FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED is sent after
-+ * communication with the IRM, indicating success or failure in the event data.
-+ * The kernel will automatically reallocate the resources after bus resets.
-+ * Should a reallocation fail, an %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event
-+ * will be sent.  The kernel will also automatically deallocate the resources
-+ * when the file descriptor is closed.
-+ *
-+ * The %FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE ioctl can be used to initiate
-+ * deallocation of resources which were allocated as described above.
-+ * An %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event concludes this operation.
-+ *
-+ * The %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE ioctl is a variant of allocation
-+ * without automatic re- or deallocation.
-+ * An %FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED event concludes this operation,
-+ * indicating success or failure in its data.
-+ *
-+ * The %FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE ioctl works like
-+ * %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE except that resources are freed
-+ * instead of allocated.
-+ * An %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event concludes this operation.
-+ *
-+ * To summarize, %FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE allocates iso resources
-+ * for the lifetime of the fd or handle.
-+ * In contrast, %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE allocates iso resources
-+ * for the duration of a bus generation.
-+ *
-+ * @channels is a host-endian bitfield with the least significant bit
-+ * representing channel 0 and the most significant bit representing channel 63:
-+ * 1ULL << c for each channel c that is a candidate for (de)allocation.
-+ *
-+ * @bandwidth is expressed in bandwidth allocation units, i.e. the time to send
-+ * one quadlet of data (payload or header data) at speed S1600.
-+ */
-+struct fw_cdev_allocate_iso_resource {
-+	__u64 closure;
-+	__u64 channels;
-+	__u32 bandwidth;
-+	__u32 handle;
-+};
-+
-+/**
-+ * struct fw_cdev_get_speed - Query maximum speed to or from this device
-+ * @max_speed:	Speed code; minimum of the device's link speed, the local node's
-+ *		link speed, and all PHY port speeds between the two links
-+ */
-+struct fw_cdev_get_speed {
-+	__u32 max_speed;
-+};
-+
- #endif /* _LINUX_FIREWIRE_CDEV_H */
+empty

linux-2.6-v4l-dvb-experimental.patch:
 0 files changed

View full diff with command:
/usr/bin/cvs -n -f diff -kk -u -p -N -r 1.8 -r 1.9 linux-2.6-v4l-dvb-experimental.patchIndex: linux-2.6-v4l-dvb-experimental.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-12/linux-2.6-v4l-dvb-experimental.patch,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -p -r1.8 -r1.9
--- linux-2.6-v4l-dvb-experimental.patch	30 Mar 2009 12:11:44 -0000	1.8
+++ linux-2.6-v4l-dvb-experimental.patch	12 Nov 2009 16:50:22 -0000	1.9
@@ -1,14750 +1 @@
-Hans Verkuil (2):
-      V4L/DVB (10982): cx231xx: fix compile warning
-      V4L/DVB (10989): cx25840: cx23885 detection was broken
-
-Mauro Carvalho Chehab (12):
-      V4L/DVB (10953): cx25840: Fix CodingStyle errors introduced by the last patch
-      V4L/DVB (10955): cx231xx: CodingStyle automatic fixes with Lindent
-      V4L/DVB (10956): cx231xx: First series of manual CodingStyle fixes
-      V4L/DVB (10957a): cx231xx: Fix compilation breakage
-      V4L/DVB (11130): cx231xx: fix an inverted logic at vidioc_streamoff
-      V4L/DVB (11131): cx231xx: avoid trying to access unfilled dev struct
-      V4L/DVB (11132): cx231xx: usb probe cleanups
-      V4L/DVB (11133): cx231xx: don't print pcb config debug messages by default
-      V4L/DVB (11134): cx231xx: dmesg cleanup
-      V4L/DVB (11135): cx231xx: use usb_make_path() for bus_info
-      V4L/DVB (11250): cx231xx: Fix Kconfig help items
-      Merge branch 'next' of ../pending into Fedora
-
-Sri Deevi (7):
-      V4L/DVB (10952): cx25840: prepare it to be used by cx231xx module
-      V4L/DVB (10954): Add cx231xx USB driver
-      V4L/DVB (10957): cx231xx: Fix CodingStyle
-      V4L/DVB (10958): cx231xx: some additional CodingStyle and minor fixes
-      V4L/DVB (11038): Fix the issue with audio module & correction of Names
-      V4L/DVB (11128): cx231xx: convert the calls to subdev format
-      V4L/DVB (11129): cx231xx: Use generic names for each device block
-
-Uri Shkolnik (2):
-      V4L/DVB (11239): sdio: add cards ids for sms (Siano Mobile Silicon) MDTV receivers
-      V4L/DVB (11240): siano: add high level SDIO interface driver for SMS based cards
-
-diff --git a/drivers/media/dvb/siano/smssdio.c b/drivers/media/dvb/siano/smssdio.c
-new file mode 100644
-index 0000000..31ba8c5
---- /dev/null
-+++ b/drivers/media/dvb/siano/smssdio.c
-@@ -0,0 +1,356 @@
-+/*
-+ *  smssdio.c - Siano 1xxx SDIO interface driver
-+ *
-+ *  Copyright 2008 Pierre Ossman
-+ *
-+ * Based on code by Siano Mobile Silicon, Inc.,
-+ * Copyright (C) 2006-2008, Uri Shkolnik
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or (at
-+ * your option) any later version.
-+ *
-+ *
-+ * This hardware is a bit odd in that all transfers should be done
-+ * to/from the SMSSDIO_DATA register, yet the "increase address" bit
-+ * always needs to be set.
-+ *
-+ * Also, buffers from the card are always aligned to 128 byte
-+ * boundaries.
-+ */
-+
-+/*
-+ * General cleanup notes:
-+ *
-+ * - only typedefs should be name *_t
-+ *
-+ * - use ERR_PTR and friends for smscore_register_device()
-+ *
-+ * - smscore_getbuffer should zero fields
-+ *
-+ * Fix stop command
-+ */
-+
-+#include <linux/moduleparam.h>
-+#include <linux/firmware.h>
-+#include <linux/delay.h>
-+#include <linux/mmc/card.h>
-+#include <linux/mmc/sdio_func.h>
-+#include <linux/mmc/sdio_ids.h>
-+
-+#include "smscoreapi.h"
-+#include "sms-cards.h"
-+
-+/* Registers */
-+
-+#define SMSSDIO_DATA		0x00
-+#define SMSSDIO_INT		0x04
-+
-+static const struct sdio_device_id smssdio_ids[] = {
-+	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_STELLAR),
-+	 .driver_data = SMS1XXX_BOARD_SIANO_STELLAR},
-+	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_NOVA_A0),
-+	 .driver_data = SMS1XXX_BOARD_SIANO_NOVA_A},
-+	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_NOVA_B0),
-+	 .driver_data = SMS1XXX_BOARD_SIANO_NOVA_B},
-+	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_VEGA_A0),
-+	 .driver_data = SMS1XXX_BOARD_SIANO_VEGA},
-+	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_VENICE),
-+	 .driver_data = SMS1XXX_BOARD_SIANO_VEGA},
-+	{ /* end: all zeroes */ },
-+};
-+
-+MODULE_DEVICE_TABLE(sdio, smssdio_ids);
-+
-+struct smssdio_device {
-+	struct sdio_func *func;
-+
-+	struct smscore_device_t *coredev;
-+
-+	struct smscore_buffer_t *split_cb;
-+};
-+
-+/*******************************************************************/
-+/* Siano core callbacks                                            */
-+/*******************************************************************/
-+
-+static int smssdio_sendrequest(void *context, void *buffer, size_t size)
-+{
-+	int ret;
-+	struct smssdio_device *smsdev;
-+
-+	smsdev = context;
-+
-+	sdio_claim_host(smsdev->func);
-+
-+	while (size >= smsdev->func->cur_blksize) {
-+		ret = sdio_write_blocks(smsdev->func, SMSSDIO_DATA, buffer, 1);
-+		if (ret)
-+			goto out;
-+
-+		buffer += smsdev->func->cur_blksize;
-+		size -= smsdev->func->cur_blksize;
-+	}
-+
-+	if (size) {
-+		ret = sdio_write_bytes(smsdev->func, SMSSDIO_DATA,
-+				       buffer, size);
-+		if (ret)
-+			goto out;
-+	}
-+
-+out:
-+	sdio_release_host(smsdev->func);
-+
-+	return ret;
-+}
-+
-+/*******************************************************************/
-+/* SDIO callbacks                                                  */
-+/*******************************************************************/
-+
-+static void smssdio_interrupt(struct sdio_func *func)
-+{
-+	int ret, isr;
-+
-+	struct smssdio_device *smsdev;
-+	struct smscore_buffer_t *cb;
-+	struct SmsMsgHdr_ST *hdr;
-+	size_t size;
-+
-+	smsdev = sdio_get_drvdata(func);
-+
-+	/*
-+	 * The interrupt register has no defined meaning. It is just
-+	 * a way of turning of the level triggered interrupt.
-+	 */
-+	isr = sdio_readb(func, SMSSDIO_INT, &ret);
-+	if (ret) {
-+		dev_err(&smsdev->func->dev,
-+			"Unable to read interrupt register!\n");
-+		return;
-+	}
-+
-+	if (smsdev->split_cb == NULL) {
-+		cb = smscore_getbuffer(smsdev->coredev);
-+		if (!cb) {
-+			dev_err(&smsdev->func->dev,
-+				"Unable to allocate data buffer!\n");
-+			return;
-+		}
-+
-+		ret = sdio_read_blocks(smsdev->func, cb->p, SMSSDIO_DATA, 1);
-+		if (ret) {
-+			dev_err(&smsdev->func->dev,
-+				"Error %d reading initial block!\n", ret);
-+			return;
-+		}
-+
-+		hdr = cb->p;
-+
-+		if (hdr->msgFlags & MSG_HDR_FLAG_SPLIT_MSG) {
-+			smsdev->split_cb = cb;
-+			return;
[...14360 lines suppressed...]
-+			pll /= pll_post;
-+			v4l_dbg(1, cx25840_debug, client, "PLL = %d.%06d MHz\n",
-+					pll / 1000000, pll % 1000000);
-+			v4l_dbg(1, cx25840_debug, client, "PLL/8 = %d.%06d MHz\n",
-+					pll / 8000000, (pll / 8) % 1000000);
-+
-+			fin = ((u64)src_decimation * pll) >> 12;
-+			v4l_dbg(1, cx25840_debug, client,
-+					"ADC Sampling freq = %d.%06d MHz\n",
-+					fin / 1000000, fin % 1000000);
-+
-+			fsc = (((u64)sc) * pll) >> 24L;
-+			v4l_dbg(1, cx25840_debug, client,
-+					"Chroma sub-carrier freq = %d.%06d MHz\n",
-+					fsc / 1000000, fsc % 1000000);
-+
-+			v4l_dbg(1, cx25840_debug, client, "hblank %i, hactive %i, "
-+				"vblank %i, vactive %i, vblank656 %i, src_dec %i, "
-+				"burst 0x%02x, luma_lpf %i, uv_lpf %i, comb 0x%02x, "
-+				"sc 0x%06x\n",
-+				hblank, hactive, vblank, vactive, vblank656,
-+				src_decimation, burst, luma_lpf, uv_lpf, comb, sc);
-+		}
- 	}
- 
- 	/* Sets horizontal blanking delay and active lines */
-@@ -596,7 +669,7 @@ static int set_input(struct i2c_client *client, enum cx25840_video_input vid_inp
- 	 * configuration in reg (for the cx23885) so we have no
- 	 * need to attempt to flip bits for earlier av decoders.
- 	 */
--	if (!state->is_cx23885) {
-+	if (!state->is_cx23885 && !state->is_cx231xx) {
- 		switch (aud_input) {
- 		case CX25840_AUDIO_SERIAL:
- 			/* do nothing, use serial audio input */
-@@ -619,7 +692,7 @@ static int set_input(struct i2c_client *client, enum cx25840_video_input vid_inp
- 	/* Set INPUT_MODE to Composite (0) or S-Video (1) */
- 	cx25840_and_or(client, 0x401, ~0x6, is_composite ? 0 : 0x02);
- 
--	if (!state->is_cx23885) {
-+	if (!state->is_cx23885 && !state->is_cx231xx) {
- 		/* Set CH_SEL_ADC2 to 1 if input comes from CH3 */
- 		cx25840_and_or(client, 0x102, ~0x2, (reg & 0x80) == 0 ? 2 : 0);
- 		/* Set DUAL_MODE_ADC2 to 1 if input comes from both CH2&CH3 */
-@@ -659,6 +732,19 @@ static int set_input(struct i2c_client *client, enum cx25840_video_input vid_inp
- 		 */
- 		cx25840_write(client, 0x918, 0xa0);
- 		cx25840_write(client, 0x919, 0x01);
-+	} else if (state->is_cx231xx) {
-+		/* Audio channel 1 src : Parallel 1 */
-+		cx25840_write(client, 0x124, 0x03);
-+
-+		/* I2S_IN_CTL: I2S_IN_SONY_MODE, LEFT SAMPLE on WS=1 */
-+		cx25840_write(client, 0x914, 0xa0);
-+
-+		/* I2S_OUT_CTL:
-+		 * I2S_IN_SONY_MODE, LEFT SAMPLE on WS=1
-+		 * I2S_OUT_MASTER_MODE = Master
-+		 */
-+		cx25840_write(client, 0x918, 0xa0);
-+		cx25840_write(client, 0x919, 0x01);
- 	}
- 
- 	return 0;
-@@ -1118,6 +1204,8 @@ static int cx25840_init(struct v4l2_subdev *sd, u32 val)
- 			cx25836_initialize(client);
- 		else if (state->is_cx23885)
- 			cx23885_initialize(client);
-+		else if (state->is_cx231xx)
-+			cx231xx_initialize(client);
- 		else
- 			cx25840_initialize(client);
- 	}
-@@ -1159,7 +1247,7 @@ static int cx25840_s_stream(struct v4l2_subdev *sd, int enable)
- 	v4l_dbg(1, cx25840_debug, client, "%s output\n",
- 			enable ? "enable" : "disable");
- 	if (enable) {
--		if (state->is_cx23885) {
-+		if (state->is_cx23885 || state->is_cx231xx) {
- 			u8 v = (cx25840_read(client, 0x421) | 0x0b);
- 			cx25840_write(client, 0x421, v);
- 		} else {
-@@ -1169,7 +1257,7 @@ static int cx25840_s_stream(struct v4l2_subdev *sd, int enable)
- 					state->is_cx25836 ? 0x04 : 0x07);
- 		}
- 	} else {
--		if (state->is_cx23885) {
-+		if (state->is_cx23885 || state->is_cx231xx) {
- 			u8 v = cx25840_read(client, 0x421) & ~(0x0b);
- 			cx25840_write(client, 0x421, v);
- 		} else {
-@@ -1350,6 +1438,8 @@ static int cx25840_reset(struct v4l2_subdev *sd, u32 val)
- 		cx25836_initialize(client);
- 	else if (state->is_cx23885)
- 		cx23885_initialize(client);
-+	else if (state->is_cx231xx)
-+		cx231xx_initialize(client);
- 	else
- 		cx25840_initialize(client);
- 	return 0;
-@@ -1449,6 +1539,8 @@ static int cx25840_probe(struct i2c_client *client,
- 		id = V4L2_IDENT_CX25836 + ((device_id >> 4) & 0xf) - 6;
- 	} else if (device_id == 0x1313) {
- 		id = V4L2_IDENT_CX25836 + ((device_id >> 4) & 0xf) - 6;
-+	} else if ((device_id & 0xfff0) == 0x5A30) {
-+		id = V4L2_IDENT_CX25840 + ((device_id >> 4) & 0xf);
- 	}
- 	else {
- 		v4l_dbg(1, cx25840_debug, client, "cx25840 not found\n");
-@@ -1471,6 +1563,7 @@ static int cx25840_probe(struct i2c_client *client,
- 	state->c = client;
- 	state->is_cx25836 = ((device_id & 0xff00) == 0x8300);
- 	state->is_cx23885 = (device_id == 0x0000) || (device_id == 0x1313);
-+	state->is_cx231xx = (device_id == 0x5a3e);
- 	state->vid_input = CX25840_COMPOSITE7;
- 	state->aud_input = CX25840_AUDIO8;
- 	state->audclk_freq = 48000;
-diff --git a/drivers/media/video/cx25840/cx25840-core.h b/drivers/media/video/cx25840/cx25840-core.h
-index 9ad0eb8..814b565 100644
---- a/drivers/media/video/cx25840/cx25840-core.h
-+++ b/drivers/media/video/cx25840/cx25840-core.h
-@@ -50,6 +50,7 @@ struct cx25840_state {
- 	u32 rev;
- 	int is_cx25836;
- 	int is_cx23885;
-+	int is_cx231xx;
- 	int is_initialized;
- 	wait_queue_head_t fw_wait;    /* wake up when the fw load is finished */
- 	struct work_struct fw_work;   /* work entry for fw load */
-diff --git a/drivers/media/video/cx25840/cx25840-firmware.c b/drivers/media/video/cx25840/cx25840-firmware.c
-index 0b2dceb..0df53b0 100644
---- a/drivers/media/video/cx25840/cx25840-firmware.c
-+++ b/drivers/media/video/cx25840/cx25840-firmware.c
-@@ -25,6 +25,7 @@
- 
- #define FWFILE "v4l-cx25840.fw"
- #define FWFILE_CX23885 "v4l-cx23885-avcore-01.fw"
-+#define FWFILE_CX231XX "v4l-cx231xx-avcore-01.fw"
- 
- /*
-  * Mike Isely <isely at pobox.com> - The FWSEND parameter controls the
-@@ -96,9 +97,17 @@ int cx25840_loadfw(struct i2c_client *client)
- 	u8 buffer[FWSEND];
- 	const u8 *ptr;
- 	int size, retval;
-+	int MAX_BUF_SIZE = FWSEND;
- 
- 	if (state->is_cx23885)
- 		firmware = FWFILE_CX23885;
-+	else if (state->is_cx231xx)
-+		firmware = FWFILE_CX231XX;
-+
-+	if ((state->is_cx231xx) && MAX_BUF_SIZE > 16) {
-+		v4l_err(client, " Firmware download size changed to 16 bytes max length\n");
-+		MAX_BUF_SIZE = 16;  /* cx231xx cannot accept more than 16 bytes at a time */
-+	}
- 
- 	if (request_firmware(&fw, firmware, FWDEV(client)) != 0) {
- 		v4l_err(client, "unable to open firmware %s\n", firmware);
-@@ -113,7 +122,7 @@ int cx25840_loadfw(struct i2c_client *client)
- 	size = fw->size;
- 	ptr = fw->data;
- 	while (size > 0) {
--		int len = min(FWSEND - 2, size);
-+		int len = min(MAX_BUF_SIZE - 2, size);
- 
- 		memcpy(buffer + 2, ptr, len);
- 
-diff --git a/include/linux/i2c-id.h b/include/linux/i2c-id.h
-index f27604a..f9d48c9 100644
---- a/include/linux/i2c-id.h
-+++ b/include/linux/i2c-id.h
-@@ -88,6 +88,7 @@
- #define I2C_HW_B_CX2341X	0x010020 /* Conexant CX2341X MPEG encoder cards */
- #define I2C_HW_B_CX23885	0x010022 /* conexant 23885 based tv cards (bus1) */
- #define I2C_HW_B_AU0828		0x010023 /* auvitek au0828 usb bridge */
-+#define I2C_HW_B_CX231XX	0x010024 /* Conexant CX231XX USB based cards */
- #define I2C_HW_B_HDPVR		0x010025 /* Hauppauge HD PVR */
- 
- /* --- SGI adapters							*/
-diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
-index ea1bf5b..3d7533d 100644
---- a/include/linux/mmc/sdio_ids.h
-+++ b/include/linux/mmc/sdio_ids.h
-@@ -24,6 +24,14 @@
-  */
- 
- #define SDIO_VENDOR_ID_MARVELL			0x02df
-+#define SDIO_VENDOR_ID_SIANO			0x039a
-+
- #define SDIO_DEVICE_ID_MARVELL_LIBERTAS		0x9103
-+#define SDIO_DEVICE_ID_SIANO_STELLAR 		0x5347
-+#define SDIO_DEVICE_ID_SIANO_NOVA_A0		0x1100
-+#define SDIO_DEVICE_ID_SIANO_NOVA_B0		0x0201
-+#define SDIO_DEVICE_ID_SIANO_NICE		0x0202
-+#define SDIO_DEVICE_ID_SIANO_VEGA_A0		0x0300
-+#define SDIO_DEVICE_ID_SIANO_VENICE		0x0301
- 
- #endif
+empty

linux-2.6-v4l-dvb-fixes.patch:
 0 files changed

View full diff with command:
/usr/bin/cvs -n -f diff -kk -u -p -N -r 1.13 -r 1.14 linux-2.6-v4l-dvb-fixes.patchIndex: linux-2.6-v4l-dvb-fixes.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-12/linux-2.6-v4l-dvb-fixes.patch,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -p -r1.13 -r1.14
--- linux-2.6-v4l-dvb-fixes.patch	10 Jul 2009 01:58:13 -0000	1.13
+++ linux-2.6-v4l-dvb-fixes.patch	12 Nov 2009 16:50:22 -0000	1.14
@@ -1,113215 +1 @@
-Abylay Ospan (5):
-      V4L/DVB (10796): Add init code for NetUP Dual DVB-S2 CI card
-      V4L/DVB (10797): Add EEPROM code for NetUP Dual DVB-S2 CI card.
-      V4L/DVB (10798): Add CIMax(R) SP2 Common Interface code for NetUP Dual DVB-S2 CI card
-      V4L/DVB (11056): Bug fix in NetUP: restore high address lines in CI
-      V4L/DVB (11057): Fix CiMax stability in Netup Dual DVB-S2 CI
-
-Adam Baker (2):
-      V4L/DVB (10639): gspca - sq905: New subdriver.
-      V4L/DVB (10829): Support alternate resolutions for sq905
-
-Alan Cox (2):
-      V4L/DVB (11243): cx88: Missing failure checks
-      V4L/DVB (11244): pluto2: silence spew of card hung up messages
-
-Alan McIvor (1):
-      V4L/DVB (11124): Add support for ProVideo PV-183 to bttv
-
-Alexey Klimov (18):
-      V4L/DVB (10316): v4l/dvb: use usb_make_path in usb-radio drivers
-      V4L/DVB (10324): em28xx: Correct mailing list
-      V4L/DVB (10335): gspca - all subdrivers: Fix CodingStyle in sd_mod_init function.
-      V4L/DVB (10336): gspca - all subdrivers: Return ret instead of -1 in sd_mod_init.
-      V4L/DVB (10455): radio-mr800: codingstyle cleanups
-      V4L/DVB (10456): radio-mr800: place dev_err instead of dev_warn
-      V4L/DVB (10457): radio-mr800: add more dev_err messages in probe
-      V4L/DVB (10458): radio-mr800: move radio start and stop in one function
-      V4L/DVB (10459): radio-mr800: fix amradio_set_freq
-      V4L/DVB (10460): radio-mr800: add stereo support
-      V4L/DVB (10461): radio-mr800: add few lost mutex locks
-      V4L/DVB (10462): radio-mr800: increase version and add comments
-      V4L/DVB (10463): radio-mr800: fix checking of retval after usb_bulk_msg
-      V4L/DVB (10464): radio-si470x: use usb_make_path in usb-radio drivers
-      V4L/DVB (10465): dsbr100: Add few lost mutex locks.
-      V4L/DVB (10522): em28xx-audio: replace printk with em28xx_errdev
-      V4L/DVB (10946): radio-rtrack2: fix double mutex_unlock
-      V4L/DVB (10961): radio-terratec: remove linux/delay.h which hadn't been used.
-
-Andy Walls (44):
-      V4L/DVB (10274): cx18: Fix a PLL divisor update for the I2S master clock
-      V4L/DVB (10275): cx18: Additional debug to display outgoing mailbox parameters
-      V4L/DVB (10276): cx18, cx2341x, ivtv: Add AC-3 audio encoding control to cx18
-      V4L/DVB (10277): cx18, cx2341x: Fix bugs in cx18 AC3 control and comply with V4L2 spec
-      V4L/DVB (10278): cx18: Fix bad audio in first analog capture.
-      V4L/DVB (10279): cx18: Print driver version number when logging status
-      V4L/DVB (10280): cx18: Rename structure members: dev to pci_dev and v4l2dev to video_dev
-      V4L/DVB (10281): cx18: Conversion to new V4L2 framework: use v4l2_device object
-      V4L/DVB (10283): cx18: Call request_module() with proper argument types.
-      V4L/DVB (10284): cx18: Add initial entry for a Leadtek DVR3100 H hybrid card
-      V4L/DVB (10433): cx18: Defer A/V core initialization until a valid cx18_av_cmd arrives
-      V4L/DVB (10434): cx18: Smarter verification of CX18_AUDIO_ENABLE register writes
-      V4L/DVB (10435): cx18: Normalize APU after second APU firmware load
-      V4L/DVB (10436): cx18: Fix coding style of a switch statement per checkpatch.pl
-      V4L/DVB (10437): cx18: Remove an unused spinlock
-      V4L/DVB (10439): cx18: Clean-up and enable sliced VBI handling
-      V4L/DVB (10440): cx18: Fix presentation timestamp (PTS) for VBI buffers
-      V4L/DVB (10441): cx18: Fix VBI ioctl() handling and Raw/Sliced VBI state management
-      V4L/DVB (10442): cx18: Fixes for enforcing when Encoder Raw VBI params can be set
-      V4L/DVB (10443): cx18: Use correct line counts per field in firmware API call
-      V4L/DVB (10444): cx18: Fix sliced VBI PTS and fix artifacts in last raw line of field
-      V4L/DVB (10445): cx18: Process Raw VBI on a whole frame basis; fix VBI buffer size
-      V4L/DVB (10446): cx18: Finally get sliced VBI working - for 525 line 60 Hz systems at least
-      V4L/DVB (10755): cx18: Convert the integrated A/V decoder core interface to a v4l2_subdev
-      V4L/DVB (10756): cx18: Slim down instance handling, build names from v4l2_device.name
-      V4L/DVB (10757): cx18, v4l2-chip-ident: Finish conversion of AV decoder core to v4l2_subdev
-      V4L/DVB (10758): cx18: Convert I2C devices to v4l2_subdevices
-      V4L/DVB (10759): cx18: Convert GPIO connected functions to act as v4l2_subdevices
-      V4L/DVB (10760): cx18: Fix a memory leak of buffers used for sliced VBI insertion
-      V4L/DVB (10761): cx18: Change log lines for internal subdevs and fix tveeprom reads
-      V4L/DVB (10762): cx18: Get rid of unused variables related to video output
-      V4L/DVB (10763): cx18: Increment version number due to significant changes for v4l2_subdevs
-      V4L/DVB (10764): cx18: Disable AC3 controls as the firmware doesn't support AC3
-      V4L/DVB (10850): cx18: Use strlcpy() instead of strncpy() for temp eeprom i2c_client setup
-      V4L/DVB (10851): cx18: Fix a video scaling check problem introduced by sliced VBI changes
-      V4L/DVB (10852): cx18: Include cx18-audio.h in cx18-audio.c to eliminate s-parse warning
-      V4L/DVB (10853): cx18: Fix s-parse warnings and a logic error about extracting the VBI PTS
-      V4L/DVB (10854): cx18: Correct comments about vertical and horizontal blanking timings
-      V4L/DVB (10855): cx18: Fix VPS service register codes
-      V4L/DVB (10856): cx18: Add interlock so sliced VBI insertion only happens for an MPEG PS
-      V4L/DVB (11042): v4l2-api: Add definitions for V4L2_MPEG_STREAM_VBI_FMT_IVTV payloads
-      V4L/DVB (11091): cx18, ivtv: Ensure endianess for linemasks in VBI embedded in MPEG stream
-      V4L/DVB (11092): cx18: Optimize processing of VBI buffers from the capture unit
-      V4L/DVB (11233): mxl5005s: Switch in mxl5005s_set_params should operate on correct values
-
-Antoine Jacquet (1):
-      V4L/DVB (10263): zr364xx: add support for Aiptek DV T300
-
-Antonio Ospite (2):
-      V4L/DVB (10344): gspca - ov534: Disable the Hercules webcams.
-      V4L/DVB (10676): mt9m111: Call icl->reset() on mt9m111_reset().
-
-Antti Palosaari (4):
-      V4L/DVB (10286): af9015: add new USB ID for KWorld DVB-T 395U
-      V4L/DVB (10329): af9015: remove dual_mode module param
-      V4L/DVB (11215): zl10353: add support for Intel CE6230 and Intel CE6231
-      V4L/DVB (11216): Add driver for Intel CE6230 DVB-T USB2.0
-
-Arne Luehrs (1):
-      V4L/DVB (10319): dib0700: enable IR receiver in Nova TD usb stick (52009)
-
-Artem Makhutov (1):
-      V4L/DVB (11248): Remove debug output from stb6100_cfg.h
-
-Bruno Christo (1):
-      V4L/DVB (10827): Add support for GeoVision GV-800(S)
-
-Daniel Glöckner (1):
-      V4L/DVB (11242): allow v4l2 drivers to provide a get_unmapped_area handler
-
-Devin Heitmueller (36):
-      V4L/DVB (10320): dib0700: fix i2c error message to make data type clear
-      V4L/DVB (10321): dib0700: Report dib0700_i2c_enumeration failures
-      V4L/DVB (11059): xc5000: fix bug for hybrid xc5000 devices with IF other than 5380
-      V4L/DVB (11060): au8522: rename the au8522.c source file
-      V4L/DVB (11061): au8522: move shared state and common functions into a separate header files
-      V4L/DVB (11062): au8522: fix register read/write high bits
-      V4L/DVB (11063): au8522: power down the digital demod when not in use
-      V4L/DVB (11064): au8522: make use of hybrid framework so analog/digital demod can share state
-      V4L/DVB (11065): au8522: add support for analog side of demodulator
-      V4L/DVB (11066): au0828: add support for analog functionality in bridge
-      V4L/DVB (11067): au0828: workaround a bug in the au0828 i2c handling
-      V4L/DVB (11068): au0828: add analog profile for the HVR-850
-      V4L/DVB (11069): au8522: add mutex protecting use of hybrid state
-      V4L/DVB (11070): au0828: Rework the way the analog video binding occurs
-      V4L/DVB (11071): tveeprom: add the xc5000 tuner to the tveeprom definition
-      V4L/DVB (11072): au0828: advertise only NTSC-M (as opposed to all NTSC standards)
-      V4L/DVB (11073): au0828: disable VBI code since it doesn't yet work
-      V4L/DVB (11074): au0828: fix i2c enumeration bug
-      V4L/DVB (11075): au0828: make register debug lines easier to read
-      V4L/DVB (11076): au0828: make g_chip_ident call work properly
-      V4L/DVB (11077): au0828: properly handle missing analog USB endpoint
-      V4L/DVB (11078): au0828: properly handle non-existent analog inputs
-      V4L/DVB (11079): au0828: fix panic on disconnect if analog initialization failed
-      V4L/DVB (11080): au0828: Convert to use v4l2_device/subdev framework
-      V4L/DVB (11081): au0828: make sure v4l2_device name is unique
-      V4L/DVB (11082): au0828: remove memset calls in v4l2 routines.
-      V4L/DVB (11083): au0828: remove some unneeded braces
-      V4L/DVB (11084): au0828: add entry for undefined input type
-      V4L/DVB (11085): au0828/au8522: Codingstyle fixes
-      V4L/DVB (11086): au0828: rename macro for currently non-function VBI support
-      V4L/DVB (11088): au0828: finish videodev/subdev conversion
-      V4L/DVB (11089): au8522: finish conversion to v4l2_device/subdev
-      V4L/DVB (11139): em28xx: add remote control definition for HVR-900 (both versions)
-      V4L/DVB (11140): usbvision: fix oops on ARM platform when allocating transfer buffers
-      V4L/DVB (11141): em28xx: fix oops on ARM platform when allocating transfer buffers
-      V4L/DVB (11142): au0828: fix oops on ARM platform when allocating transfer buffers
-
-Douglas Kosovic (1):
-      V4L/DVB (10299): bttv: Add support for IVCE-8784 support for V4L2 bttv driver
-
-Douglas Schilling Landgraf (13):
-      V4L/DVB (10323): em28xx: Add entry for GADMEI TVR200
-      V4L/DVB (10326): em28xx: Cleanup: fix bad whitespacing
-      V4L/DVB (10327): em28xx: Add check before call em28xx_isoc_audio_deinit()
-      V4L/DVB (10517): em28xx: remove bad check (changeset a31c595188af)
-      V4L/DVB (10520): em28xx-audio: Add spinlock for trigger
-      V4L/DVB (10521): em28xx-audio: Add lock for users
-      V4L/DVB (10523): em28xx-audio: Add macros EM28XX_START_AUDIO / EM28XX_STOP_AUDIO
-      V4L/DVB (10524): em28xx: Add DVC 101 model to Pinnacle Dazzle description
-      V4L/DVB (10556): em28xx-cards: Add Pinnacle Dazzle Video Creator Plus DVC107 description
-      V4L/DVB (10739): em28xx-cards: remove incorrect entry
-      V4L/DVB (10740): em28xx-cards: Add SIIG AVTuner-PVR board
-      V4L/DVB (10741): em28xx: Add Kaiser Baas Video to DVD maker support
-      V4L/DVB (11222): gspca - zc3xx: The webcam DLink DSB - C320 has the sensor pas106.
-
-Erik Andren (3):
-      V4L/DVB (10334): gspca - stv06xx: Rework control description.
-      V4L/DVB (10341): gspca - stv06xx: Plug a memory leak in the pb0100 sensor driver.
-      V4L/DVB (10342): gspca - stv06xx: Add ctrl caching to the vv6410.
-
-Erik S. Beiser (1):
-      V4L/DVB (10826): cx88: Add IR support to pcHDTV HD3000 & HD5500
-
-Guennadi Liakhovetski (9):
-      V4L/DVB (10665): soc-camera: add data signal polarity flags to drivers
-      V4L/DVB (10672): sh_mobile_ceu_camera: include NV* formats into the format list only once.
-      V4L/DVB (10673): mt9t031: fix gain and hflip controls, register update, and scaling
-      V4L/DVB (10674): soc-camera: camera host driver for i.MX3x SoCs
-      V4L/DVB (10675): soc-camera: extend soc_camera_bus_param_compatible with more tests
-      V4L/DVB (11024): soc-camera: separate S_FMT and S_CROP operations
-      V4L/DVB (11025): soc-camera: configure drivers with a default format on open
-      V4L/DVB (11026): sh-mobile-ceu-camera: set field to the value, configured at open()
-      V4L/DVB (11027): soc-camera: configure drivers with a default format at probe time
-
-Hans Verkuil (171):
-      V4L/DVB (10231): v4l2-subdev: add v4l2_ext_controls support
-      V4L/DVB (10244): v4l2: replace a few snprintfs with strlcpy
-      V4L/DVB (10246): saa6752hs: convert to v4l2_subdev.
-      V4L/DVB (10247): saa7134: convert to the new v4l2 framework.
-      V4L/DVB (10249): v4l2-common: added v4l2_i2c_tuner_addrs()
-      V4L/DVB (10251): cx25840: add comments explaining what the init() does.
[...112825 lines suppressed...]
--				return -EFAULT;
-+	}
-+	return -EINVAL;
-+}
-+
-+static int vidioc_g_ctrl(struct file *file, void *priv,
-+					struct v4l2_control *ctrl)
-+{
-+	struct snd_tea575x *tea = video_drvdata(file);
-+
-+	switch (ctrl->id) {
-+	case V4L2_CID_AUDIO_MUTE:
-+		if (tea->ops->mute) {
-+			ctrl->value = tea->mute;
- 			return 0;
- 		}
--		case VIDIOCSAUDIO:
--		{
--			struct video_audio v;
--			if(copy_from_user(&v, arg, sizeof(v)))
--				return -EFAULT;
--			if (tea->ops->mute)
--				tea->ops->mute(tea,
--					       (v.flags &
--						VIDEO_AUDIO_MUTE) ? 1 : 0);
--			if(v.audio)
--				return -EINVAL;
-+	}
-+	return -EINVAL;
-+}
-+
-+static int vidioc_s_ctrl(struct file *file, void *priv,
-+					struct v4l2_control *ctrl)
-+{
-+	struct snd_tea575x *tea = video_drvdata(file);
-+
-+	switch (ctrl->id) {
-+	case V4L2_CID_AUDIO_MUTE:
-+		if (tea->ops->mute) {
-+			tea->ops->mute(tea, ctrl->value);
-+			tea->mute = 1;
- 			return 0;
- 		}
--		default:
--			return -ENOIOCTLCMD;
- 	}
-+	return -EINVAL;
-+}
-+
-+static int vidioc_g_input(struct file *filp, void *priv, unsigned int *i)
-+{
-+	*i = 0;
-+	return 0;
- }
- 
--static void snd_tea575x_release(struct video_device *vfd)
-+static int vidioc_s_input(struct file *filp, void *priv, unsigned int i)
- {
-+	if (i != 0)
-+		return -EINVAL;
-+	return 0;
- }
- 
- static int snd_tea575x_exclusive_open(struct file *file)
-@@ -189,50 +260,91 @@ static int snd_tea575x_exclusive_release(struct file *file)
- 	return 0;
- }
- 
-+static const struct v4l2_file_operations tea575x_fops = {
-+	.owner		= THIS_MODULE,
-+	.open           = snd_tea575x_exclusive_open,
-+	.release        = snd_tea575x_exclusive_release,
-+	.ioctl		= video_ioctl2,
-+};
-+
-+static const struct v4l2_ioctl_ops tea575x_ioctl_ops = {
-+	.vidioc_querycap    = vidioc_querycap,
-+	.vidioc_g_tuner     = vidioc_g_tuner,
-+	.vidioc_s_tuner     = vidioc_s_tuner,
-+	.vidioc_g_audio     = vidioc_g_audio,
-+	.vidioc_s_audio     = vidioc_s_audio,
-+	.vidioc_g_input     = vidioc_g_input,
-+	.vidioc_s_input     = vidioc_s_input,
-+	.vidioc_g_frequency = vidioc_g_frequency,
-+	.vidioc_s_frequency = vidioc_s_frequency,
-+	.vidioc_queryctrl   = vidioc_queryctrl,
-+	.vidioc_g_ctrl      = vidioc_g_ctrl,
-+	.vidioc_s_ctrl      = vidioc_s_ctrl,
-+};
-+
-+static struct video_device tea575x_radio = {
-+	.name           = "tea575x-tuner",
-+	.fops           = &tea575x_fops,
-+	.ioctl_ops 	= &tea575x_ioctl_ops,
-+	.release	= video_device_release,
-+};
-+
- /*
-  * initialize all the tea575x chips
-  */
- void snd_tea575x_init(struct snd_tea575x *tea)
- {
-+	int retval;
- 	unsigned int val;
-+	struct video_device *tea575x_radio_inst;
- 
- 	val = tea->ops->read(tea);
- 	if (val == 0x1ffffff || val == 0) {
--		snd_printk(KERN_ERR "Cannot find TEA575x chip\n");
-+		snd_printk(KERN_ERR
-+			   "tea575x-tuner: Cannot find TEA575x chip\n");
- 		return;
- 	}
- 
--	memset(&tea->vd, 0, sizeof(tea->vd));
--	strcpy(tea->vd.name, tea->tea5759 ? "TEA5759 radio" : "TEA5757 radio");
--	tea->vd.release = snd_tea575x_release;
--	video_set_drvdata(&tea->vd, tea);
--	tea->vd.fops = &tea->fops;
- 	tea->in_use = 0;
--	tea->fops.owner = tea->card->module;
--	tea->fops.open = snd_tea575x_exclusive_open;
--	tea->fops.release = snd_tea575x_exclusive_release;
--	tea->fops.ioctl = snd_tea575x_ioctl;
--	if (video_register_device(&tea->vd, VFL_TYPE_RADIO, tea->dev_nr - 1) < 0) {
--		snd_printk(KERN_ERR "unable to register tea575x tuner\n");
-+	tea->val = TEA575X_BIT_BAND_FM | TEA575X_BIT_SEARCH_10_40;
-+	tea->freq = 90500 * 16;		/* 90.5Mhz default */
-+
-+	tea575x_radio_inst = video_device_alloc();
-+	if (tea575x_radio_inst == NULL) {
-+		printk(KERN_ERR "tea575x-tuner: not enough memory\n");
- 		return;
- 	}
--	tea->vd_registered = 1;
- 
--	tea->val = TEA575X_BIT_BAND_FM | TEA575X_BIT_SEARCH_10_40;
--	tea->freq = 90500 * 16;		/* 90.5Mhz default */
-+	memcpy(tea575x_radio_inst, &tea575x_radio, sizeof(tea575x_radio));
-+
-+	strcpy(tea575x_radio.name, tea->tea5759 ?
-+				   "TEA5759 radio" : "TEA5757 radio");
-+
-+	video_set_drvdata(tea575x_radio_inst, tea);
-+
-+	retval = video_register_device(tea575x_radio_inst,
-+				       VFL_TYPE_RADIO, radio_nr);
-+	if (retval) {
-+		printk(KERN_ERR "tea575x-tuner: can't register video device!\n");
-+		kfree(tea575x_radio_inst);
-+		return;
-+	}
- 
- 	snd_tea575x_set_freq(tea);
- 
- 	/* mute on init */
--	if (tea->ops->mute)
-+	if (tea->ops->mute) {
- 		tea->ops->mute(tea, 1);
-+		tea->mute = 1;
-+	}
-+	tea->vd = tea575x_radio_inst;
- }
- 
- void snd_tea575x_exit(struct snd_tea575x *tea)
- {
--	if (tea->vd_registered) {
--		video_unregister_device(&tea->vd);
--		tea->vd_registered = 0;
-+	if (tea->vd) {
-+		video_unregister_device(tea->vd);
-+		tea->vd = NULL;
- 	}
- }
- 
-diff --git a/sound/pci/Kconfig b/sound/pci/Kconfig
-index 82b9bdd..6cc18bf 100644
---- a/sound/pci/Kconfig
-+++ b/sound/pci/Kconfig
-@@ -487,7 +487,7 @@ config SND_FM801
- config SND_FM801_TEA575X_BOOL
- 	bool "ForteMedia FM801 + TEA5757 tuner"
- 	depends on SND_FM801
--	depends on VIDEO_V4L1=y || VIDEO_V4L1=SND_FM801
-+	depends on VIDEO_V4L2=y || VIDEO_V4L2=SND_FM801
- 	help
- 	  Say Y here to include support for soundcards based on the ForteMedia
- 	  FM801 chip with a TEA5757 tuner connected to GPIO1-3 pins (Media
---- linux-2.6.30.noarch/drivers/media/video/hdpvr/hdpvr-i2c.c~	2009-07-09 21:56:58.000000000 -0400
-+++ linux-2.6.30.noarch/drivers/media/video/hdpvr/hdpvr-i2c.c	2009-07-09 21:57:34.000000000 -0400
-@@ -64,7 +64,7 @@ static int hdpvr_i2c_write(struct hdpvr_
- 
- 	ret = usb_control_msg(dev->udev,
- 			      usb_rcvctrlpipe(dev->udev, 0),
--			      REQTYPE_I2C_WRITE_STAT, CTRL_READ_REQUEST,
-+			      REQTYPE_I2C_WRITE_STATT, CTRL_READ_REQUEST,
- 			      0, 0, buf, 2, 1000);
- 
- 	if (ret == 2)
+empty

linux-2.6-v4l-dvb-update.patch:
 0 files changed

Index: linux-2.6-v4l-dvb-update.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-12/linux-2.6-v4l-dvb-update.patch,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -p -r1.14 -r1.15
--- linux-2.6-v4l-dvb-update.patch	28 Mar 2009 12:52:34 -0000	1.14
+++ linux-2.6-v4l-dvb-update.patch	12 Nov 2009 16:50:23 -0000	1.15
@@ -1,366 +1 @@
-Mauro Carvalho Chehab (1):
-      Merge branch 'next' of ../devel into Fedora
-
-Uri Shkolnik (1):
-      V4L/DVB (11241): Siano: SDIO interface driver - remove two redundant lines
-
-diff --git a/linux/drivers/media/dvb/siano/smssdio.c b/linux/drivers/media/dvb/siano/smssdio.c
-new file mode 100644
-index 0000000..4f8fa59
---- /dev/null
-+++ b/linux/drivers/media/dvb/siano/smssdio.c
-@@ -0,0 +1,354 @@
-+/*
-+ *  smssdio.c - Siano 1xxx SDIO interface driver
-+ *
-+ *  Copyright 2008 Pierre Ossman
-+ *
-+ * Based on code by Siano Mobile Silicon, Inc.,
-+ * Copyright (C) 2006-2008, Uri Shkolnik
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or (at
-+ * your option) any later version.
-+ *
-+ *
-+ * This hardware is a bit odd in that all transfers should be done
-+ * to/from the SMSSDIO_DATA register, yet the "increase address" bit
-+ * always needs to be set.
-+ *
-+ * Also, buffers from the card are always aligned to 128 byte
-+ * boundaries.
-+ */
-+
-+/*
-+ * General cleanup notes:
-+ *
-+ * - only typedefs should be name *_t
-+ *
-+ * - use ERR_PTR and friends for smscore_register_device()
-+ *
-+ * - smscore_getbuffer should zero fields
-+ *
-+ * Fix stop command
-+ */
-+
-+#include <linux/moduleparam.h>
-+#include <linux/firmware.h>
-+#include <linux/delay.h>
-+#include <linux/mmc/card.h>
-+#include <linux/mmc/sdio_func.h>
-+#include <linux/mmc/sdio_ids.h>
-+
-+#include "smscoreapi.h"
-+#include "sms-cards.h"
-+
-+/* Registers */
-+
-+#define SMSSDIO_DATA		0x00
-+#define SMSSDIO_INT		0x04
-+
-+static const struct sdio_device_id smssdio_ids[] = {
-+	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_STELLAR),
-+	 .driver_data = SMS1XXX_BOARD_SIANO_STELLAR},
-+	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_NOVA_A0),
-+	 .driver_data = SMS1XXX_BOARD_SIANO_NOVA_A},
-+	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_NOVA_B0),
-+	 .driver_data = SMS1XXX_BOARD_SIANO_NOVA_B},
-+	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_VEGA_A0),
-+	 .driver_data = SMS1XXX_BOARD_SIANO_VEGA},
-+	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_VENICE),
-+	 .driver_data = SMS1XXX_BOARD_SIANO_VEGA},
-+	{ /* end: all zeroes */ },
-+};
-+
-+MODULE_DEVICE_TABLE(sdio, smssdio_ids);
-+
-+struct smssdio_device {
-+	struct sdio_func *func;
-+
-+	struct smscore_device_t *coredev;
-+
-+	struct smscore_buffer_t *split_cb;
-+};
-+
-+/*******************************************************************/
-+/* Siano core callbacks                                            */
-+/*******************************************************************/
-+
-+static int smssdio_sendrequest(void *context, void *buffer, size_t size)
-+{
-+	int ret;
-+	struct smssdio_device *smsdev;
-+
-+	smsdev = context;
-+
-+	sdio_claim_host(smsdev->func);
-+
-+	while (size >= smsdev->func->cur_blksize) {
-+		ret = sdio_write_blocks(smsdev->func, SMSSDIO_DATA, buffer, 1);
-+		if (ret)
-+			goto out;
-+
-+		buffer += smsdev->func->cur_blksize;
-+		size -= smsdev->func->cur_blksize;
-+	}
-+
-+	if (size) {
-+		ret = sdio_write_bytes(smsdev->func, SMSSDIO_DATA,
-+				       buffer, size);
-+	}
-+
-+out:
-+	sdio_release_host(smsdev->func);
-+
-+	return ret;
-+}
-+
-+/*******************************************************************/
-+/* SDIO callbacks                                                  */
-+/*******************************************************************/
-+
-+static void smssdio_interrupt(struct sdio_func *func)
-+{
-+	int ret, isr;
-+
-+	struct smssdio_device *smsdev;
-+	struct smscore_buffer_t *cb;
-+	struct SmsMsgHdr_ST *hdr;
-+	size_t size;
-+
-+	smsdev = sdio_get_drvdata(func);
-+
-+	/*
-+	 * The interrupt register has no defined meaning. It is just
-+	 * a way of turning of the level triggered interrupt.
-+	 */
-+	isr = sdio_readb(func, SMSSDIO_INT, &ret);
-+	if (ret) {
-+		dev_err(&smsdev->func->dev,
-+			"Unable to read interrupt register!\n");
-+		return;
-+	}
-+
-+	if (smsdev->split_cb == NULL) {
-+		cb = smscore_getbuffer(smsdev->coredev);
-+		if (!cb) {
-+			dev_err(&smsdev->func->dev,
-+				"Unable to allocate data buffer!\n");
-+			return;
-+		}
-+
-+		ret = sdio_read_blocks(smsdev->func, cb->p, SMSSDIO_DATA, 1);
-+		if (ret) {
-+			dev_err(&smsdev->func->dev,
-+				"Error %d reading initial block!\n", ret);
-+			return;
-+		}
-+
-+		hdr = cb->p;
-+
-+		if (hdr->msgFlags & MSG_HDR_FLAG_SPLIT_MSG) {
-+			smsdev->split_cb = cb;
-+			return;
-+		}
-+
-+		size = hdr->msgLength - smsdev->func->cur_blksize;
-+	} else {
-+		cb = smsdev->split_cb;
-+		hdr = cb->p;
-+
-+		size = hdr->msgLength - sizeof(struct SmsMsgHdr_ST);
-+
-+		smsdev->split_cb = NULL;
-+	}
-+
-+	if (hdr->msgLength > smsdev->func->cur_blksize) {
-+		void *buffer;
-+
-+		size = ALIGN(size, 128);
-+		buffer = cb->p + hdr->msgLength;
-+
-+		BUG_ON(smsdev->func->cur_blksize != 128);
-+
-+		/*
-+		 * First attempt to transfer all of it in one go...
-+		 */
-+		ret = sdio_read_blocks(smsdev->func, buffer,
-+				       SMSSDIO_DATA, size / 128);
-+		if (ret && ret != -EINVAL) {
-+			smscore_putbuffer(smsdev->coredev, cb);
-+			dev_err(&smsdev->func->dev,
-+				"Error %d reading data from card!\n", ret);
-+			return;
-+		}
-+
-+		/*
-+		 * ..then fall back to one block at a time if that is
-+		 * not possible...
-+		 *
-+		 * (we have to do this manually because of the
-+		 * problem with the "increase address" bit)
-+		 */
-+		if (ret == -EINVAL) {
-+			while (size) {
-+				ret = sdio_read_blocks(smsdev->func,
-+						       buffer, SMSSDIO_DATA, 1);
-+				if (ret) {
-+					smscore_putbuffer(smsdev->coredev, cb);
-+					dev_err(&smsdev->func->dev,
-+						"Error %d reading "
-+						"data from card!\n", ret);
-+					return;
-+				}
-+
-+				buffer += smsdev->func->cur_blksize;
-+				if (size > smsdev->func->cur_blksize)
-+					size -= smsdev->func->cur_blksize;
-+				else
-+					size = 0;
-+			}
-+		}
-+	}
-+
-+	cb->size = hdr->msgLength;
-+	cb->offset = 0;
-+
-+	smscore_onresponse(smsdev->coredev, cb);
-+}
-+
-+static int smssdio_probe(struct sdio_func *func,
-+			 const struct sdio_device_id *id)
-+{
-+	int ret;
-+
-+	int board_id;
-+	struct smssdio_device *smsdev;
-+	struct smsdevice_params_t params;
-+
-+	board_id = id->driver_data;
-+
-+	smsdev = kzalloc(sizeof(struct smssdio_device), GFP_KERNEL);
-+	if (!smsdev)
-+		return -ENOMEM;
-+
-+	smsdev->func = func;
-+
-+	memset(&params, 0, sizeof(struct smsdevice_params_t));
-+
-+	params.device = &func->dev;
-+	params.buffer_size = 0x5000;	/* ?? */
-+	params.num_buffers = 22;	/* ?? */
-+	params.context = smsdev;
-+
-+	snprintf(params.devpath, sizeof(params.devpath),
-+		 "sdio\\%s", sdio_func_id(func));
-+
-+	params.sendrequest_handler = smssdio_sendrequest;
-+
-+	params.device_type = sms_get_board(board_id)->type;
-+
-+	if (params.device_type != SMS_STELLAR)
-+		params.flags |= SMS_DEVICE_FAMILY2;
-+	else {
-+		/*
-+		 * FIXME: Stellar needs special handling...
-+		 */
-+		ret = -ENODEV;
-+		goto free;
-+	}
-+
-+	ret = smscore_register_device(&params, &smsdev->coredev);
-+	if (ret < 0)
-+		goto free;
-+
-+	smscore_set_board_id(smsdev->coredev, board_id);
-+
-+	sdio_claim_host(func);
-+
-+	ret = sdio_enable_func(func);
-+	if (ret)
-+		goto release;
-+
-+	ret = sdio_set_block_size(func, 128);
-+	if (ret)
-+		goto disable;
-+
-+	ret = sdio_claim_irq(func, smssdio_interrupt);
-+	if (ret)
-+		goto disable;
-+
-+	sdio_set_drvdata(func, smsdev);
-+
-+	sdio_release_host(func);
-+
-+	ret = smscore_start_device(smsdev->coredev);
-+	if (ret < 0)
-+		goto reclaim;
-+
-+	return 0;
-+
-+reclaim:
-+	sdio_claim_host(func);
-+	sdio_release_irq(func);
-+disable:
-+	sdio_disable_func(func);
-+release:
-+	sdio_release_host(func);
-+	smscore_unregister_device(smsdev->coredev);
-+free:
-+	kfree(smsdev);
-+
-+	return ret;
-+}
-+
-+static void smssdio_remove(struct sdio_func *func)
-+{
-+	struct smssdio_device *smsdev;
-+
-+	smsdev = sdio_get_drvdata(func);
-+
-+	/* FIXME: racy! */
-+	if (smsdev->split_cb)
-+		smscore_putbuffer(smsdev->coredev, smsdev->split_cb);
-+
-+	smscore_unregister_device(smsdev->coredev);
-+
-+	sdio_claim_host(func);
-+	sdio_release_irq(func);
-+	sdio_disable_func(func);
-+	sdio_release_host(func);
-+
-+	kfree(smsdev);
-+}
-+
-+static struct sdio_driver smssdio_driver = {
-+	.name = "smssdio",
-+	.id_table = smssdio_ids,
-+	.probe = smssdio_probe,
-+	.remove = smssdio_remove,
-+};
-+
-+/*******************************************************************/
-+/* Module functions                                                */
-+/*******************************************************************/
-+
-+int smssdio_register(void)
-+{
-+	int ret = 0;
-+
-+	printk(KERN_INFO "smssdio: Siano SMS1xxx SDIO driver\n");
-+	printk(KERN_INFO "smssdio: Copyright Pierre Ossman\n");
-+
-+	ret = sdio_register_driver(&smssdio_driver);
-+
-+	return ret;
-+}
-+
-+void smssdio_unregister(void)
-+{
-+	sdio_unregister_driver(&smssdio_driver);
-+}
-+
-+MODULE_DESCRIPTION("Siano SMS1xxx SDIO driver");
-+MODULE_AUTHOR("Pierre Ossman");
-+MODULE_LICENSE("GPL");
+empty


--- linux-2.6-revert-dvb-net-kabi-change.patch DELETED ---




More information about the fedora-extras-commits mailing list