Skip to contentSkip to conversation

ARM: OMAP: Fix tlv320aic23.c

PATCH In review Dirk Behme 5 participants 14 messages Apr 28, 2006 – Jul 4, 2006

Subsystems (3)
lore
Share & tools
lore

Dirk Behme

author
#0 lore raw

PATCH 1/1 ARM: OMAP: Fix tlv320aic23.c

ARM: OMAP: Fix error from GCC 4.1.0:

drivers/i2c/chips/tlv320aic23.c:157: error: expected '=' before '{' token drivers/i2c/chips/tlv320aic23.c:161: error: expected '}' before '.' token

Signed-off-by Dirk Behme <dirk.behme_at_gmail.com>

-- cut, comment not to go into git below --

Seems that the first part of

http://source.mvista.com/git/gitweb.cgi?p=linux-omap-2.6.git;a=commitdiff;h=51c0cddf5027bd4e5c1903845047d7d7e266c79b

was lost somewhere??

drivers/i2c/chips/tlv320aic23.c renamed from drivers/i2c/chips/tlv320aic23.c_orig +1 -1
@@ -154,7 +154,7 @@ static int aic23_attach_adapter(struct i
 }
 
 static struct i2c_driver aic23_driver = {
-	.driver {
+	.driver = {
 		.name	= "OMAP+TLV320AIC23 codec",
 		/*.flags	= I2C_DF_NOTIFY,*/
 	},
#1 lore raw
Quoted 22 lines · Dirk Behme

ARM: OMAP: Fix error from GCC 4.1.0:

drivers/i2c/chips/tlv320aic23.c:157: error: expected '=' before '{' token drivers/i2c/chips/tlv320aic23.c:161: error: expected '}' before '.' token

Signed-off-by Dirk Behme <dirk.behme_at_gmail.com>

-- cut, comment not to go into git below --

Seems that the first part of

http://source.mvista.com/git/gitweb.cgi?p=linux-omap-2.6.git;a=commitdiff;h=51c0cddf5027bd4e5c1903845047d7d7e266c79b

was lost somewhere??

drivers/i2c/chips/tlv320aic23.c static int aic23_attach_adapter(struct i · line 160

Quoted 8 lines
drivers/i2c/chips/tlv320aic23.c renamed from drivers/i2c/chips/tlv320aic23.c_orig +1 -1
@@ -154,7 +154,7 @@ static int aic23_attach_adapter(struct i
 }
 
 static struct i2c_driver aic23_driver = {
-	.driver {
+	.driver = {
 		.name	= "OMAP+TLV320AIC23 codec",
 		/*.flags	= I2C_DF_NOTIFY,*/
 	},

Thanks, pushed your patch.

I think the earlier patch chunk has gotten auto-hosed by git merge in Juha's recent merge:

http://source.mvista.com/git/gitweb.cgi?p=linux-omap-2.6.git;a=commit;h=330c1eb9a689973326cdece277d0b4b409833bb9

Mika & Dirk, can you guys check if some of the other audio files got hosed or some old audio files got added back?

Regards,

Tony

author
#2 lore raw
Quoted 6 lines · Tony Lindgren
Quoted 5 lines · Dirk Behme

Seems that the first part of

http://source.mvista.com/git/gitweb.cgi?p=linux-omap-2.6.git;a=commitdiff;h=51c0cddf5027bd4e5c1903845047d7d7e266c79b

was lost somewhere??

...

Quoted 9 lines

Thanks, pushed your patch.

I think the earlier patch chunk has gotten auto-hosed by git merge in Juha's recent merge:

http://source.mvista.com/git/gitweb.cgi?p=linux-omap-2.6.git;a=commit;h=330c1eb9a689973326cdece277d0b4b409833bb9

Mika & Dirk, can you guys check if some of the other audio files got hosed or some old audio files got added back?

Mmmh, seems that something is going on here I don't understand completely ;(

While building modules with most recent git I get two warnings (or better errors, modules are not build):

WARNING: "tlv320aic23_write_value" [sound/arm/omap/snd-omap-alsa-aic23.ko] undefined!
WARNING: "usb_disconnect" [drivers/usb/host/ohci-hcd.ko] undefined!

Not sure if USB is OMAP related, but aic is. Looking at

http://source.mvista.com/git/gitweb.cgi?p=linux-omap-2.6.git;a=blobdiff;h=fac8d6b7518032f54869cc309328e812e16892be;hp=7fdd1d3608b2c41141901acff4b79df27b0f53df;hb=51c0cddf5027bd4e5c1903845047d7d7e266c79b;f=drivers/i2c/chips/tlv320aic23.c

shows that from function names and variables 'tlv320' was removed. However, commitdiff only shows the small (correct) patch.

Patch in seperate mail.

Any ideas about USB? Seems that it comes from
drivers/usb/host/ohci-omap.c

Regards

Dirk

#13 lore raw
In reply to Tony Lindgren
Quoted 12 lines

Thanks, pushed your patch.

I think the earlier patch chunk has gotten auto-hosed by git merge in Juha's recent merge:

http://source.mvista.com/git/gitweb.cgi?p=linux-omap-2.6.git;a=commit;h=330c1eb9a689973326cdece277d0b4b409833bb9

Mika & Dirk, can you guys check if some of the other audio files got hosed or some old audio files got added back?

I think the sound/arm/omap-aic23.h has appeared as a resulf of that and can be removed. The new version is nowadays in sound/arm/omap/omap-alsa-aic23.h

Mika

#3 lore raw
In reply to Dirk Behme
Quoted 2 lines · Dirk Behme

WARNING: "usb_disconnect" [drivers/usb/host/ohci-hcd.ko] undefined!

Of course, it hasn't been exported for a while now.

Quoted 4 lines

...

Any ideas about USB? Seems that it comes from
drivers/usb/host/ohci-omap.c

I see a curious and pointless routine, ohci_omap_host_enable(), which isn't called from anywhere I can see, which wants usb_disconnect().

Try deleting that routine.

- Dave

author
#4 lore raw

Undefined usb_disconnect, was [PATCH] ARM: OMAP: Fix tlv320aic23.c

Quoted 7 lines · David Brownell
Quoted 2 lines · Dirk Behme

WARNING: "usb_disconnect" [drivers/usb/host/ohci-hcd.ko] undefined!

Of course, it hasn't been exported for a while now.

Quoted 1 line
Quoted 7 lines
Quoted 2 lines

Any ideas about USB? Seems that it comes from
drivers/usb/host/ohci-omap.c

I see a curious and pointless routine, ohci_omap_host_enable(), which isn't called from anywhere I can see, which wants usb_disconnect().

Try deleting that routine.

tahvo-usb.c uses ohci_omap_host_enable():

./drivers/cbus/tahvo-usb.c:88:extern int ohci_omap_host_enable(struct usb_bus *host, int enable); ./drivers/cbus/tahvo-usb.c:248: ohci_omap_host_enable(tu->otg.host, 1); ./drivers/cbus/tahvo-usb.c:266: ohci_omap_host_enable(tu->otg.host, 0); ./drivers/cbus/tahvo-usb.c:300: ohci_omap_host_enable(tu->otg.host, 0); ./drivers/cbus/tahvo-usb.c:338: ohci_omap_host_enable(tu->otg.host, 0); ./drivers/cbus/tahvo-usb.c:431: ohci_omap_host_enable(host, 0);

Regards

Dirk

#5 lore raw

Re: Undefined usb_disconnect, was [PATCH] ARM: OMAP: Fix tlv320aic23.c

Quoted 9 lines · Dirk Behme
Quoted 6 lines · David Brownell

On Wednesday 03 May 2006 11:41 am, Dirk Behme wrote:

I see a curious and pointless routine, ohci_omap_host_enable(), which isn't called from anywhere I can see, which wants usb_disconnect().

Try deleting that routine.

tahvo-usb.c uses ohci_omap_host_enable():

And so it does. That would be a bug in how the Tahvo transceiver is trying to activate the USB host. It should be able to just use the normal power management suspend and resume calls... certainly there's no benefit to creating transceiver-specific backdoors into usbcore for runtime PM.

- Dave

author
#6 lore raw

Re: Undefined usb_disconnect

Quoted 8 lines · David Brownell
Quoted 7 lines · Dirk Behme
Quoted 5 lines · David Brownell

On Wednesday 03 May 2006 11:41 am, Dirk Behme wrote:
I see a curious and pointless routine, ohci_omap_host_enable(), which isn't called from anywhere I can see, which wants usb_disconnect().

Try deleting that routine.

Quoted 7 lines
Quoted 1 line

tahvo-usb.c uses ohci_omap_host_enable():

And so it does. That would be a bug in how the Tahvo transceiver is trying to activate the USB host. It should be able to just use the normal power management suspend and resume calls... certainly there's no benefit to creating transceiver-specific backdoors into usbcore for runtime PM.

Anybody like to fix and test tahvo-usb.c regarding this? Then we could remove ohci_omap_host_enable() from drivers/usb/host/ohci-omap.c .

Cheers

Dirk

#7 lore raw

Re: Undefined usb_disconnect

Hi all,

Quoted 17 lines · On Fri, 05 May 2006 06:50:11 +0200 "ext Dirk Behme"…
Quoted 8 lines · David Brownell
Quoted 7 lines · Dirk Behme
Quoted 5 lines · David Brownell

On Wednesday 03 May 2006 11:41 am, Dirk Behme wrote:
I see a curious and pointless routine, ohci_omap_host_enable(), which isn't called from anywhere I can see, which wants usb_disconnect().

Try deleting that routine.

Quoted 7 lines
Quoted 1 line

tahvo-usb.c uses ohci_omap_host_enable():

And so it does. That would be a bug in how the Tahvo transceiver is trying to activate the USB host. It should be able to just use the normal power management suspend and resume calls... certainly there's no benefit to creating transceiver-specific backdoors into usbcore for runtime PM.

Quoted 3 lines

Anybody like to fix and test tahvo-usb.c regarding this? Then we could remove ohci_omap_host_enable() from drivers/usb/host/ohci-omap.c .

I will work on this, because we need this feature.

Hiroshi DOYU

Quoted 8 lines

Cheers

Dirk
_______________________________________________
Linux-omap-open-source mailing list
[email protected]
http://linux.omap.com/mailman/listinfo/linux-omap-open-source

#9 lore raw

Re: Undefined usb_disconnect

Quoted 6 lines · Dirk Behme

Hi,

with recent git I still get

WARNING: "usb_disconnect" [drivers/usb/host/ohci-hcd.ko] undefined!

Try the attached patch instead ... it fixes some other glitches in the OMAP bus glue, as well as those.

- Dave

Various fixes for the OHCI OMAP glue:

- Properly use the usbcore HCD lifecycle entry points

- Remove calls to non-exported usbcore routines.

- Stop inappropriate export of some bus glue calls

Plus remove some extra whitespace.

drivers/usb/host/ohci-omap.c +29 -76
Index: osk/drivers/usb/host/ohci-omap.c
===================================================================
@@ -4,7 +4,7 @@
  * (C) Copyright 1999 Roman Weissgaerber <[email protected]>
  * (C) Copyright 2000-2005 David Brownell
  * (C) Copyright 2002 Hewlett-Packard Company
- * 
+ *
  * OMAP Bus Glue
  *
  * Modified for OMAP by Tony Lindgren <[email protected]>
@@ -92,14 +92,14 @@ static int omap_ohci_transceiver_power(i
 	if (on) {
 		if (machine_is_omap_innovator() && cpu_is_omap1510())
 			fpga_write(fpga_read(INNOVATOR_FPGA_CAM_USB_CONTROL)
-				| ((1 << 5/*usb1*/) | (1 << 3/*usb2*/)), 
+				| ((1 << 5/*usb1*/) | (1 << 3/*usb2*/)),
 			       INNOVATOR_FPGA_CAM_USB_CONTROL);
 		else if (machine_is_omap_osk())
 			tps65010_set_gpio_out_value(GPIO1, LOW);
 	} else {
 		if (machine_is_omap_innovator() && cpu_is_omap1510())
 			fpga_write(fpga_read(INNOVATOR_FPGA_CAM_USB_CONTROL)
-				& ~((1 << 5/*usb1*/) | (1 << 3/*usb2*/)), 
+				& ~((1 << 5/*usb1*/) | (1 << 3/*usb2*/)),
 			       INNOVATOR_FPGA_CAM_USB_CONTROL);
 		else if (machine_is_omap_osk())
 			tps65010_set_gpio_out_value(GPIO1, HIGH);
@@ -127,8 +127,8 @@ static int omap_1510_local_bus_power(int
 /*
  * OMAP-1510 specific Local Bus initialization
  * NOTE: This assumes 32MB memory size in OMAP1510LB_MEMSIZE.
- *       See also arch/mach-omap/memory.h for __virt_to_dma() and 
- *       __dma_to_virt() which need to match with the physical 
+ *       See also arch/mach-omap/memory.h for __virt_to_dma() and
+ *       __dma_to_virt() which need to match with the physical
  *       Local Bus address below.
  */
 static int omap_1510_local_bus_init(void)
@@ -136,7 +136,7 @@ static int omap_1510_local_bus_init(void
 	unsigned int tlb;
 	unsigned long lbaddr, physaddr;
 
-	omap_writel((omap_readl(OMAP1510_LB_CLOCK_DIV) & 0xfffffff8) | 0x4, 
+	omap_writel((omap_readl(OMAP1510_LB_CLOCK_DIV) & 0xfffffff8) | 0x4,
 	       OMAP1510_LB_CLOCK_DIV);
 
 	/* Configure the Local Bus MMU table */
@@ -144,7 +144,7 @@ static int omap_1510_local_bus_init(void
 		lbaddr = tlb * 0x00100000 + OMAP1510_LB_OFFSET;
 		physaddr = tlb * 0x00100000 + PHYS_OFFSET;
 		omap_writel((lbaddr & 0x0fffffff) >> 22, OMAP1510_LB_MMU_CAM_H);
-		omap_writel(((lbaddr & 0x003ffc00) >> 6) | 0xc, 
+		omap_writel(((lbaddr & 0x003ffc00) >> 6) | 0xc,
 		       OMAP1510_LB_MMU_CAM_L);
 		omap_writel(physaddr >> 16, OMAP1510_LB_MMU_RAM_H);
 		omap_writel((physaddr & 0x0000fc00) | 0x300, OMAP1510_LB_MMU_RAM_L);
@@ -183,13 +183,14 @@ static void start_hnp(struct ohci_hcd *o
 
 /*-------------------------------------------------------------------------*/
 
-static int omap_start_hc(struct ohci_hcd *ohci, struct platform_device *pdev)
+static int ohci_omap_init(struct usb_hcd *hcd)
 {
-	struct omap_usb_config	*config = pdev->dev.platform_data;
+	struct ohci_hcd		*ohci = hcd_to_ohci(hcd);
+	struct omap_usb_config	*config = hcd->self.controller->platform_data;
 	int			need_transceiver = (config->otg != 0);
 	int			ret;
 
-	dev_dbg(&pdev->dev, "starting USB Controller\n");
+	dev_dbg(hcd->self.controller, "starting USB Controller\n");
 
 	if (config->otg) {
 		ohci_to_hcd(ohci)->self.otg_port = config->otg;
@@ -210,7 +211,7 @@ static int omap_start_hc(struct ohci_hcd
 		if (ohci->transceiver) {
 			int	status = otg_set_host(ohci->transceiver,
 						&ohci_to_hcd(ohci)->self);
-			dev_dbg(&pdev->dev, "init %s transceiver, status %d\n",
+			dev_dbg(hcd->self.controller, "init %s transceiver, status %d\n",
 					ohci->transceiver->label, status);
 			if (status) {
 				if (ohci->transceiver)
@@ -218,7 +219,7 @@ static int omap_start_hc(struct ohci_hcd
 				return status;
 			}
 		} else {
-			dev_err(&pdev->dev, "can't find transceiver\n");
+			dev_err(hcd->self.controller, "can't find transceiver\n");
 			return -ENODEV;
 		}
 	}
@@ -270,58 +271,15 @@ static int omap_start_hc(struct ohci_hcd
 	return 0;
 }
 
-static void omap_stop_hc(struct platform_device *pdev)
+static void ohci_omap_stop(struct usb_hcd *hcd)
 {
-	dev_dbg(&pdev->dev, "stopping USB Controller\n");
+	dev_dbg(hcd->self.controller, "stopping USB Controller\n");
 	omap_ohci_clock_power(0);
 }
 
 
 /*-------------------------------------------------------------------------*/
 
-void usb_hcd_omap_remove (struct usb_hcd *, struct platform_device *);
-
-/* configure so an HC device and id are always provided */
-/* always called with process context; sleeping is OK */
-
-
-int ohci_omap_host_enable(struct usb_bus *host, int enable)
-{
-	struct usb_hcd *hcd;
-	struct ohci_hcd *ohci;
-	int retval;
-
-	if (host_enabled == enable)
-		return 0;
-
-	host_enabled = enable;
-
-	if (!host_initialized)
-		return 0;
-
-	hcd = (struct usb_hcd *)host->hcpriv;
-	ohci = hcd_to_ohci(hcd);
-	if (enable) {
-		omap_ohci_clock_power(1);
-		if ((retval = ohci_init(ohci)) < 0) {
-			dev_err(hcd->self.controller, "init error %d\n",
-				retval);
-			return retval;
-		}
-		if ((retval = hcd->driver->start(hcd)) < 0) {
-			dev_err(hcd->self.controller, "startup error %d\n",
-				retval);
-			return retval;
-		}
-	} else {
-		usb_disconnect(&hcd->self.root_hub);
-		hcd->driver->stop(hcd);
-		omap_ohci_clock_power(0);
-	}
-
-	return 0;
-}
-
 /**
  * usb_hcd_omap_probe - initialize OMAP-based HCDs
  * Context: !in_interrupt()
@@ -330,7 +288,7 @@ int ohci_omap_host_enable(struct usb_bus
  * then invokes the start() method for the HCD associated with it
  * through the hotplug entry's driver_data.
  */
-int usb_hcd_omap_probe (const struct hc_driver *driver,
+static int usb_hcd_omap_probe (const struct hc_driver *driver,
 			  struct platform_device *pdev)
 {
 	int retval, irq;
@@ -338,12 +296,12 @@ int usb_hcd_omap_probe (const struct hc_
 	struct ohci_hcd *ohci;
 
 	if (pdev->num_resources != 2) {
-		printk(KERN_ERR "hcd probe: invalid num_resources: %i\n", 
+		printk(KERN_ERR "hcd probe: invalid num_resources: %i\n",
 		       pdev->num_resources);
 		return -ENODEV;
 	}
 
-	if (pdev->resource[0].flags != IORESOURCE_MEM 
+	if (pdev->resource[0].flags != IORESOURCE_MEM
 			|| pdev->resource[1].flags != IORESOURCE_IRQ) {
 		printk(KERN_ERR "hcd probe: invalid resource type\n");
 		return -ENODEV;
@@ -386,10 +344,6 @@ int usb_hcd_omap_probe (const struct hc_
 	host_initialized = 0;
 	host_enabled = 1;
 
-	retval = omap_start_hc(ohci, pdev);
-	if (retval < 0)
-		goto err2;
-
 	irq = platform_get_irq(pdev, 0);
 	if (irq < 0) {
 		retval = -ENXIO;
@@ -397,7 +351,7 @@ int usb_hcd_omap_probe (const struct hc_
 	}
 	retval = usb_add_hcd(hcd, irq, SA_INTERRUPT);
 	if (retval)
-		goto err3;
+		goto err2;
 
 	host_initialized = 1;
 
@@ -405,8 +359,6 @@ int usb_hcd_omap_probe (const struct hc_
 		omap_ohci_clock_power(0);
 
 	return 0;
-err3:
-	omap_stop_hc(pdev);
 err2:
 	release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
 err1:
@@ -428,14 +380,19 @@ err0:
  * Reverses the effect of usb_hcd_omap_probe(), first invoking
  * the HCD's stop() method.  It is always called from a thread
  * context, normally "rmmod", "apmd", or something similar.
- *
  */
-void usb_hcd_omap_remove (struct usb_hcd *hcd, struct platform_device *pdev)
+static inline void
+usb_hcd_omap_remove (struct usb_hcd *hcd, struct platform_device *pdev)
 {
+	struct ohci_hcd		*ohci = hcd_to_ohci (hcd);
+
 	usb_remove_hcd(hcd);
+	if (ohci->transceiver) {
+		(void) otg_set_host(ohci->transceiver, 0);
+		put_device(ohci->transceiver->dev);
+	}
 	if (machine_is_omap_osk())
 		omap_free_gpio(9);
-	omap_stop_hc(pdev);
 	release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
 	usb_put_hcd(hcd);
 	clk_put(usb_dc_ck);
@@ -481,8 +438,9 @@ static const struct hc_driver ohci_omap_
 	/*
 	 * basic lifecycle operations
 	 */
+	.reset =		ohci_omap_init,
 	.start =		ohci_omap_start,
-	.stop =			ohci_stop,
+	.stop =			ohci_omap_stop,
 
 	/*
 	 * managing i/o requests and associated device resources
@@ -519,13 +477,8 @@ static int ohci_hcd_omap_drv_probe(struc
 static int ohci_hcd_omap_drv_remove(struct platform_device *dev)
 {
 	struct usb_hcd		*hcd = platform_get_drvdata(dev);
-	struct ohci_hcd		*ohci = hcd_to_ohci (hcd);
 
 	usb_hcd_omap_remove(hcd, dev);
-	if (ohci->transceiver) {
-		(void) otg_set_host(ohci->transceiver, 0);
-		put_device(ohci->transceiver->dev);
-	}
 	platform_set_drvdata(dev, NULL);
 
 	return 0;
author
#10 lore raw

Re: Undefined usb_disconnect

Quoted 11 lines · David Brownell
Quoted 5 lines · Dirk Behme

Hi,

with recent git I still get

WARNING: "usb_disconnect" [drivers/usb/host/ohci-hcd.ko] undefined!

Try the attached patch instead ... it fixes some other glitches in the OMAP bus glue, as well as those.

Okay, hanks for the patch! I think we should apply it until

http://linux.omap.com/pipermail/linux-omap-open-source/2006-May/007071.html

is reworked and ready for inclusion.

Thanks

Dirk

#12 lore raw

Re: Undefined usb_disconnect

In reply to David Brownell
Quoted 19 lines · David Brownell
Quoted 6 lines · Dirk Behme

Hi,

with recent git I still get

WARNING: "usb_disconnect" [drivers/usb/host/ohci-hcd.ko] undefined!

Try the attached patch instead ... it fixes some other glitches in the OMAP bus glue, as well as those.

- Dave

Various fixes for the OHCI OMAP glue:

Quoted 7 lines

- Properly use the usbcore HCD lifecycle entry points

- Remove calls to non-exported usbcore routines.

- Stop inappropriate export of some bus glue calls

Plus remove some extra whitespace.

<snip>

I'll push this today slightly updated. Sorry, I should have pushed this earlier.

Dave, I assume you will eventually send this upstream through your USB channels so I did not tag this as a ARM: OMAP: patch.

Regards,

Tony