Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 293833
b: refs/heads/master
c: c167a6f
h: refs/heads/master
i:
  293831: 4bf9c77
v: v3
  • Loading branch information
Daniel Vetter committed Feb 29, 2012
1 parent 39337ea commit 2bc0948
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 34 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 36c785f051b21728775c9c4f2621d37d586553d0
refs/heads/master: c167a6fc6ed78a300c29181a6caf9ae1b9993289
2 changes: 2 additions & 0 deletions trunk/drivers/gpu/drm/i915/i915_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
#include "intel_ringbuffer.h"
#include <linux/io-mapping.h>
#include <linux/i2c.h>
#include <linux/i2c-algo-bit.h>
#include <drm/intel-gtt.h>
#include <linux/backlight.h>

Expand Down Expand Up @@ -303,6 +304,7 @@ struct intel_gmbus {
struct i2c_adapter *force_bit;
u32 reg0;
u32 gpio_reg;
struct i2c_algo_bit_data bit_algo;
struct drm_i915_private *dev_priv;
};

Expand Down
38 changes: 5 additions & 33 deletions trunk/drivers/gpu/drm/i915/intel_i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -154,29 +154,18 @@ intel_gpio_create(struct intel_gmbus *bus, u32 pin)
0,
GPIOF,
};
struct i2c_adapter *adapter;
struct i2c_algo_bit_data *algo;

if (pin >= ARRAY_SIZE(map_pin_to_reg) || !map_pin_to_reg[pin])
return NULL;

adapter = kzalloc(sizeof(struct i2c_adapter), GFP_KERNEL);
if (adapter == NULL)
return NULL;

algo = kzalloc(sizeof(struct i2c_algo_bit_data), GFP_KERNEL);
if (algo == NULL)
goto out_adap;
algo = &bus->bit_algo;

bus->gpio_reg = map_pin_to_reg[pin];
if (HAS_PCH_SPLIT(dev_priv->dev))
bus->gpio_reg += PCH_GPIOA - GPIOA;

snprintf(adapter->name, sizeof(adapter->name),
"i915 GPIO%c", "?BACDE?F"[pin]);
adapter->owner = THIS_MODULE;
adapter->algo_data = algo;
adapter->dev.parent = &dev_priv->dev->pdev->dev;
bus->adapter.algo_data = algo;
algo->setsda = set_data;
algo->setscl = set_clock;
algo->getsda = get_data;
Expand All @@ -185,16 +174,7 @@ intel_gpio_create(struct intel_gmbus *bus, u32 pin)
algo->timeout = usecs_to_jiffies(2200);
algo->data = bus;

if (i2c_bit_add_bus(adapter))
goto out_algo;

return adapter;

out_algo:
kfree(algo);
out_adap:
kfree(adapter);
return NULL;
return &bus->adapter;
}

static int
Expand All @@ -213,7 +193,7 @@ intel_i2c_quirk_xfer(struct intel_gmbus *bus,
set_clock(bus, 1);
udelay(I2C_RISEFALL_TIME);

ret = adapter->algo->master_xfer(adapter, msgs, num);
ret = i2c_bit_algo.master_xfer(adapter, msgs, num);

set_data(bus, 1);
set_clock(bus, 1);
Expand Down Expand Up @@ -353,7 +333,7 @@ static u32 gmbus_func(struct i2c_adapter *adapter)
adapter);

if (bus->force_bit)
bus->force_bit->algo->functionality(bus->force_bit);
i2c_bit_algo.functionality(bus->force_bit);

return (I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL |
/* I2C_FUNC_10BIT_ADDR | */
Expand Down Expand Up @@ -449,9 +429,6 @@ void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit)
}
} else {
if (bus->force_bit) {
i2c_del_adapter(bus->force_bit);
kfree(bus->force_bit->algo);
kfree(bus->force_bit);
bus->force_bit = NULL;
}
}
Expand All @@ -467,11 +444,6 @@ void intel_teardown_gmbus(struct drm_device *dev)

for (i = 0; i < GMBUS_NUM_PORTS; i++) {
struct intel_gmbus *bus = &dev_priv->gmbus[i];
if (bus->force_bit) {
i2c_del_adapter(bus->force_bit);
kfree(bus->force_bit->algo);
kfree(bus->force_bit);
}
i2c_del_adapter(&bus->adapter);
}

Expand Down

0 comments on commit 2bc0948

Please sign in to comment.