From: Felipe Balbi <balbi@ti.com>
To: Tony Lindgren <tony@atomide.com>
Cc: "Linux OMAP Mailing List" <linux-omap@vger.kernel.org>,
"Michael Büsch" <mb@bu3sch.de>, "Felipe Balbi" <balbi@ti.com>
Subject: [PATCH 20/22] cbus: tahvo: pass child device pointer
Date: Mon, 11 Jul 2011 14:17:33 +0300 [thread overview]
Message-ID: <1310383055-20211-21-git-send-email-balbi@ti.com> (raw)
In-Reply-To: <1310383055-20211-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
next prev parent reply other threads:[~2011-07-11 11:19 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-11 11:17 [PATCH 00/22] Tahvo cleanups and Retu optimization Felipe Balbi
2011-07-11 11:17 ` [PATCH 01/22] cbus: tahvo: convert spinlock into mutex Felipe Balbi
2011-07-11 11:17 ` [PATCH 02/22] cbus: tahvo: move to __devinit/__devexit sections Felipe Balbi
2011-07-11 11:17 ` [PATCH 03/22] cbus: tahvo: a switch looks better Felipe Balbi
2011-07-11 11:17 ` [PATCH 04/22] cbus: tahvo: don't go over 80 columns Felipe Balbi
2011-07-11 11:17 ` [PATCH 05/22] cbus: tahvo: drop the tasklet Felipe Balbi
2011-07-11 11:17 ` [PATCH 06/22] cbus: retu: set IRQF_ONESHOT flag Felipe Balbi
2011-07-11 11:17 ` [PATCH 07/22] cbus: tahvo: git it a context structure Felipe Balbi
2011-07-11 11:17 ` [PATCH 08/22] cbus: tahvo: pass tahvo to IRQ handler Felipe Balbi
2011-07-11 11:17 ` [PATCH 09/22] cbus: tahvo: introduce __tahvo_(read/write)_reg Felipe Balbi
2011-07-11 11:17 ` [PATCH 10/22] cbus: tahvo: drop some unneded defines Felipe Balbi
2011-07-11 11:17 ` [PATCH 11/22] cbus: retu: IRQ demux optimization Felipe Balbi
2011-07-11 11:17 ` [PATCH 12/22] cbus: tahvo: give it an irq_chip Felipe Balbi
2011-07-11 11:17 ` [PATCH 13/22] cbus: tahvo: start using irq_chip Felipe Balbi
2011-07-11 11:17 ` [PATCH 14/22] cbus: tahvo: usb: fix up to use threaded irqs Felipe Balbi
2011-07-11 11:17 ` [PATCH 15/22] cbus: tahvo drop the legacy interfaces Felipe Balbi
2011-07-11 11:17 ` [PATCH 16/22] cbus: tahvo: usb: drop unused variable Felipe Balbi
2011-07-11 11:17 ` [PATCH 17/22] cbus: tahvo: no need to mask interrupts on exit Felipe Balbi
2011-07-11 11:17 ` [PATCH 18/22] cbus: tahvo: drop the get_status hack Felipe Balbi
2011-07-11 11:17 ` [PATCH 19/22] cbus: tahvo: drop more unused interfaces Felipe Balbi
2011-07-11 11:17 ` Felipe Balbi [this message]
2011-07-11 11:17 ` [PATCH 21/22] cbus: tahvo: drop backlight interfaces Felipe Balbi
2011-07-11 11:17 ` [PATCH 22/22] cbus: tahvo: drop static global pointer Felipe Balbi
2011-07-11 11:28 ` [PATCH 00/22] Tahvo cleanups and Retu optimization Michael Büsch
2011-07-11 13:12 ` Felipe Balbi
2011-07-11 13:41 ` Michael Büsch
2011-07-11 13:45 ` Felipe Balbi
2011-07-11 13:51 ` Michael Büsch
2011-07-11 14:03 ` Felipe Balbi
2011-07-11 14:19 ` Michael Büsch
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=1310383055-20211-21-git-send-email-balbi@ti.com \
--to=balbi@ti.com \
--cc=linux-omap@vger.kernel.org \
--cc=mb@bu3sch.de \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox