diff options
Diffstat (limited to 'drivers/leds/leds-fsg.c')
| -rw-r--r-- | drivers/leds/leds-fsg.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/drivers/leds/leds-fsg.c b/drivers/leds/leds-fsg.c index be0e12144b8b..34935155c1c0 100644 --- a/drivers/leds/leds-fsg.c +++ b/drivers/leds/leds-fsg.c | |||
| @@ -161,6 +161,16 @@ static int fsg_led_probe(struct platform_device *pdev) | |||
| 161 | { | 161 | { |
| 162 | int ret; | 162 | int ret; |
| 163 | 163 | ||
| 164 | /* Map the LED chip select address space */ | ||
| 165 | latch_address = (unsigned short *) ioremap(IXP4XX_EXP_BUS_BASE(2), 512); | ||
| 166 | if (!latch_address) { | ||
| 167 | ret = -ENOMEM; | ||
| 168 | goto failremap; | ||
| 169 | } | ||
| 170 | |||
| 171 | latch_value = 0xffff; | ||
| 172 | *latch_address = latch_value; | ||
| 173 | |||
| 164 | ret = led_classdev_register(&pdev->dev, &fsg_wlan_led); | 174 | ret = led_classdev_register(&pdev->dev, &fsg_wlan_led); |
| 165 | if (ret < 0) | 175 | if (ret < 0) |
| 166 | goto failwlan; | 176 | goto failwlan; |
| @@ -185,20 +195,8 @@ static int fsg_led_probe(struct platform_device *pdev) | |||
| 185 | if (ret < 0) | 195 | if (ret < 0) |
| 186 | goto failring; | 196 | goto failring; |
| 187 | 197 | ||
| 188 | /* Map the LED chip select address space */ | ||
| 189 | latch_address = (unsigned short *) ioremap(IXP4XX_EXP_BUS_BASE(2), 512); | ||
| 190 | if (!latch_address) { | ||
| 191 | ret = -ENOMEM; | ||
| 192 | goto failremap; | ||
| 193 | } | ||
| 194 | |||
| 195 | latch_value = 0xffff; | ||
| 196 | *latch_address = latch_value; | ||
| 197 | |||
| 198 | return ret; | 198 | return ret; |
| 199 | 199 | ||
| 200 | failremap: | ||
| 201 | led_classdev_unregister(&fsg_ring_led); | ||
| 202 | failring: | 200 | failring: |
| 203 | led_classdev_unregister(&fsg_sync_led); | 201 | led_classdev_unregister(&fsg_sync_led); |
| 204 | failsync: | 202 | failsync: |
| @@ -210,14 +208,14 @@ static int fsg_led_probe(struct platform_device *pdev) | |||
| 210 | failwan: | 208 | failwan: |
| 211 | led_classdev_unregister(&fsg_wlan_led); | 209 | led_classdev_unregister(&fsg_wlan_led); |
| 212 | failwlan: | 210 | failwlan: |
| 211 | iounmap(latch_address); | ||
| 212 | failremap: | ||
| 213 | 213 | ||
| 214 | return ret; | 214 | return ret; |
| 215 | } | 215 | } |
| 216 | 216 | ||
| 217 | static int fsg_led_remove(struct platform_device *pdev) | 217 | static int fsg_led_remove(struct platform_device *pdev) |
| 218 | { | 218 | { |
| 219 | iounmap(latch_address); | ||
| 220 | |||
| 221 | led_classdev_unregister(&fsg_wlan_led); | 219 | led_classdev_unregister(&fsg_wlan_led); |
| 222 | led_classdev_unregister(&fsg_wan_led); | 220 | led_classdev_unregister(&fsg_wan_led); |
| 223 | led_classdev_unregister(&fsg_sata_led); | 221 | led_classdev_unregister(&fsg_sata_led); |
| @@ -225,6 +223,8 @@ static int fsg_led_remove(struct platform_device *pdev) | |||
| 225 | led_classdev_unregister(&fsg_sync_led); | 223 | led_classdev_unregister(&fsg_sync_led); |
| 226 | led_classdev_unregister(&fsg_ring_led); | 224 | led_classdev_unregister(&fsg_ring_led); |
| 227 | 225 | ||
| 226 | iounmap(latch_address); | ||
| 227 | |||
| 228 | return 0; | 228 | return 0; |
| 229 | } | 229 | } |
| 230 | 230 | ||
