Merge tag 'mfd-for-linus-3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd
Pull MFD updates from Lee Jones: "Changes to existing drivers: - DT clean-ups in da9055-core, max14577, rn5t618, arizona, hi6421, stmpe, twl4030 - Export symbols for use in modules in max14577 - Plenty of static code analysis/Coccinelle fixes throughout the SS - Regmap clean-ups in arizona, wm5102, wm5110, da9052, tps65217, rk808 - Remove unused/duplicate code in da9052, 88pm860x, ti_ssp, lpc_sch, arizona - Bug fixes in ti_am335x_tscadc, da9052, ti_am335x_tscadc, rtsx_pcr - IRQ fixups in arizona, stmpe, max14577 - Regulator related changes in axp20x - Pass DMA coherency information from parent => child in MFD core - Rename DT document files for consistency - Add ACPI support to the MFD core - Add Andreas Werner to MAINTAINERS for MEN F21BMC New drivers/supported devices: - New driver for MEN 14F021P00 Board Management Controller - New driver for Ricoh RN5T618 PMIC - New driver for Rockchip RK808 - New driver for HiSilicon Hi6421 PMIC - New driver for Qualcomm SPMI PMICs - Add support for Intel Braswell in lpc_ich - Add support for Intel 9 Series PCH in lpc_ich - Add support for Intel Quark ILB in lpc_sch" [ Delayed to after the poweer/reset pull due to Kconfig problems with recursive Kconfig select/depends-on chains. - Linus ] * tag 'mfd-for-linus-3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (79 commits) mfd: cros_ec: wait for completion of commands that return IN_PROGRESS i2c: i2c-cros-ec-tunnel: Set retries to 3 mfd: cros_ec: move locking into cros_ec_cmd_xfer mfd: cros_ec: stop calling ->cmd_xfer() directly mfd: cros_ec: Delay for 50ms when we see EC_CMD_REBOOT_EC MAINTAINERS: Adds Andreas Werner to maintainers list for MEN F21BMC mfd: arizona: Correct mask to allow setting micbias external cap mfd: Add ACPI support Revert "mfd: wm5102: Manually apply register patch" mfd: ti_am335x_tscadc: Update logic in CTRL register for 5-wire TS mfd: dt-bindings: atmel-gpbr: Rename doc file to conform to naming convention mfd: dt-bindings: qcom-pm8xxx: Rename doc file to conform to naming convention mfd: Inherit coherent_dma_mask from parent device mfd: Document DT bindings for Qualcomm SPMI PMICs mfd: Add support for Qualcomm SPMI PMICs mfd: dt-bindings: pm8xxx: Add new compatible string mfd: axp209x: Drop the parent supplies field mfd: twl4030-power: Use 'ti,system-power-controller' as alternative way to support system power off mfd: dt-bindings: twl4030-power: Use the standard property to mark power control mfd: syscon: Add Atmel GPBR DT bindings documention ...
This commit is contained in:
@@ -227,15 +227,12 @@ static irqreturn_t htcpld_handler(int irq, void *dev)
|
||||
static void htcpld_chip_set(struct gpio_chip *chip, unsigned offset, int val)
|
||||
{
|
||||
struct i2c_client *client;
|
||||
struct htcpld_chip *chip_data;
|
||||
struct htcpld_chip *chip_data =
|
||||
container_of(chip, struct htcpld_chip, chip_out);
|
||||
unsigned long flags;
|
||||
|
||||
chip_data = container_of(chip, struct htcpld_chip, chip_out);
|
||||
if (!chip_data)
|
||||
return;
|
||||
|
||||
client = chip_data->client;
|
||||
if (client == NULL)
|
||||
if (!client)
|
||||
return;
|
||||
|
||||
spin_lock_irqsave(&chip_data->lock, flags);
|
||||
@@ -261,31 +258,18 @@ static void htcpld_chip_set_ni(struct work_struct *work)
|
||||
static int htcpld_chip_get(struct gpio_chip *chip, unsigned offset)
|
||||
{
|
||||
struct htcpld_chip *chip_data;
|
||||
int val = 0;
|
||||
int is_input = 0;
|
||||
u8 cache;
|
||||
|
||||
/* Try out first */
|
||||
chip_data = container_of(chip, struct htcpld_chip, chip_out);
|
||||
if (!chip_data) {
|
||||
/* Try in */
|
||||
is_input = 1;
|
||||
if (!strncmp(chip->label, "htcpld-out", 10)) {
|
||||
chip_data = container_of(chip, struct htcpld_chip, chip_out);
|
||||
cache = chip_data->cache_out;
|
||||
} else if (!strncmp(chip->label, "htcpld-in", 9)) {
|
||||
chip_data = container_of(chip, struct htcpld_chip, chip_in);
|
||||
if (!chip_data)
|
||||
return -EINVAL;
|
||||
}
|
||||
cache = chip_data->cache_in;
|
||||
} else
|
||||
return -EINVAL;
|
||||
|
||||
/* Determine if this is an input or output GPIO */
|
||||
if (!is_input)
|
||||
/* Use the output cache */
|
||||
val = (chip_data->cache_out >> offset) & 1;
|
||||
else
|
||||
/* Use the input cache */
|
||||
val = (chip_data->cache_in >> offset) & 1;
|
||||
|
||||
if (val)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
return (cache >> offset) & 1;
|
||||
}
|
||||
|
||||
static int htcpld_direction_output(struct gpio_chip *chip,
|
||||
@@ -376,7 +360,7 @@ static int htcpld_register_chip_i2c(
|
||||
plat_chip_data = &pdata->chip[chip_index];
|
||||
|
||||
adapter = i2c_get_adapter(pdata->i2c_adapter_id);
|
||||
if (adapter == NULL) {
|
||||
if (!adapter) {
|
||||
/* Eek, no such I2C adapter! Bail out. */
|
||||
dev_warn(dev, "Chip at i2c address 0x%x: Invalid i2c adapter %d\n",
|
||||
plat_chip_data->addr, pdata->i2c_adapter_id);
|
||||
|
Reference in New Issue
Block a user