Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c2b9152f authored by Daniel Vetter's avatar Daniel Vetter
Browse files

drm/i915: add dev_priv to intel_gmbus



This way we can free up the bus->adaptor.algo_data pointer and make it
available for use with the bitbanging fallback algo.

Reviewed-by: default avatarEugeni Dodonov <eugeni.dodonov@intel.com>
Signed-Off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent caae745a
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -298,6 +298,13 @@ enum intel_pch {
struct intel_fbdev;
struct intel_fbc_work;

struct intel_gmbus {
	struct i2c_adapter adapter;
	struct i2c_adapter *force_bit;
	u32 reg0;
	struct drm_i915_private *dev_priv;
};

typedef struct drm_i915_private {
	struct drm_device *dev;

@@ -315,11 +322,7 @@ typedef struct drm_i915_private {
	/** gt_lock is also taken in irq contexts. */
	struct spinlock gt_lock;

	struct intel_gmbus {
		struct i2c_adapter adapter;
		struct i2c_adapter *force_bit;
		u32 reg0;
	} *gmbus;
	struct intel_gmbus *gmbus;

	/** gmbus_mutex protects against concurrent usage of the single hw gmbus
	 * controller on different i2c buses. */
+3 −3
Original line number Diff line number Diff line
@@ -232,7 +232,7 @@ gmbus_xfer(struct i2c_adapter *adapter,
	struct intel_gmbus *bus = container_of(adapter,
					       struct intel_gmbus,
					       adapter);
	struct drm_i915_private *dev_priv = adapter->algo_data;
	struct drm_i915_private *dev_priv = bus->dev_priv;
	int i, reg_offset, ret;

	mutex_lock(&dev_priv->gmbus_mutex);
@@ -406,7 +406,7 @@ int intel_setup_gmbus(struct drm_device *dev)
			 names[i]);

		bus->adapter.dev.parent = &dev->pdev->dev;
		bus->adapter.algo_data	= dev_priv;
		bus->dev_priv = dev_priv;

		bus->adapter.algo = &gmbus_algorithm;
		ret = i2c_add_adapter(&bus->adapter);
@@ -447,7 +447,7 @@ void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit)

	if (force_bit) {
		if (bus->force_bit == NULL) {
			struct drm_i915_private *dev_priv = adapter->algo_data;
			struct drm_i915_private *dev_priv = bus->dev_priv;
			bus->force_bit = intel_gpio_create(dev_priv,
							   bus->reg0 & 0xff);
		}