All of lore.kernel.org
 help / color / mirror / Atom feed
From: Felipe Balbi <balbi@ti.com>
To: Tony Lindgren <tony@atomide.com>
Cc: Linux OMAP Mailing List <linux-omap@vger.kernel.org>,
	Felipe Balbi <balbi@ti.com>
Subject: [PATCH 20/27] cbus: tahvo: pass child device pointer
Date: Thu, 13 Oct 2011 11:34:55 +0300	[thread overview]
Message-ID: <1318494902-13093-20-git-send-email-balbi@ti.com> (raw)
In-Reply-To: <1318494902-13093-1-git-send-email-balbi@ti.com>

on read/write register operations, if we pass
the child device pointer, it becomes really easy
to access our device structure. Let's do so.

Signed-off-by: Felipe Balbi <balbi@ti.com>
---
 drivers/cbus/tahvo-usb.c |   18 ++++++++++--------
 drivers/cbus/tahvo.c     |   18 +++++++++++-------
 drivers/cbus/tahvo.h     |    7 ++++---
 3 files changed, 25 insertions(+), 18 deletions(-)

diff --git a/drivers/cbus/tahvo-usb.c b/drivers/cbus/tahvo-usb.c
index 04fe770..41e39ca 100644
--- a/drivers/cbus/tahvo-usb.c
+++ b/drivers/cbus/tahvo-usb.c
@@ -90,6 +90,7 @@
 #endif
 
 struct tahvo_usb {
+	struct device		*dev;
 	struct platform_device *pt_dev;
 	struct otg_transceiver otg;
 	int vbus_state;
@@ -240,7 +241,7 @@ static void check_vbus_state(struct tahvo_usb *tu)
 {
 	int reg, prev_state;
 
-	reg = tahvo_read_reg(TAHVO_REG_IDSR);
+	reg = tahvo_read_reg(tu->dev, TAHVO_REG_IDSR);
 	if (reg & 0x01) {
 		u32 l;
 
@@ -304,7 +305,7 @@ static void tahvo_usb_become_host(struct tahvo_usb *tu)
 	omap_writel(l, OTG_CTRL);
 
 	/* Power up the transceiver in USB host mode */
-	tahvo_write_reg(TAHVO_REG_USBR, USBR_REGOUT | USBR_NSUSPEND |
+	tahvo_write_reg(tu->dev, TAHVO_REG_USBR, USBR_REGOUT | USBR_NSUSPEND |
 			USBR_MASTER_SW2 | USBR_MASTER_SW1);
 	tu->otg.state = OTG_STATE_A_IDLE;
 
@@ -330,7 +331,7 @@ static void tahvo_usb_become_peripheral(struct tahvo_usb *tu)
 	omap_writel(l, OTG_CTRL);
 
 	/* Power up transceiver and set it in USB perhiperal mode */
-	tahvo_write_reg(TAHVO_REG_USBR, USBR_SLAVE_CONTROL | USBR_REGOUT | USBR_NSUSPEND | USBR_SLAVE_SW);
+	tahvo_write_reg(tu->dev, TAHVO_REG_USBR, USBR_SLAVE_CONTROL | USBR_REGOUT | USBR_NSUSPEND | USBR_SLAVE_SW);
 	tu->otg.state = OTG_STATE_B_IDLE;
 
 	check_vbus_state(tu);
@@ -380,7 +381,7 @@ static void tahvo_usb_power_off(struct tahvo_usb *tu)
 	omap_writel(l, OTG_SYSCON_1);
 
 	/* Power off transceiver */
-	tahvo_write_reg(TAHVO_REG_USBR, 0);
+	tahvo_write_reg(tu->dev, TAHVO_REG_USBR, 0);
 	tu->otg.state = OTG_STATE_UNDEFINED;
 }
 
@@ -404,12 +405,12 @@ static int tahvo_usb_set_suspend(struct otg_transceiver *dev, int suspend)
 
 	dev_dbg(&tu->pt_dev->dev, "set_suspend\n");
 
-	w = tahvo_read_reg(TAHVO_REG_USBR);
+	w = tahvo_read_reg(tu->dev, TAHVO_REG_USBR);
 	if (suspend)
 		w &= ~USBR_NSUSPEND;
 	else
 		w |= USBR_NSUSPEND;
-	tahvo_write_reg(TAHVO_REG_USBR, w);
+	tahvo_write_reg(tu->dev, TAHVO_REG_USBR, w);
 
 	return 0;
 }
@@ -602,7 +603,8 @@ static int __init tahvo_usb_probe(struct platform_device *pdev)
 		return -ENOMEM;
 	tahvo_usb_device = tu;
 
-	tu->pt_dev = container_of(dev, struct platform_device, dev);
+	tu->dev = dev;
+	tu->pt_dev = pdev;
 #ifdef CONFIG_USB_OTG
 	/* Default mode */
 #ifdef CONFIG_CBUS_TAHVO_USB_HOST_BY_DEFAULT
@@ -624,7 +626,7 @@ static int __init tahvo_usb_probe(struct platform_device *pdev)
 
 	/* Set initial state, so that we generate kevents only on
 	 * state changes */
-	tu->vbus_state = tahvo_read_reg(TAHVO_REG_IDSR) & 0x01;
+	tu->vbus_state = tahvo_read_reg(tu->dev, TAHVO_REG_IDSR) & 0x01;
 
 	irq = platform_get_irq(pdev, 0);
 	tu->irq = irq;
diff --git a/drivers/cbus/tahvo.c b/drivers/cbus/tahvo.c
index 8192a24..12d95ac 100644
--- a/drivers/cbus/tahvo.c
+++ b/drivers/cbus/tahvo.c
@@ -82,13 +82,14 @@ static void __tahvo_write_reg(struct tahvo *tahvo, unsigned reg, u16 val)
 
 /**
  * tahvo_read_reg - Read a value from a register in Tahvo
+ * @child: device pointer from the calling child
  * @reg: the register to read from
  *
  * This function returns the contents of the specified register
  */
-int tahvo_read_reg(unsigned reg)
+int tahvo_read_reg(struct device *child, unsigned reg)
 {
-	struct tahvo		*tahvo = the_tahvo;
+	struct tahvo		*tahvo = dev_get_drvdata(child->parent);
 
 	return __tahvo_read_reg(tahvo, reg);
 }
@@ -96,14 +97,15 @@ EXPORT_SYMBOL(tahvo_read_reg);
 
 /**
  * tahvo_write_reg - Write a value to a register in Tahvo
+ * @child: device pointer from the calling child
  * @reg: the register to write to
- * @reg: the value to write to the register
+ * @val : the value to write to the register
  *
  * This function writes a value to the specified register
  */
-void tahvo_write_reg(unsigned reg, u16 val)
+void tahvo_write_reg(struct device *child, unsigned reg, u16 val)
 {
-	struct tahvo		*tahvo = the_tahvo;
+	struct tahvo		*tahvo = dev_get_drvdata(child->parent);
 
 	__tahvo_write_reg(tahvo, reg, val);
 }
@@ -111,14 +113,16 @@ EXPORT_SYMBOL(tahvo_write_reg);
 
 /**
  * tahvo_set_clear_reg_bits - set and clear register bits atomically
+ * @child: device pointer from the calling child
  * @reg: the register to write to
  * @bits: the bits to set
  *
  * This function sets and clears the specified Tahvo register bits atomically
  */
-void tahvo_set_clear_reg_bits(unsigned reg, u16 set, u16 clear)
+void tahvo_set_clear_reg_bits(struct device *child, unsigned reg, u16 set,
+		u16 clear)
 {
-	struct tahvo		*tahvo = the_tahvo;
+	struct tahvo		*tahvo = dev_get_drvdata(child->parent);
 	u16			w;
 
 	mutex_lock(&tahvo->mutex);
diff --git a/drivers/cbus/tahvo.h b/drivers/cbus/tahvo.h
index 3c0b381..1281710 100644
--- a/drivers/cbus/tahvo.h
+++ b/drivers/cbus/tahvo.h
@@ -50,9 +50,10 @@
 
 #define MAX_TAHVO_IRQ_HANDLERS	8
 
-int tahvo_read_reg(unsigned reg);
-void tahvo_write_reg(unsigned reg, u16 val);
-void tahvo_set_clear_reg_bits(unsigned reg, u16 set, u16 clear);
+int tahvo_read_reg(struct device *child, unsigned reg);
+void tahvo_write_reg(struct device *child, unsigned reg, u16 val);
+void tahvo_set_clear_reg_bits(struct device *child, unsigned reg, u16 set,
+		u16 clear);
 int tahvo_get_backlight_level(void);
 int tahvo_get_max_backlight_level(void);
 void tahvo_set_backlight_level(int level);
-- 
1.7.6.396.ge0613


  parent reply	other threads:[~2011-10-13  8:35 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-13  8:34 [PATCH 01/27] cbus: tahvo: convert spinlock into mutex Felipe Balbi
2011-10-13  8:34 ` [PATCH 02/27] cbus: tahvo: move to __devinit/__devexit sections Felipe Balbi
2011-10-13  8:34 ` [PATCH 03/27] cbus: tahvo: a switch looks better Felipe Balbi
2011-10-13  8:34 ` [PATCH 04/27] cbus: tahvo: don't go over 80 columns Felipe Balbi
2011-10-13  8:34 ` [PATCH 05/27] cbus: tahvo: drop the tasklet Felipe Balbi
2011-10-13  8:34 ` [PATCH 06/27] cbus: retu: set IRQF_ONESHOT flag Felipe Balbi
2011-10-13  8:34 ` [PATCH 07/27] cbus: tahvo: git it a context structure Felipe Balbi
2011-10-13  8:34 ` [PATCH 08/27] cbus: tahvo: pass tahvo to IRQ handler Felipe Balbi
2011-10-13  8:34 ` [PATCH 09/27] cbus: tahvo: introduce __tahvo_(read/write)_reg Felipe Balbi
2011-10-13  8:34 ` [PATCH 10/27] cbus: tahvo: drop some unneded defines Felipe Balbi
2011-10-13  8:34 ` [PATCH 11/27] cbus: retu: IRQ demux optimization Felipe Balbi
2011-10-13  8:34 ` [PATCH 12/27] cbus: tahvo: give it an irq_chip Felipe Balbi
2011-10-13  8:34 ` [PATCH 13/27] cbus: tahvo: start using irq_chip Felipe Balbi
2011-10-13  8:34 ` [PATCH 14/27] cbus: tahvo: usb: fix up to use threaded irqs Felipe Balbi
2011-10-13  8:34 ` [PATCH 15/27] cbus: tahvo drop the legacy interfaces Felipe Balbi
2011-10-13  8:34 ` [PATCH 16/27] cbus: tahvo: usb: drop unused variable Felipe Balbi
2011-10-13  8:34 ` [PATCH 17/27] cbus: tahvo: no need to mask interrupts on exit Felipe Balbi
2011-10-13  8:34 ` [PATCH 18/27] cbus: tahvo: drop the get_status hack Felipe Balbi
2011-10-13  8:34 ` [PATCH 19/27] cbus: tahvo: drop more unused interfaces Felipe Balbi
2011-10-13  8:34 ` Felipe Balbi [this message]
2011-10-13  8:34 ` [PATCH 21/27] cbus: tahvo: drop backlight interfaces Felipe Balbi
2011-10-13  8:34 ` [PATCH 22/27] cbus: tahvo: drop static global pointer Felipe Balbi
2011-10-13  8:34 ` [PATCH 23/27] cbus: tahvo: prepare for children without IRQ Felipe Balbi
2011-10-13  8:34 ` [PATCH 24/27] cbus: tahvo: allocate tahvo-pwm child Felipe Balbi
2011-10-13  8:35 ` [PATCH 25/27] cbus: fix compile issue on tahvo and retu Felipe Balbi
2011-10-13  8:35 ` [PATCH 26/27] cbus: use platform_driver_register " Felipe Balbi
2011-10-13  8:35 ` [PATCH 27/27] cbus: mark dependencies for ARCH_OMAP Felipe Balbi
2011-10-17 17:20 ` [PATCH 01/27] cbus: tahvo: convert spinlock into mutex Tony Lindgren
2011-10-17 18:04   ` Felipe Balbi
2011-10-17 18:19     ` Tony Lindgren
2011-10-17 18:26       ` Felipe Balbi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1318494902-13093-20-git-send-email-balbi@ti.com \
    --to=balbi@ti.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=tony@atomide.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.