mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
ARM: soc: general cleanups
This is a large branch that contains a handful of different cleanups:
- Fixing up the I/O space remapping on PCI on ARM. This is a series
from Rob Herring that restructures how all pci devices allocate I/O
space, and it's part of the work to allow multiplatform kernels.
- A number of cleanup series for OMAP, moving and removing some
headers, sparse irq rework and in general preparation for
multiplatform.
- Final removal of all non-DT boards for Tegra, it is now
device-tree-only!
- Removal of a stale platform, nxp4008. It's an old mobile chipset
that is no longer in use, and was very likely never really used with
a mainline kernel. We have not been able to find anyone interested
in keeping it around in the kernel.
- Removal of the legacy dmaengine driver on tegra
+ A handful of other things that I haven't described above.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iQIcBAABAgAGBQJQaO1fAAoJEIwa5zzehBx3IPgP/jxoO1flVGNVf0reqqyDro/w
prZmp8cNVH9uv8xG9n9vawObrMQ8M6jCJ449fEWuAZ58EXrpIPd0kkm/MOmxp8K1
LNs+q2aXxWpD488+b3RK55g3fksqZutTbn3y6HNuCoLG9l8yT/95KX4IIzfEP2Ch
1TCNHdkTbf37nTBOmKN0x1kahGpWDrOkf9ysHQq+DXAGF4uwNwtR194dqz3HbDND
hZqRq7qCLn9OwGRGNicPFoB6UcxwZ/+/+u5sX7nqPGoiPofg977mhWk1DFO15EM3
S+A6g0dZ+XLsL+fFtOl4snSmrG5Et6qTOP0/ItQJgTG+5YdCS09ohCWJwRCBHbgj
M5arOkyGFdVAlvX7cUux374sMe0AcqUsEmt79mYuBpIE+pBJaRUoCgDcs9FDZeUB
U6WcE4AkxMtW7DtmVW+mF4ls9/K6cRXgWMuHCUmt1o3m3Ly9ITT7j+ntXnD9nuYk
ndoVLR6Vxk2BzlkD0JEtg7FRAS9Wgo2DBix05qM1Qkut2iIZRhFQlqJQpNbeNdii
/3Lg/hqpAVTZKGCd+paegHez61meyFz2PB2IiE0JKANhKHRCWTWRGgKIXkGyCiXk
wJ2iRCOlMEpmpJgCBzfI32ER/hnW4s64iDjgksEwz6pEt7xCbhwgmwrpf0H0KsSF
rLroHOMqyISd/Ha52Vin
=ck1u
-----END PGP SIGNATURE-----
Merge tag 'cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM soc general cleanups from Olof Johansson:
"This is a large branch that contains a handful of different cleanups:
- Fixing up the I/O space remapping on PCI on ARM. This is a series
from Rob Herring that restructures how all pci devices allocate I/O
space, and it's part of the work to allow multiplatform kernels.
- A number of cleanup series for OMAP, moving and removing some
headers, sparse irq rework and in general preparation for
multiplatform.
- Final removal of all non-DT boards for Tegra, it is now
device-tree-only!
- Removal of a stale platform, nxp4008. It's an old mobile chipset
that is no longer in use, and was very likely never really used
with a mainline kernel. We have not been able to find anyone
interested in keeping it around in the kernel.
- Removal of the legacy dmaengine driver on tegra
+ A handful of other things that I haven't described above."
Fix up some conflicts with the staging tree (and because nxp4008 was
removed)
* tag 'cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (184 commits)
ARM: OMAP2+: serial: Change MAX_HSUART_PORTS to 6
ARM: OMAP4: twl-common: Support for additional devices on i2c1 bus
ARM: mmp: using for_each_set_bit to simplify the code
ARM: tegra: harmony: fix ldo7 regulator-name
ARM: OMAP2+: Make omap4-keypad.h local
ARM: OMAP2+: Make l4_3xxx.h local
ARM: OMAP2+: Make l4_2xxx.h local
ARM: OMAP2+: Make l3_3xxx.h local
ARM: OMAP2+: Make l3_2xxx.h local
ARM: OMAP1: Move irda.h from plat to mach
ARM: OMAP2+: Make hdq1w.h local
ARM: OMAP2+: Make gpmc-smsc911x.h local
ARM: OMAP2+: Make gpmc-smc91x.h local
ARM: OMAP1: Move flash.h from plat to mach
ARM: OMAP2+: Make debug-devices.h local
ARM: OMAP1: Move board-voiceblue.h from plat to mach
ARM: OMAP1: Move board-sx1.h from plat to mach
ARM: OMAP2+: Make omap-wakeupgen.h local
ARM: OMAP2+: Make omap-secure.h local
ARM: OMAP2+: Make ctrl_module_wkup_44xx.h local
...
This commit is contained in:
commit
61464c8357
623 changed files with 4618 additions and 15490 deletions
|
|
@ -1132,12 +1132,7 @@ static void clocks_init(struct device *dev,
|
|||
u32 rate;
|
||||
u8 ctrl = HFCLK_FREQ_26_MHZ;
|
||||
|
||||
#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)
|
||||
if (cpu_is_omap2430())
|
||||
osc = clk_get(dev, "osc_ck");
|
||||
else
|
||||
osc = clk_get(dev, "osc_sys_ck");
|
||||
|
||||
osc = clk_get(dev, "fck");
|
||||
if (IS_ERR(osc)) {
|
||||
printk(KERN_WARNING "Skipping twl internal clock init and "
|
||||
"using bootloader value (unknown osc rate)\n");
|
||||
|
|
@ -1147,18 +1142,6 @@ static void clocks_init(struct device *dev,
|
|||
rate = clk_get_rate(osc);
|
||||
clk_put(osc);
|
||||
|
||||
#else
|
||||
/* REVISIT for non-OMAP systems, pass the clock rate from
|
||||
* board init code, using platform_data.
|
||||
*/
|
||||
osc = ERR_PTR(-EIO);
|
||||
|
||||
printk(KERN_WARNING "Skipping twl internal clock init and "
|
||||
"using bootloader value (unknown osc rate)\n");
|
||||
|
||||
return;
|
||||
#endif
|
||||
|
||||
switch (rate) {
|
||||
case 19200000:
|
||||
ctrl = HFCLK_FREQ_19p2_MHZ;
|
||||
|
|
@ -1220,10 +1203,23 @@ twl_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
|||
{
|
||||
struct twl4030_platform_data *pdata = client->dev.platform_data;
|
||||
struct device_node *node = client->dev.of_node;
|
||||
struct platform_device *pdev;
|
||||
int irq_base = 0;
|
||||
int status;
|
||||
unsigned i, num_slaves;
|
||||
|
||||
pdev = platform_device_alloc(DRIVER_NAME, -1);
|
||||
if (!pdev) {
|
||||
dev_err(&client->dev, "can't alloc pdev\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
status = platform_device_add(pdev);
|
||||
if (status) {
|
||||
platform_device_put(pdev);
|
||||
return status;
|
||||
}
|
||||
|
||||
if (node && !pdata) {
|
||||
/*
|
||||
* XXX: Temporary pdata until the information is correctly
|
||||
|
|
@ -1232,23 +1228,30 @@ twl_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
|||
pdata = devm_kzalloc(&client->dev,
|
||||
sizeof(struct twl4030_platform_data),
|
||||
GFP_KERNEL);
|
||||
if (!pdata)
|
||||
return -ENOMEM;
|
||||
if (!pdata) {
|
||||
status = -ENOMEM;
|
||||
goto free;
|
||||
}
|
||||
}
|
||||
|
||||
if (!pdata) {
|
||||
dev_dbg(&client->dev, "no platform data?\n");
|
||||
return -EINVAL;
|
||||
status = -EINVAL;
|
||||
goto free;
|
||||
}
|
||||
|
||||
platform_set_drvdata(pdev, pdata);
|
||||
|
||||
if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C) == 0) {
|
||||
dev_dbg(&client->dev, "can't talk I2C?\n");
|
||||
return -EIO;
|
||||
status = -EIO;
|
||||
goto free;
|
||||
}
|
||||
|
||||
if (inuse) {
|
||||
dev_dbg(&client->dev, "driver is already in use\n");
|
||||
return -EBUSY;
|
||||
status = -EBUSY;
|
||||
goto free;
|
||||
}
|
||||
|
||||
if ((id->driver_data) & TWL6030_CLASS) {
|
||||
|
|
@ -1283,7 +1286,7 @@ twl_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
|||
inuse = true;
|
||||
|
||||
/* setup clock framework */
|
||||
clocks_init(&client->dev, pdata->clock);
|
||||
clocks_init(&pdev->dev, pdata->clock);
|
||||
|
||||
/* read TWL IDCODE Register */
|
||||
if (twl_id == TWL4030_CLASS_ID) {
|
||||
|
|
@ -1333,6 +1336,9 @@ twl_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
|||
fail:
|
||||
if (status < 0)
|
||||
twl_remove(client);
|
||||
free:
|
||||
if (status < 0)
|
||||
platform_device_unregister(pdev);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue