mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
Merge branch 'i2c/for-4.15' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/wsa/linux
Pull i2c updates from Wolfram Sang:
"This contains two bigger than usual tree-wide changes this time. They
all have proper acks, caused no merge conflicts in linux-next where
they have been for a while. They are namely:
- to-gpiod conversion of the i2c-gpio driver and its users (touching
arch/* and drivers/mfd/*)
- adding a sbs-manager based on I2C core updates to SMBus alerts
(touching drivers/power/*)
Other notable changes:
- i2c_boardinfo can now carry a dev_name to be used when the device
is created. This is because some devices in ACPI world need fixed
names to find the regulators.
- the designware driver got a long discussed overhaul of its PM
handling. img-scb and davinci got PM support, too.
- at24 driver has way better OF support. And it has a new maintainer.
Thanks Bartosz for stepping up!
The rest is regular driver updates and fixes"
* 'i2c/for-4.15' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (55 commits)
ARM: sa1100: simpad: Correct I2C GPIO offsets
i2c: aspeed: Deassert reset in probe
eeprom: at24: Add OF device ID table
MAINTAINERS: new maintainer for AT24 driver
i2c: nuc900: remove platform_data, too
i2c: thunderx: Remove duplicate NULL check
i2c: taos-evm: Remove duplicate NULL check
i2c: Make i2c_unregister_device() NULL-aware
i2c: xgene-slimpro: Support v2
i2c: mpc: remove useless variable initialization
i2c: omap: Trigger bus recovery in lockup case
i2c: gpio: Add support for named gpios in DT
dt-bindings: i2c: i2c-gpio: Add support for named gpios
i2c: gpio: Local vars in probe
i2c: gpio: Augment all boardfiles to use open drain
i2c: gpio: Enforce open drain through gpiolib
gpio: Make it possible for consumers to enforce open drain
i2c: gpio: Convert to use descriptors
power: supply: sbs-message: fix some code style issues
power: supply: sbs-battery: remove unchecked return var
...
This commit is contained in:
commit
4008e6a9bc
70 changed files with 1685 additions and 600 deletions
|
|
@ -38,12 +38,7 @@ int intel_lpss_resume(struct device *dev);
|
|||
#ifdef CONFIG_PM_SLEEP
|
||||
#define INTEL_LPSS_SLEEP_PM_OPS \
|
||||
.prepare = intel_lpss_prepare, \
|
||||
.suspend = intel_lpss_suspend, \
|
||||
.resume = intel_lpss_resume, \
|
||||
.freeze = intel_lpss_suspend, \
|
||||
.thaw = intel_lpss_resume, \
|
||||
.poweroff = intel_lpss_suspend, \
|
||||
.restore = intel_lpss_resume,
|
||||
SET_LATE_SYSTEM_SLEEP_PM_OPS(intel_lpss_suspend, intel_lpss_resume)
|
||||
#else
|
||||
#define INTEL_LPSS_SLEEP_PM_OPS
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
#include <linux/platform_device.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/i2c-gpio.h>
|
||||
#include <linux/gpio/machine.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
#include <linux/sm501.h>
|
||||
|
|
@ -1107,14 +1108,6 @@ static void sm501_gpio_remove(struct sm501_devdata *sm)
|
|||
kfree(gpio->regs_res);
|
||||
}
|
||||
|
||||
static inline int sm501_gpio_pin2nr(struct sm501_devdata *sm, unsigned int pin)
|
||||
{
|
||||
struct sm501_gpio *gpio = &sm->gpio;
|
||||
int base = (pin < 32) ? gpio->low.gpio.base : gpio->high.gpio.base;
|
||||
|
||||
return (pin % 32) + base;
|
||||
}
|
||||
|
||||
static inline int sm501_gpio_isregistered(struct sm501_devdata *sm)
|
||||
{
|
||||
return sm->gpio.registered;
|
||||
|
|
@ -1129,11 +1122,6 @@ static inline void sm501_gpio_remove(struct sm501_devdata *sm)
|
|||
{
|
||||
}
|
||||
|
||||
static inline int sm501_gpio_pin2nr(struct sm501_devdata *sm, unsigned int pin)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
static inline int sm501_gpio_isregistered(struct sm501_devdata *sm)
|
||||
{
|
||||
return 0;
|
||||
|
|
@ -1145,20 +1133,37 @@ static int sm501_register_gpio_i2c_instance(struct sm501_devdata *sm,
|
|||
{
|
||||
struct i2c_gpio_platform_data *icd;
|
||||
struct platform_device *pdev;
|
||||
struct gpiod_lookup_table *lookup;
|
||||
|
||||
pdev = sm501_create_subdev(sm, "i2c-gpio", 0,
|
||||
sizeof(struct i2c_gpio_platform_data));
|
||||
if (!pdev)
|
||||
return -ENOMEM;
|
||||
|
||||
/* Create a gpiod lookup using gpiochip-local offsets */
|
||||
lookup = devm_kzalloc(&pdev->dev,
|
||||
sizeof(*lookup) + 3 * sizeof(struct gpiod_lookup),
|
||||
GFP_KERNEL);
|
||||
lookup->dev_id = "i2c-gpio";
|
||||
if (iic->pin_sda < 32)
|
||||
lookup->table[0].chip_label = "SM501-LOW";
|
||||
else
|
||||
lookup->table[0].chip_label = "SM501-HIGH";
|
||||
lookup->table[0].chip_hwnum = iic->pin_sda % 32;
|
||||
lookup->table[0].con_id = NULL;
|
||||
lookup->table[0].idx = 0;
|
||||
lookup->table[0].flags = GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN;
|
||||
if (iic->pin_scl < 32)
|
||||
lookup->table[1].chip_label = "SM501-LOW";
|
||||
else
|
||||
lookup->table[1].chip_label = "SM501-HIGH";
|
||||
lookup->table[1].chip_hwnum = iic->pin_scl % 32;
|
||||
lookup->table[1].con_id = NULL;
|
||||
lookup->table[1].idx = 1;
|
||||
lookup->table[1].flags = GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN;
|
||||
gpiod_add_lookup_table(lookup);
|
||||
|
||||
icd = dev_get_platdata(&pdev->dev);
|
||||
|
||||
/* We keep the pin_sda and pin_scl fields relative in case the
|
||||
* same platform data is passed to >1 SM501.
|
||||
*/
|
||||
|
||||
icd->sda_pin = sm501_gpio_pin2nr(sm, iic->pin_sda);
|
||||
icd->scl_pin = sm501_gpio_pin2nr(sm, iic->pin_scl);
|
||||
icd->timeout = iic->timeout;
|
||||
icd->udelay = iic->udelay;
|
||||
|
||||
|
|
@ -1170,9 +1175,9 @@ static int sm501_register_gpio_i2c_instance(struct sm501_devdata *sm,
|
|||
|
||||
pdev->id = iic->bus_num;
|
||||
|
||||
dev_info(sm->dev, "registering i2c-%d: sda=%d (%d), scl=%d (%d)\n",
|
||||
dev_info(sm->dev, "registering i2c-%d: sda=%d, scl=%d\n",
|
||||
iic->bus_num,
|
||||
icd->sda_pin, iic->pin_sda, icd->scl_pin, iic->pin_scl);
|
||||
iic->pin_sda, iic->pin_scl);
|
||||
|
||||
return sm501_register_device(sm, pdev);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue