}
 
 void
-fw_card_initialize(struct fw_card *card, struct fw_card_driver *driver,
+fw_card_initialize(struct fw_card *card, const struct fw_card_driver *driver,
                   struct device *device)
 {
        static int index;
 
                return 0;
 }
 
-struct file_operations fw_device_ops = {
+const struct file_operations fw_device_ops = {
        .owner          = THIS_MODULE,
        .open           = fw_device_op_open,
        .read           = fw_device_op_read,
 
 
 static int is_fw_unit(struct device *dev);
 
-static int match_unit_directory(u32 * directory, struct fw_device_id *id)
+static int match_unit_directory(u32 * directory, const struct fw_device_id *id)
 {
        struct fw_csr_iterator ci;
        int key, value, match;
 
        struct device_driver driver;
        /* Called when the parent device sits through a bus reset. */
        void (*update) (struct fw_unit *unit);
-       struct fw_device_id *id_table;
+       const struct fw_device_id *id_table;
 };
 
 static inline struct fw_driver *
         return container_of(drv, struct fw_driver, driver);
 }
 
-extern struct file_operations fw_device_ops;
+extern const struct file_operations fw_device_ops;
 
 #endif /* __fw_device_h */
 
        return 0;
 }
 
-static struct fw_card_driver ohci_driver = {
+static const struct fw_card_driver ohci_driver = {
        .name                   = ohci_driver_name,
        .enable                 = ohci_enable,
        .update_phy_reg         = ohci_update_phy_reg,
 
 #define SBP2_UNIT_SPEC_ID_ENTRY        0x0000609e
 #define SBP2_SW_VERSION_ENTRY  0x00010483
 
-static struct fw_device_id sbp2_id_table[] = {
+static const struct fw_device_id sbp2_id_table[] = {
        {
                .match_flags  = FW_MATCH_SPECIFIER_ID | FW_MATCH_VERSION,
                .specifier_id = SBP2_UNIT_SPEC_ID_ENTRY,
 
 static DEFINE_SPINLOCK(address_handler_lock);
 static LIST_HEAD(address_handler_list);
 
-struct fw_address_region fw_low_memory_region =
+const struct fw_address_region fw_low_memory_region =
        { 0x000000000000ull, 0x000100000000ull };
-struct fw_address_region fw_high_memory_region =
+const struct fw_address_region fw_high_memory_region =
        { 0x000100000000ull, 0xffffe0000000ull };
-struct fw_address_region fw_private_region =
+const struct fw_address_region fw_private_region =
        { 0xffffe0000000ull, 0xfffff0000000ull };
-struct fw_address_region fw_csr_region =
+const struct fw_address_region fw_csr_region =
        { 0xfffff0000000ULL, 0xfffff0000800ull };
-struct fw_address_region fw_unit_space_region =
+const struct fw_address_region fw_unit_space_region =
        { 0xfffff0000900ull, 0x1000000000000ull };
 
 EXPORT_SYMBOL(fw_low_memory_region);
 
 int
 fw_core_add_address_handler(struct fw_address_handler *handler,
-                           struct fw_address_region *region)
+                           const struct fw_address_region *region)
 {
        struct fw_address_handler *other;
        unsigned long flags;
 MODULE_DESCRIPTION("Core IEEE1394 transaction logic");
 MODULE_LICENSE("GPL");
 
-static u32 vendor_textual_descriptor_data[] = {
+static const u32 vendor_textual_descriptor_data[] = {
        /* textual descriptor leaf () */
        0x00080000,
        0x00000000,
 
        struct list_head link;
        size_t length;
        u32 key;
-       u32 *data;
+       const u32 *data;
 };
 
 int fw_core_add_descriptor (struct fw_descriptor *desc);
        u64 end;
 };
 
-extern struct fw_address_region fw_low_memory_region;
-extern struct fw_address_region fw_high_memory_region;
-extern struct fw_address_region fw_private_region;
-extern struct fw_address_region fw_csr_region;
-extern struct fw_address_region fw_unit_space_region;
+extern const struct fw_address_region fw_low_memory_region;
+extern const struct fw_address_region fw_high_memory_region;
+extern const struct fw_address_region fw_private_region;
+extern const struct fw_address_region fw_csr_region;
+extern const struct fw_address_region fw_unit_space_region;
 
 int fw_core_add_address_handler(struct fw_address_handler *handler,
-                               struct fw_address_region *region);
+                               const struct fw_address_region *region);
 void fw_core_remove_address_handler(struct fw_address_handler *handler);
 void fw_send_response(struct fw_card *card,
                      struct fw_request *request, int rcode);
 extern struct bus_type fw_bus_type;
 
 struct fw_card {
-        struct fw_card_driver *driver;
+       const struct fw_card_driver *driver;
        struct device *device;
 
         int node_id;
 /* Do we need phy speed here also?  If we add more args, maybe we
    should go back to struct fw_card_info. */
 void
-fw_card_initialize(struct fw_card *card, struct fw_card_driver *driver,
+fw_card_initialize(struct fw_card *card, const struct fw_card_driver *driver,
                   struct device *device);
 int
 fw_card_add(struct fw_card *card,