diff --git a/drivers/firewire/fw-card.c b/drivers/firewire/fw-card.c
index 3322d61..74aab9a 100644
--- a/drivers/firewire/fw-card.c
+++ b/drivers/firewire/fw-card.c
@@ -60,7 +60,7 @@
 #define bib_imc			((1) << 31)
 
 static u32 *
-generate_config_rom (struct fw_card *card, size_t *config_rom_length)
+generate_config_rom(struct fw_card *card, size_t *config_rom_length)
 {
 	struct fw_descriptor *desc;
 	static u32 config_rom[256];
@@ -125,7 +125,7 @@
 }
 
 static void
-update_config_roms (void)
+update_config_roms(void)
 {
 	struct fw_card *card;
 	u32 *config_rom;
@@ -138,7 +138,7 @@
 }
 
 int
-fw_core_add_descriptor (struct fw_descriptor *desc)
+fw_core_add_descriptor(struct fw_descriptor *desc)
 {
 	size_t i;
 
@@ -156,7 +156,7 @@
 
 	mutex_lock(&card_mutex);
 
-	list_add_tail (&desc->link, &descriptor_list);
+	list_add_tail(&desc->link, &descriptor_list);
 	descriptor_count++;
 	if (desc->immediate > 0)
 		descriptor_count++;
@@ -169,7 +169,7 @@
 EXPORT_SYMBOL(fw_core_add_descriptor);
 
 void
-fw_core_remove_descriptor (struct fw_descriptor *desc)
+fw_core_remove_descriptor(struct fw_descriptor *desc)
 {
 	mutex_lock(&card_mutex);
 
@@ -419,7 +419,7 @@
 	fw_card_get(card);
 
 	mutex_lock(&card_mutex);
-	config_rom = generate_config_rom (card, &length);
+	config_rom = generate_config_rom(card, &length);
 	list_add_tail(&card->link, &card_list);
 	mutex_unlock(&card_mutex);
 
diff --git a/drivers/firewire/fw-sbp2.c b/drivers/firewire/fw-sbp2.c
index eb3bddb..3308bc0 100644
--- a/drivers/firewire/fw-sbp2.c
+++ b/drivers/firewire/fw-sbp2.c
@@ -47,7 +47,7 @@
 #include "fw-device.h"
 
 /* I don't know why the SCSI stack doesn't define something like this... */
-typedef void (*scsi_done_fn_t) (struct scsi_cmnd *);
+typedef void (*scsi_done_fn_t)(struct scsi_cmnd *);
 
 static const char sbp2_driver_name[] = "sbp2";
 
@@ -148,7 +148,7 @@
 	dma_addr_t request_bus;
 	int rcode;
 	struct sbp2_pointer pointer;
-	void (*callback) (struct sbp2_orb * orb, struct sbp2_status * status);
+	void (*callback)(struct sbp2_orb * orb, struct sbp2_status * status);
 	struct list_head link;
 };
 
diff --git a/drivers/firewire/fw-topology.c b/drivers/firewire/fw-topology.c
index c26d5d5..4904902 100644
--- a/drivers/firewire/fw-topology.c
+++ b/drivers/firewire/fw-topology.c
@@ -300,9 +300,9 @@
 	return local_node;
 }
 
-typedef void (*fw_node_callback_t) (struct fw_card * card,
-				    struct fw_node * node,
-				    struct fw_node * parent);
+typedef void (*fw_node_callback_t)(struct fw_card * card,
+				   struct fw_node * node,
+				   struct fw_node * parent);
 
 static void
 for_each_fw_node(struct fw_card *card, struct fw_node *root,
diff --git a/drivers/firewire/fw-topology.h b/drivers/firewire/fw-topology.h
index be2a6be..363b6cb 100644
--- a/drivers/firewire/fw-topology.h
+++ b/drivers/firewire/fw-topology.h
@@ -64,7 +64,7 @@
 static inline struct fw_node *
 fw_node(struct list_head *l)
 {
-	return list_entry (l, struct fw_node, link);
+	return list_entry(l, struct fw_node, link);
 }
 
 static inline struct fw_node *
diff --git a/drivers/firewire/fw-transaction.h b/drivers/firewire/fw-transaction.h
index 1b7e4dc..a1507cf 100644
--- a/drivers/firewire/fw-transaction.h
+++ b/drivers/firewire/fw-transaction.h
@@ -172,11 +172,11 @@
 	const u32 *data;
 };
 
-int fw_core_add_descriptor (struct fw_descriptor *desc);
-void fw_core_remove_descriptor (struct fw_descriptor *desc);
+int fw_core_add_descriptor(struct fw_descriptor *desc);
+void fw_core_remove_descriptor(struct fw_descriptor *desc);
 
-typedef void (*fw_packet_callback_t) (struct fw_packet *packet,
-				      struct fw_card *card, int status);
+typedef void (*fw_packet_callback_t)(struct fw_packet *packet,
+				     struct fw_card *card, int status);
 
 typedef void (*fw_transaction_callback_t)(struct fw_card *card, int rcode,
 					  void *data,
@@ -239,7 +239,7 @@
 static inline struct fw_packet *
 fw_packet(struct list_head *l)
 {
-	return list_entry (l, struct fw_packet, link);
+	return list_entry(l, struct fw_packet, link);
 }
 
 struct fw_address_handler {
@@ -350,11 +350,11 @@
 
 struct fw_iso_context;
 
-typedef void (*fw_iso_callback_t) (struct fw_iso_context *context,
-				   u32 cycle,
-				   size_t header_length,
-				   void *header,
-				   void *data);
+typedef void (*fw_iso_callback_t)(struct fw_iso_context *context,
+				  u32 cycle,
+				  size_t header_length,
+				  void *header,
+				  void *data);
 
 /*
  * An iso buffer is just a set of pages mapped for DMA in the
@@ -420,23 +420,23 @@
 	 * enable the PHY or set the link_on bit and initiate a bus
 	 * reset.
 	 */
-	int (*enable) (struct fw_card *card, u32 *config_rom, size_t length);
+	int (*enable)(struct fw_card *card, u32 *config_rom, size_t length);
 
-	int (*update_phy_reg) (struct fw_card *card, int address,
-			       int clear_bits, int set_bits);
+	int (*update_phy_reg)(struct fw_card *card, int address,
+			      int clear_bits, int set_bits);
 
 	/*
 	 * Update the config rom for an enabled card.  This function
 	 * should change the config rom that is presented on the bus
 	 * an initiate a bus reset.
 	 */
-	int (*set_config_rom) (struct fw_card *card,
-			       u32 *config_rom, size_t length);
+	int (*set_config_rom)(struct fw_card *card,
+			      u32 *config_rom, size_t length);
 
-	void (*send_request) (struct fw_card *card, struct fw_packet *packet);
-	void (*send_response) (struct fw_card *card, struct fw_packet *packet);
+	void (*send_request)(struct fw_card *card, struct fw_packet *packet);
+	void (*send_response)(struct fw_card *card, struct fw_packet *packet);
 	/* Calling cancel is valid once a packet has been submitted. */
-	int (*cancel_packet) (struct fw_card *card, struct fw_packet *packet);
+	int (*cancel_packet)(struct fw_card *card, struct fw_packet *packet);
 
 	/*
 	 * Allow the specified node ID to do direct DMA out and in of
@@ -446,10 +446,10 @@
 	 * doesn't support this, -ESTALE if the generation doesn't
 	 * match.
 	 */
-	int (*enable_phys_dma) (struct fw_card *card,
-				int node_id, int generation);
+	int (*enable_phys_dma)(struct fw_card *card,
+			       int node_id, int generation);
 
-	u64 (*get_bus_time) (struct fw_card *card);
+	u64 (*get_bus_time)(struct fw_card *card);
 
 	struct fw_iso_context *
 	(*allocate_iso_context)(struct fw_card *card,
