diff options
-rw-r--r-- | drivers/mtd/nand/sh_flctl.c | 36 |
1 files changed, 10 insertions, 26 deletions
diff --git a/drivers/mtd/nand/sh_flctl.c b/drivers/mtd/nand/sh_flctl.c index 0f135cbaed89..50f1cb93324f 100644 --- a/drivers/mtd/nand/sh_flctl.c +++ b/drivers/mtd/nand/sh_flctl.c | |||
@@ -1094,38 +1094,32 @@ static int flctl_probe(struct platform_device *pdev) | |||
1094 | struct mtd_info *flctl_mtd; | 1094 | struct mtd_info *flctl_mtd; |
1095 | struct nand_chip *nand; | 1095 | struct nand_chip *nand; |
1096 | struct sh_flctl_platform_data *pdata; | 1096 | struct sh_flctl_platform_data *pdata; |
1097 | int ret = -ENXIO; | 1097 | int ret; |
1098 | int irq; | 1098 | int irq; |
1099 | struct mtd_part_parser_data ppdata = {}; | 1099 | struct mtd_part_parser_data ppdata = {}; |
1100 | 1100 | ||
1101 | flctl = kzalloc(sizeof(struct sh_flctl), GFP_KERNEL); | 1101 | flctl = devm_kzalloc(&pdev->dev, sizeof(struct sh_flctl), GFP_KERNEL); |
1102 | if (!flctl) { | 1102 | if (!flctl) { |
1103 | dev_err(&pdev->dev, "failed to allocate driver data\n"); | 1103 | dev_err(&pdev->dev, "failed to allocate driver data\n"); |
1104 | return -ENOMEM; | 1104 | return -ENOMEM; |
1105 | } | 1105 | } |
1106 | 1106 | ||
1107 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1107 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
1108 | if (!res) { | 1108 | flctl->reg = devm_ioremap_resource(&pdev->dev, res); |
1109 | dev_err(&pdev->dev, "failed to get I/O memory\n"); | 1109 | if (IS_ERR(flctl->reg)) |
1110 | goto err_iomap; | 1110 | return PTR_ERR(flctl->reg); |
1111 | } | ||
1112 | |||
1113 | flctl->reg = ioremap(res->start, resource_size(res)); | ||
1114 | if (flctl->reg == NULL) { | ||
1115 | dev_err(&pdev->dev, "failed to remap I/O memory\n"); | ||
1116 | goto err_iomap; | ||
1117 | } | ||
1118 | 1111 | ||
1119 | irq = platform_get_irq(pdev, 0); | 1112 | irq = platform_get_irq(pdev, 0); |
1120 | if (irq < 0) { | 1113 | if (irq < 0) { |
1121 | dev_err(&pdev->dev, "failed to get flste irq data\n"); | 1114 | dev_err(&pdev->dev, "failed to get flste irq data\n"); |
1122 | goto err_flste; | 1115 | return -ENXIO; |
1123 | } | 1116 | } |
1124 | 1117 | ||
1125 | ret = request_irq(irq, flctl_handle_flste, IRQF_SHARED, "flste", flctl); | 1118 | ret = devm_request_irq(&pdev->dev, irq, flctl_handle_flste, IRQF_SHARED, |
1119 | "flste", flctl); | ||
1126 | if (ret) { | 1120 | if (ret) { |
1127 | dev_err(&pdev->dev, "request interrupt failed.\n"); | 1121 | dev_err(&pdev->dev, "request interrupt failed.\n"); |
1128 | goto err_flste; | 1122 | return ret; |
1129 | } | 1123 | } |
1130 | 1124 | ||
1131 | if (pdev->dev.of_node) | 1125 | if (pdev->dev.of_node) |
@@ -1135,8 +1129,7 @@ static int flctl_probe(struct platform_device *pdev) | |||
1135 | 1129 | ||
1136 | if (!pdata) { | 1130 | if (!pdata) { |
1137 | dev_err(&pdev->dev, "no setup data defined\n"); | 1131 | dev_err(&pdev->dev, "no setup data defined\n"); |
1138 | ret = -EINVAL; | 1132 | return -EINVAL; |
1139 | goto err_pdata; | ||
1140 | } | 1133 | } |
1141 | 1134 | ||
1142 | platform_set_drvdata(pdev, flctl); | 1135 | platform_set_drvdata(pdev, flctl); |
@@ -1190,12 +1183,6 @@ static int flctl_probe(struct platform_device *pdev) | |||
1190 | err_chip: | 1183 | err_chip: |
1191 | flctl_release_dma(flctl); | 1184 | flctl_release_dma(flctl); |
1192 | pm_runtime_disable(&pdev->dev); | 1185 | pm_runtime_disable(&pdev->dev); |
1193 | err_pdata: | ||
1194 | free_irq(irq, flctl); | ||
1195 | err_flste: | ||
1196 | iounmap(flctl->reg); | ||
1197 | err_iomap: | ||
1198 | kfree(flctl); | ||
1199 | return ret; | 1186 | return ret; |
1200 | } | 1187 | } |
1201 | 1188 | ||
@@ -1206,9 +1193,6 @@ static int flctl_remove(struct platform_device *pdev) | |||
1206 | flctl_release_dma(flctl); | 1193 | flctl_release_dma(flctl); |
1207 | nand_release(&flctl->mtd); | 1194 | nand_release(&flctl->mtd); |
1208 | pm_runtime_disable(&pdev->dev); | 1195 | pm_runtime_disable(&pdev->dev); |
1209 | free_irq(platform_get_irq(pdev, 0), flctl); | ||
1210 | iounmap(flctl->reg); | ||
1211 | kfree(flctl); | ||
1212 | 1196 | ||
1213 | return 0; | 1197 | return 0; |
1214 | } | 1198 | } |