.. | .. |
---|
970 | 970 | struct i2c_vendor_data *vendor = id->data; |
---|
971 | 971 | u32 max_fifo_threshold = (vendor->fifodepth / 2) - 1; |
---|
972 | 972 | |
---|
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 | + |
---|
979 | 977 | dev->vendor = vendor; |
---|
980 | 978 | dev->adev = adev; |
---|
981 | 979 | nmk_i2c_of_probe(np, dev); |
---|
.. | .. |
---|
996 | 994 | |
---|
997 | 995 | dev->virtbase = devm_ioremap(&adev->dev, adev->res.start, |
---|
998 | 996 | resource_size(&adev->res)); |
---|
999 | | - if (!dev->virtbase) { |
---|
1000 | | - ret = -ENOMEM; |
---|
1001 | | - goto err_no_mem; |
---|
1002 | | - } |
---|
| 997 | + if (!dev->virtbase) |
---|
| 998 | + return -ENOMEM; |
---|
1003 | 999 | |
---|
1004 | 1000 | dev->irq = adev->irq[0]; |
---|
1005 | 1001 | ret = devm_request_irq(&adev->dev, dev->irq, i2c_irq_handler, 0, |
---|
1006 | 1002 | DRIVER_NAME, dev); |
---|
1007 | 1003 | if (ret) { |
---|
1008 | 1004 | dev_err(&adev->dev, "cannot claim the irq %d\n", dev->irq); |
---|
1009 | | - goto err_no_mem; |
---|
| 1005 | + return ret; |
---|
1010 | 1006 | } |
---|
1011 | 1007 | |
---|
1012 | | - dev->clk = devm_clk_get(&adev->dev, NULL); |
---|
| 1008 | + dev->clk = devm_clk_get_enabled(&adev->dev, NULL); |
---|
1013 | 1009 | 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); |
---|
1023 | 1012 | } |
---|
1024 | 1013 | |
---|
1025 | 1014 | init_hw(dev); |
---|
.. | .. |
---|
1042 | 1031 | |
---|
1043 | 1032 | ret = i2c_add_adapter(adap); |
---|
1044 | 1033 | if (ret) |
---|
1045 | | - goto err_no_adap; |
---|
| 1034 | + return ret; |
---|
1046 | 1035 | |
---|
1047 | 1036 | pm_runtime_put(&adev->dev); |
---|
1048 | 1037 | |
---|
1049 | 1038 | return 0; |
---|
1050 | | - |
---|
1051 | | - err_no_adap: |
---|
1052 | | - clk_disable_unprepare(dev->clk); |
---|
1053 | | - err_no_mem: |
---|
1054 | | - |
---|
1055 | | - return ret; |
---|
1056 | 1039 | } |
---|
1057 | 1040 | |
---|
1058 | 1041 | static void nmk_i2c_remove(struct amba_device *adev) |
---|
1059 | 1042 | { |
---|
1060 | | - struct resource *res = &adev->res; |
---|
1061 | 1043 | struct nmk_i2c_dev *dev = amba_get_drvdata(adev); |
---|
1062 | 1044 | |
---|
1063 | 1045 | i2c_del_adapter(&dev->adap); |
---|
.. | .. |
---|
1066 | 1048 | clear_all_interrupts(dev); |
---|
1067 | 1049 | /* disable the controller */ |
---|
1068 | 1050 | 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)); |
---|
1071 | 1051 | } |
---|
1072 | 1052 | |
---|
1073 | 1053 | static struct i2c_vendor_data vendor_stn8815 = { |
---|