diff options
Diffstat (limited to 'drivers/tc/tc.c')
-rw-r--r-- | drivers/tc/tc.c | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/drivers/tc/tc.c b/drivers/tc/tc.c index 946562389ca8..3be9519654e5 100644 --- a/drivers/tc/tc.c +++ b/drivers/tc/tc.c | |||
@@ -83,8 +83,7 @@ static void __init tc_bus_add_devices(struct tc_bus *tbus) | |||
83 | /* Found a board, allocate it an entry in the list */ | 83 | /* Found a board, allocate it an entry in the list */ |
84 | tdev = kzalloc(sizeof(*tdev), GFP_KERNEL); | 84 | tdev = kzalloc(sizeof(*tdev), GFP_KERNEL); |
85 | if (!tdev) { | 85 | if (!tdev) { |
86 | printk(KERN_ERR "tc%x: unable to allocate tc_dev\n", | 86 | pr_err("tc%x: unable to allocate tc_dev\n", slot); |
87 | slot); | ||
88 | goto out_err; | 87 | goto out_err; |
89 | } | 88 | } |
90 | dev_set_name(&tdev->dev, "tc%x", slot); | 89 | dev_set_name(&tdev->dev, "tc%x", slot); |
@@ -117,10 +116,10 @@ static void __init tc_bus_add_devices(struct tc_bus *tbus) | |||
117 | tdev->resource.start = extslotaddr; | 116 | tdev->resource.start = extslotaddr; |
118 | tdev->resource.end = extslotaddr + devsize - 1; | 117 | tdev->resource.end = extslotaddr + devsize - 1; |
119 | } else { | 118 | } else { |
120 | printk(KERN_ERR "%s: Cannot provide slot space " | 119 | pr_err("%s: Cannot provide slot space " |
121 | "(%dMiB required, up to %dMiB supported)\n", | 120 | "(%ldMiB required, up to %ldMiB supported)\n", |
122 | dev_name(&tdev->dev), devsize >> 20, | 121 | dev_name(&tdev->dev), (long)(devsize >> 20), |
123 | max(slotsize, extslotsize) >> 20); | 122 | (long)(max(slotsize, extslotsize) >> 20)); |
124 | kfree(tdev); | 123 | kfree(tdev); |
125 | goto out_err; | 124 | goto out_err; |
126 | } | 125 | } |
@@ -147,14 +146,12 @@ static int __init tc_init(void) | |||
147 | { | 146 | { |
148 | /* Initialize the TURBOchannel bus */ | 147 | /* Initialize the TURBOchannel bus */ |
149 | if (tc_bus_get_info(&tc_bus)) | 148 | if (tc_bus_get_info(&tc_bus)) |
150 | return 0; | 149 | goto out_err; |
151 | 150 | ||
152 | INIT_LIST_HEAD(&tc_bus.devices); | 151 | INIT_LIST_HEAD(&tc_bus.devices); |
153 | dev_set_name(&tc_bus.dev, "tc"); | 152 | dev_set_name(&tc_bus.dev, "tc"); |
154 | if (device_register(&tc_bus.dev)) { | 153 | if (device_register(&tc_bus.dev)) |
155 | put_device(&tc_bus.dev); | 154 | goto out_err_device; |
156 | return 0; | ||
157 | } | ||
158 | 155 | ||
159 | if (tc_bus.info.slot_size) { | 156 | if (tc_bus.info.slot_size) { |
160 | unsigned int tc_clock = tc_get_speed(&tc_bus) / 100000; | 157 | unsigned int tc_clock = tc_get_speed(&tc_bus) / 100000; |
@@ -172,8 +169,8 @@ static int __init tc_init(void) | |||
172 | tc_bus.resource[0].flags = IORESOURCE_MEM; | 169 | tc_bus.resource[0].flags = IORESOURCE_MEM; |
173 | if (request_resource(&iomem_resource, | 170 | if (request_resource(&iomem_resource, |
174 | &tc_bus.resource[0]) < 0) { | 171 | &tc_bus.resource[0]) < 0) { |
175 | printk(KERN_ERR "tc: Cannot reserve resource\n"); | 172 | pr_err("tc: Cannot reserve resource\n"); |
176 | return 0; | 173 | goto out_err_device; |
177 | } | 174 | } |
178 | if (tc_bus.ext_slot_size) { | 175 | if (tc_bus.ext_slot_size) { |
179 | tc_bus.resource[1].start = tc_bus.ext_slot_base; | 176 | tc_bus.resource[1].start = tc_bus.ext_slot_base; |
@@ -184,10 +181,8 @@ static int __init tc_init(void) | |||
184 | tc_bus.resource[1].flags = IORESOURCE_MEM; | 181 | tc_bus.resource[1].flags = IORESOURCE_MEM; |
185 | if (request_resource(&iomem_resource, | 182 | if (request_resource(&iomem_resource, |
186 | &tc_bus.resource[1]) < 0) { | 183 | &tc_bus.resource[1]) < 0) { |
187 | printk(KERN_ERR | 184 | pr_err("tc: Cannot reserve resource\n"); |
188 | "tc: Cannot reserve resource\n"); | 185 | goto out_err_resource; |
189 | release_resource(&tc_bus.resource[0]); | ||
190 | return 0; | ||
191 | } | 186 | } |
192 | } | 187 | } |
193 | 188 | ||
@@ -195,6 +190,13 @@ static int __init tc_init(void) | |||
195 | } | 190 | } |
196 | 191 | ||
197 | return 0; | 192 | return 0; |
193 | |||
194 | out_err_resource: | ||
195 | release_resource(&tc_bus.resource[0]); | ||
196 | out_err_device: | ||
197 | put_device(&tc_bus.dev); | ||
198 | out_err: | ||
199 | return 0; | ||
198 | } | 200 | } |
199 | 201 | ||
200 | subsys_initcall(tc_init); | 202 | subsys_initcall(tc_init); |