hc
2024-10-12 a5969cabbb4660eab42b6ef0412cbbd1200cf14d
kernel/drivers/i2c/busses/i2c-nomadik.c
....@@ -970,12 +970,10 @@
970970 struct i2c_vendor_data *vendor = id->data;
971971 u32 max_fifo_threshold = (vendor->fifodepth / 2) - 1;
972972
973
- dev = devm_kzalloc(&adev->dev, sizeof(struct nmk_i2c_dev), GFP_KERNEL);
974
- if (!dev) {
975
- dev_err(&adev->dev, "cannot allocate memory\n");
976
- ret = -ENOMEM;
977
- goto err_no_mem;
978
- }
973
+ dev = devm_kzalloc(&adev->dev, sizeof(*dev), GFP_KERNEL);
974
+ if (!dev)
975
+ return -ENOMEM;
976
+
979977 dev->vendor = vendor;
980978 dev->adev = adev;
981979 nmk_i2c_of_probe(np, dev);
....@@ -996,30 +994,21 @@
996994
997995 dev->virtbase = devm_ioremap(&adev->dev, adev->res.start,
998996 resource_size(&adev->res));
999
- if (!dev->virtbase) {
1000
- ret = -ENOMEM;
1001
- goto err_no_mem;
1002
- }
997
+ if (!dev->virtbase)
998
+ return -ENOMEM;
1003999
10041000 dev->irq = adev->irq[0];
10051001 ret = devm_request_irq(&adev->dev, dev->irq, i2c_irq_handler, 0,
10061002 DRIVER_NAME, dev);
10071003 if (ret) {
10081004 dev_err(&adev->dev, "cannot claim the irq %d\n", dev->irq);
1009
- goto err_no_mem;
1005
+ return ret;
10101006 }
10111007
1012
- dev->clk = devm_clk_get(&adev->dev, NULL);
1008
+ dev->clk = devm_clk_get_enabled(&adev->dev, NULL);
10131009 if (IS_ERR(dev->clk)) {
1014
- dev_err(&adev->dev, "could not get i2c clock\n");
1015
- ret = PTR_ERR(dev->clk);
1016
- goto err_no_mem;
1017
- }
1018
-
1019
- ret = clk_prepare_enable(dev->clk);
1020
- if (ret) {
1021
- dev_err(&adev->dev, "can't prepare_enable clock\n");
1022
- goto err_no_mem;
1010
+ dev_err(&adev->dev, "could enable i2c clock\n");
1011
+ return PTR_ERR(dev->clk);
10231012 }
10241013
10251014 init_hw(dev);
....@@ -1042,22 +1031,15 @@
10421031
10431032 ret = i2c_add_adapter(adap);
10441033 if (ret)
1045
- goto err_no_adap;
1034
+ return ret;
10461035
10471036 pm_runtime_put(&adev->dev);
10481037
10491038 return 0;
1050
-
1051
- err_no_adap:
1052
- clk_disable_unprepare(dev->clk);
1053
- err_no_mem:
1054
-
1055
- return ret;
10561039 }
10571040
10581041 static void nmk_i2c_remove(struct amba_device *adev)
10591042 {
1060
- struct resource *res = &adev->res;
10611043 struct nmk_i2c_dev *dev = amba_get_drvdata(adev);
10621044
10631045 i2c_del_adapter(&dev->adap);
....@@ -1066,8 +1048,6 @@
10661048 clear_all_interrupts(dev);
10671049 /* disable the controller */
10681050 i2c_clr_bit(dev->virtbase + I2C_CR, I2C_CR_PE);
1069
- clk_disable_unprepare(dev->clk);
1070
- release_mem_region(res->start, resource_size(res));
10711051 }
10721052
10731053 static struct i2c_vendor_data vendor_stn8815 = {