Re: [PATCH] DM365EVM: Fix up PHY Clocksource to enable USB Host on DM365EVM

2010-06-14 Thread Raffaele Recalcati
2010/6/14 Kieran Bingham 

> Hi Raffaele,
>
> I'm afraid I'm only using the USB in Host Mode - I have not looked at
> anything in gadget mode.
>
> Have you tried using the Arago Tree yet ?
> --
> Regards
> Kieran


I made a test with Arago tree and evaluation board with usb slave and worked
with ubuntu host.
Now I moved to Kevin Hilman tree and I hope to fix all bugs there.

Thx for your reply!
Raffaele
___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


Rif: RE: [PATCH 14/14] davinci: video: davincifb Parallel RBG LCD management

2010-06-14 Thread davide . bonfanti
Hi,we are working on the Kevin Hilman 2.6.34 kernel version.This is the driver we found over there and we had to drive a parallel RGB LCD which was not supported.We understood we had to work on this branch (see for instance: http://linux.davincidsp.com/pipermail/davinci-linux-open-source/2010-June/019137.html).For what concerns Arago overlay development, we are on master branch on commit 87c7685f95309bf5d381ff6b9d3f182601815c99and kernel is 2.6.31.Can you please give us informations about the development of TI India about Arago fb and v4l2 drivers.Where can we find a git repository?When it will be integrated in opensource (Kevin Hilman) git tree?Do you also know something about video codec support  (DVSDK) stable availability for kernel 2.6.34?Thank youDavide Bonfanti & Raffaele RecalcatiTel.: +39 031-653357Indirizzo: via Manara, 4 22036 - Erba (CO)E-mail: davide.bonfa...@bticino.itWeb: www.bticino.itBticinoLegrandZucchiniCablofilOrtronicsConsider the environmentPlease don't print this e-mail unless you really need to.-davinci-linux-open-source-bounces+davide.bonfanti=bticino...@linux.davincidsp.com ha scritto: -Per: Raffaele Recalcati , "davinci-linux-open-source@linux.davincidsp.com" Da: "Karicheri, Muralidharan" Inviato da: davinci-linux-open-source-bounces+davide.bonfanti=bticino...@linux.davincidsp.comData: 14/06/2010 18.38Oggetto: RE: [PATCH 14/14] davinci: video: davincifb Parallel RBG LCD	managementHi,Why are you trying to fix this old fb driver when TI India is alreadyworking on to up port the latest Arago fb and v4l2 drivers?davincifb driver is not part of the kernel.org tree and is availableonly in davinci tree and is an obsolete driver. Murali KaricheriSoftware Design EngineerTexas Instruments Inc.Germantown, MD 20874phone: 301-407-9583email: m-kariche...@ti.com>-Original Message->From: davinci-linux-open-source-boun...@linux.davincidsp.com>[mailto:davinci-linux-open-source-boun...@linux.davincidsp.com] On Behalf>Of Raffaele Recalcati>Sent: Friday, June 11, 2010 6:20 AM>To: davinci-linux-open-source@linux.davincidsp.com>Subject: [PATCH 14/14] davinci: video: davincifb Parallel RBG LCD>management>>From: Davide Bonfanti >>Signed-off-by: Davide Bonfanti >---> drivers/video/davincifb.c |  167>+> include/video/davincifb.h |   17 -> 2 files changed, 165 insertions(+), 19 deletions(-)>>diff --git a/drivers/video/davincifb.c b/drivers/video/davincifb.c>index 2a7b2c9..24d1424 100644>--- a/drivers/video/davincifb.c>+++ b/drivers/video/davincifb.c>@@ -29,12 +29,15 @@> #include > #include >>+#include > #include > #include >> #include > #include >>+#include >+#include > #define MODULE_NAME "davincifb">> /* Output Format Selection  */>@@ -286,6 +289,10 @@ static irqreturn_t davincifb_isr(int irq, void *arg)> 					 dm->vid1->info.fix.line_length);> 			dm->vid1->sdram_address = 0;> 		}>+		if (dm->osd0->info.var.vmode == FB_VMODE_NONINTERLACED) {>+			++dm->vsync_cnt;>+			wake_up_interruptible(&dm->vsync_wait);>+		}> 		return IRQ_HANDLED;> 	} else {> 		++dm->vsync_cnt;>@@ -631,21 +638,29 @@ static void set_sdram_params(char *id, u32 addr, u32>line_length)> 	/* The parameters to be written to the registers should be in> 	 * multiple of 32 bytes> 	 */>-	addr = addr;		/* div by 32 */>-	line_length = line_length / 32;>+	addr = (addr - DAVINCI_DDR_BASE) >> 5;		/* div by 32 */>+	line_length = line_length >> 5;>> 	if (is_win(id, VID0)) {>-		dispc_reg_out(OSD_VIDWIN0ADR, addr);>-		dispc_reg_out(OSD_VIDWIN0OFST, line_length);>+		dispc_reg_out(OSD_VIDWIN0ADR, addr & 0x);>+		dispc_reg_merge(OSD_VIDWINADH, (addr & 0x7F) >> 16, 0x7F);>+		dispc_reg_out(OSD_VIDWIN0OFST, line_length | 0x1000);>+			/* From docs it's not clear why bit12 is needed */> 	} else if (is_win(id, VID1)) {>-		dispc_reg_out(OSD_VIDWIN1ADR, addr);>-		dispc_reg_out(OSD_VIDWIN1OFST, line_length);>+		dispc_reg_out(OSD_VIDWIN1ADR, addr & 0x);>+		dispc_reg_merge(OSD_VIDWINADH, (addr & 0x7F) >> 8, 0x7F00);>+		dispc_reg_out(OSD_VIDWIN1OFST, line_length | 0x1000);>+			/* From docs it's not clear why bit12 is needed */> 	} else if (is_win(id, OSD0)) {>-		dispc_reg_out(OSD_OSDWIN0ADR, addr);>-		dispc_reg_out(OSD_OSDWIN0OFST, line_length);>+		dispc_reg_out(OSD_OSDWIN0ADR, addr & 0x);>+		dispc_reg_out(OSD_OSDWIN0OFST, line_length | 0x1000);>+		dispc_reg_merge(OSD_OSDWINADH, (addr & 0x7F) >> 16, 0x7F);>+			/* From docs it's not clear why bit12 is needed */> 	} else if (is_win(id, OSD1)) {>-		dispc_reg_out(OSD_OSDWIN1ADR, addr);>-		dispc_reg_out(OSD_OSDWIN1OFST, line_length);>+		dispc_reg_out(OSD_OSDWIN1ADR, addr & 0x);>+		dispc_reg_merge

RE: [PATCH 0/3] davinci: spi: replace existing SPI driver

2010-06-14 Thread Brian Niebuhr
> Can you please post this series to SPI development list
> (spi-devel-gene...@lists.sourceforge.net) CCing the maintainers
> David Brownell and Grant Likely?

Done
 
> > INTRODUCTION
> >
> > I have been working on a custom OMAP-L138 board that has 
> multiple spi
> > devices (seven) on one controller.  These devices have a 
> wide range of
> > transfer parameters (speed, phase, polarity, internal and gpio chip
> > selects).  During my testing I found multiple errors in the 
> davinci spi
> > driver as a result of this complex setup.  The primary issues were:
> >
> > 1. There is a race condition due to the SPIBUF read 
> busy-waits for slow
> > devices
> > 2. I found some DMA transfer length errors under some conditions
> > 3. The chip select code caused extra byte transfers (with no chip
> > select active) due to writes to SPIDAT1
> > 4. Several issues prevented using multiple SPI devices, especially
> > the DMA code, as disucussed previously on the davinci list.
> 
> This should be replicated in patch description for patch 1/3 
> as a record
> of why the original driver was removed.

Will do.
 
> > The fixes to these problems were not simple.  I ended up 
> making fairly
> > large changes to the driver, and those changes are 
> contained in these
> > patches.  The full list of changes follows.
> >
> > CHANGE LIST
> >
> > 1. davinci_spi_chipelect() now performs both activation and 
> deactivation
> > of chip selects.  This lets spi_bitbang fully control chip
> > select activation, as intended by the SPI API.
> > 2. Chip select activation does not cause extra writes to the SPI bus
> > 3. Chip select activation does not use SPIDEF for control.  
> This change
> > will also allow for implementation of inverted (active high)
> > chip selects in the future.
> > 4. Added back gpio chip select capability from the old driver
> > 5. Fixed prescale calculation for non-integer fractions of spi clock
> > 6. Allow specification of SPI transfer parameters on a per-device
> > (instead of per-controller) basis
> > 7. Allow specification of polled, interrupt-based, or DMA 
> operation on
> > a per-device basis
> > 8. Allow DMA with when more than one device is connected
> > 9. Combined pio and dma txrx_bufs functions into one since 
> they share
> > large parts of their functionality, and to simplify 
> item (8).
> > 10. Use only SPIFMT0 to allow more than 4 devices
> >
> > TESTING
> >
> > I have tested the driver using a custom SPI stress test on my
> > OMAP-L138-based board with three devices connected.  I have tested
> > configurations with all three devices polled, all three 
> interrupt-based,
> > all three DMA, and a mixture.
> 
> This should be replicated in patch description for patch 2/3 
> as a record
> of what the new driver provides.

Will do.

> > I have compiled with the davinci_all_defconfig, but I don't 
> have EVMs
> > for the other davinci platforms to test with.
> 
> DM6467, DM365 and OMAP-L137 EVMs have SPI devices as well. We can help
> test on at least some of those. No need to wait for test 
> results before
> posting to SPI list though, it can happen in parallel to the review.

Ok, thanks.

> > SUMMARY
> >
> > This patch solves a lot of issues that should save a lot of 
> people time
> > down the road.  Since I posted the original patch I have 
> had at least 5
> > people contact me personally to get help applying the patch 
> because SPI
> > was broken on their boards.  I have heard back from at 
> least 2 that the
> > original patch worked for them.
> 
> You can include an Acked-by: from those developers. This will 
> help build
> the case for the new driver.

I'll see if I still have the emails.

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


RE: [PATCH 3/3] davinci: spi: modify platform data for updated SPIdriver

2010-06-14 Thread Brian Niebuhr
> > diff --git a/arch/arm/mach-davinci/dm365.c 
> b/arch/arm/mach-davinci/dm365.c
> > index a146849..0bd9f93 100644
> > --- a/arch/arm/mach-davinci/dm365.c
> > +++ b/arch/arm/mach-davinci/dm365.c
> > @@ -625,12 +625,6 @@ static u64 dm365_spi0_dma_mask = 
> DMA_BIT_MASK(32);
> >  static struct davinci_spi_platform_data dm365_spi0_pdata = {
> > .version= SPI_VERSION_1,
> > .num_chipselect = 2,
> > -   .clk_internal   = 1,
> > -   .cs_hold= 1,
> > -   .intr_level = 0,
> > -   .poll_mode  = 1,/* 0 -> interrupt mode 1-> 
> polling mode */
> > -   .c2tdelay   = 0,
> > -   .t2cdelay   = 0,
> >  };
> >  
> >  static struct resource dm365_spi0_resources[] = {
> 
> This patch does not contain modifications to resource 
> structure to 'or' the
> IORESOURCE_DMA_RX_CHAN, IORESOURCE_DMA_TX_CHAN and 
> IORESOURCE_DMA_EVENT_Q
> flags with IORESOURCE_DMA. I don't think without this 
> modification driver
> will work.

You are right - my mistake.  I will include that in the next version.  I
assume you added these flags when you were testing?

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


RE: [PATCH 2/3] davinci: spi: add replacement SPI driver

2010-06-14 Thread Brian Niebuhr
> > diff --git a/arch/arm/mach-davinci/include/mach/spi.h 
> b/arch/arm/mach-davinci/include/mach/spi.h
> > index 910efbf..10c39d8 100644
> > --- a/arch/arm/mach-davinci/include/mach/spi.h
> > +++ b/arch/arm/mach-davinci/include/mach/spi.h
> > @@ -19,26 +19,39 @@
> >  #ifndef __ARCH_ARM_DAVINCI_SPI_H
> >  #define __ARCH_ARM_DAVINCI_SPI_H
> >  
> > +#define SPI_INTERN_CS  0xFF
> > +
> > +/* resource flags for IORESOURCE_DMA resources */
> > +#define IORESOURCE_DMA_RX_CHAN 0x01
> > +#define IORESOURCE_DMA_TX_CHAN 0x02
> > +#define IORESOURCE_DMA_EVENT_Q 0x04
> > +
> >  enum {
> > -   SPI_VERSION_1, /* For DM355/DM365/DM6467 */
> > +   SPI_VERSION_1, /* For DM355/DM365/DM6467*/
> 
> Above line in the patch is not required.

Right.
 
> > +
> > +   davinci_spi->version = pdata->version;
> > +
> > +   davinci_spi->bitbang.flags = SPI_NO_CS | SPI_LSB_FIRST 
> | SPI_LOOP;
> > +   if (davinci_spi->version == SPI_VERSION_2)
> > +   davinci_spi->bitbang.flags |= SPI_READY;
> > +
> > +   dma_rx_chan = davinci_spi_get_dma_by_flag(pdev, 
> IORESOURCE_DMA_RX_CHAN);
> > +   dma_tx_chan = davinci_spi_get_dma_by_flag(pdev, 
> IORESOURCE_DMA_TX_CHAN);
> > +   dma_eventq  = davinci_spi_get_dma_by_flag(pdev, 
> IORESOURCE_DMA_EVENT_Q);
> > +   davinci_spi->dma_channels.dma_rx_channel = -1;
> > +   davinci_spi->dma_channels.dma_rx_sync_dev = dma_rx_chan;
> > +   davinci_spi->dma_channels.dma_tx_channel = -1;
> > +   davinci_spi->dma_channels.dma_tx_sync_dev = dma_tx_chan;
> > +   davinci_spi->dma_channels.dummy_param_slot = -1;
> > +   davinci_spi->dma_channels.eventq = dma_eventq;
> 
> Can the above configurations be done only in case if DMA mode?

DMA mode is selected on a per-device basis.  This initialization is for
the controller, so it needs to be prepared to handle DMA if a device
uses it.  If DMA is not required, no DMA resource need be assigned to
the controller.

> Some way of informing the user about the mode in which the driver is
> working is desirable.

Yes, I'll try to come up with something.

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


RE: [PATCH 0/3] davinci: spi: replace existing SPI driver

2010-06-14 Thread Brian Niebuhr
> > I have compiled with the davinci_all_defconfig, but I don't 
> have EVMs
> > for the other davinci platforms to test with.
> > 
> 
> I was testing this series on OMAP-L137, OMAP-L138 and DM365 EVMs and I
> found that on all these EVMS, Interrupt mode has problems. 
> Driver works
> fine in DMA and POLL modes. Some problems which I had 
> observed with the
> old driver are gone now.

Do you have any idea what errors you're seeing in interrupt mode?  I
went and retested interrupt mode with several devices on my custom board
and it still appeared to be working fine.  It may be an interaction with
code outside the driver because I'm running the identical driver code
but I'm not running the latest kernel from the davinci git repository.
I'm trying to figure out if I can get my DA850 EVM back into a state
where I can debug this.  Thanks for any hints you can give!  

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


Re: [PATCH] DM365EVM: Fix up PHY Clocksource to enable USB Host on DM365EVM

2010-06-14 Thread Kieran Bingham

Hi Raffaele,

I'm afraid I'm only using the USB in Host Mode - I have not looked at 
anything in gadget mode.


Have you tried using the Arago Tree yet ?
--
Regards
Kieran

Raffaele Recalcati wrote:

Hi Kieran,

2010/6/8 Kieran Bingham 

  

From: Kieran Bingham 

This patch was created by pulling in the code required from the Arago Tree.
Checked by running on a Spectrum Digital DM365EVM Revision C.

Signed-off-by: Kieran Bingham 
---
 arch/arm/mach-davinci/board-dm365-evm.c |   13 +
 drivers/usb/musb/davinci.c  |   12 
 drivers/usb/musb/davinci.h  |4 
 3 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-davinci/board-dm365-evm.c
b/arch/arm/mach-davinci/board-dm365-evm.c
index fdb073e..c4a05fc 100644
--- a/arch/arm/mach-davinci/board-dm365-evm.c
+++ b/arch/arm/mach-davinci/board-dm365-evm.c
@@ -18,6 +18,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -39,6 +40,7 @@
 #include 
 #include 
 #include 
+#include 

 #include 

@@ -590,6 +592,15 @@ static struct spi_board_info dm365_evm_spi_info[]
__initconst = {
   },
 };

+static void dm365evm_usb_configure(void)
+{
+   davinci_cfg_reg(DM365_GPIO33);
+   gpio_request(33, "usb");
+   gpio_direction_output(33, 1);
+   davinci_setup_usb(500, 8);
+}
+
+
 static __init void dm365_evm_init(void)
 {
   evm_init_i2c();
@@ -607,6 +618,8 @@ static __init void dm365_evm_init(void)
   dm365_init_rtc();
   dm365_init_ks(&dm365evm_ks_data);

+   dm365evm_usb_configure();
+
   dm365_init_spi0(BIT(0), dm365_evm_spi_info,
   ARRAY_SIZE(dm365_evm_spi_info));
 }
diff --git a/drivers/usb/musb/davinci.c b/drivers/usb/musb/davinci.c
index ce2e16f..3736792 100644
--- a/drivers/usb/musb/davinci.c
+++ b/drivers/usb/musb/davinci.c
@@ -64,6 +64,16 @@ static inline void phy_on(void)
   /* power everything up; start the on-chip PHY and its PLL */
   phy_ctrl &= ~(USBPHY_OSCPDWN | USBPHY_OTGPDWN | USBPHY_PHYPDWN);
   phy_ctrl |= USBPHY_SESNDEN | USBPHY_VBDTCTEN | USBPHY_PHYPLLON;
+
+   if (cpu_is_davinci_dm365()) {
+   /*
+* DM365 PHYCLKFREQ field [15:12] is set to 2
+* to get clock from 24MHz crystal
+*/
+   phy_ctrl |= USBPHY_CLKFREQ_24MHZ;
+   /*phy_ctrl &= ~USBPHY_PHYPDWN;*/
+   }
+
   __raw_writel(phy_ctrl, USB_PHY_CTRL);

   /* wait for PLL to lock before proceeding */
@@ -188,6 +198,8 @@ static void davinci_source_power(struct musb *musb, int
is_on, int immediate)
   if (immediate)
   vbus_state = is_on;
 #endif
+   if (cpu_is_davinci_dm365())
+   gpio_set_value(33, is_on);
 }

 static void davinci_set_vbus(struct musb *musb, int is_on)
diff --git a/drivers/usb/musb/davinci.h b/drivers/usb/musb/davinci.h
index 046c844..0577ec6 100644
--- a/drivers/usb/musb/davinci.h
+++ b/drivers/usb/musb/davinci.h
@@ -16,6 +16,10 @@

 /* Integrated highspeed/otg PHY */
 #define USBPHY_CTL_PADDR   (DAVINCI_SYSTEM_MODULE_BASE + 0x34)
+#define USBPHY_NDATAPOLBIT(18)
+#define USBPHY_SESSION_VBUSBIT(17)
+#define USBPHY_PERI_USBID  BIT(16)
+#define USBPHY_CLKFREQ_24MHZ   BIT(13)
 #define USBPHY_DATAPOL BIT(11) /* (dm355) switch D+/D- */
 #define USBPHY_PHYCLKGDBIT(8)
 #define USBPHY_SESNDEN BIT(7)  /* v(sess_end) comparator */
--
1.6.2.1

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source





I have applied and tested your patch.
On the target:
modprobe g_cdc
or
modprobe g_ether
ifconfig usb0 128.16.0.1 netmask 255.255.224.0

and on the ubuntu host:
ifconfig usb0 128.16.0.2 netmask 255.255.224.0

Instead the win-xp host can't do get_descriptor.
I've tested also with beagle sniffer.

With win-xp host I get only:
and the win-xp thinks to see null vid and pids.
=
musb_hdrc: version 6.0, pio, peripheral, debug=0
musb_hdrc: ConfigData=0x06 (UTMI-8, dyn FIFOs, SoftConn)
musb_hdrc: MHDRC RTL version 1.500
musb_hdrc: setup fifo_mode 2
musb_hdrc: 7/9 max ep, 2624/4096 memory
musb_hdrc musb_hdrc: USB Peripheral mode controller at fec64000 using PIO,
IRQ 12
g_ether gadget: using random self ethernet address
g_ether gadget: using random host ethernet address
usb0: MAC 82:aa:9e:2a:87:e1
usb0: HOST MAC 6a:eb:1b:a6:67:69
g_ether gadget: Ethernet Gadget, version: Memorial Day 2008
g_ether gadget: g_ether ready
musb_stage0_irq 384: <== Power=f0, DevCtl=99, int_usb=0x4
musb_stage0_irq 767: BUS RESET as b_idle
musb_g_reset 2013: <== B-Device addr=0 driver 'g_ether'
musb_stage0_irq 384: <== Power=f0, DevCtl=99, int_usb=0x4
musb_stage0_irq 767: BUS RESET as b_peripheral
musb_g_reset 2013: <== B-Device addr=0 driver 'g_ether'
musb_g_disconnect 1957: devctl 99
musb_stage0

RE: [PATCH 14/14] davinci: video: davincifb Parallel RBG LCD management

2010-06-14 Thread Karicheri, Muralidharan
Hi,

Why are you trying to fix this old fb driver when TI India is already
working on to up port the latest Arago fb and v4l2 drivers?

davincifb driver is not part of the kernel.org tree and is available
only in davinci tree and is an obsolete driver. 

Murali Karicheri
Software Design Engineer
Texas Instruments Inc.
Germantown, MD 20874
phone: 301-407-9583
email: m-kariche...@ti.com

>-Original Message-
>From: davinci-linux-open-source-boun...@linux.davincidsp.com
>[mailto:davinci-linux-open-source-boun...@linux.davincidsp.com] On Behalf
>Of Raffaele Recalcati
>Sent: Friday, June 11, 2010 6:20 AM
>To: davinci-linux-open-source@linux.davincidsp.com
>Subject: [PATCH 14/14] davinci: video: davincifb Parallel RBG LCD
>management
>
>From: Davide Bonfanti 
>
>Signed-off-by: Davide Bonfanti 
>---
> drivers/video/davincifb.c |  167
>+
> include/video/davincifb.h |   17 -
> 2 files changed, 165 insertions(+), 19 deletions(-)
>
>diff --git a/drivers/video/davincifb.c b/drivers/video/davincifb.c
>index 2a7b2c9..24d1424 100644
>--- a/drivers/video/davincifb.c
>+++ b/drivers/video/davincifb.c
>@@ -29,12 +29,15 @@
> #include 
> #include 
>
>+#include 
> #include 
> #include 
>
> #include 
> #include 
>
>+#include 
>+#include 
> #define MODULE_NAME "davincifb"
>
> /* Output Format Selection  */
>@@ -286,6 +289,10 @@ static irqreturn_t davincifb_isr(int irq, void *arg)
>dm->vid1->info.fix.line_length);
>   dm->vid1->sdram_address = 0;
>   }
>+  if (dm->osd0->info.var.vmode == FB_VMODE_NONINTERLACED) {
>+  ++dm->vsync_cnt;
>+  wake_up_interruptible(&dm->vsync_wait);
>+  }
>   return IRQ_HANDLED;
>   } else {
>   ++dm->vsync_cnt;
>@@ -631,21 +638,29 @@ static void set_sdram_params(char *id, u32 addr, u32
>line_length)
>   /* The parameters to be written to the registers should be in
>* multiple of 32 bytes
>*/
>-  addr = addr;/* div by 32 */
>-  line_length = line_length / 32;
>+  addr = (addr - DAVINCI_DDR_BASE) >> 5;  /* div by 32 */
>+  line_length = line_length >> 5;
>
>   if (is_win(id, VID0)) {
>-  dispc_reg_out(OSD_VIDWIN0ADR, addr);
>-  dispc_reg_out(OSD_VIDWIN0OFST, line_length);
>+  dispc_reg_out(OSD_VIDWIN0ADR, addr & 0x);
>+  dispc_reg_merge(OSD_VIDWINADH, (addr & 0x7F) >> 16, 0x7F);
>+  dispc_reg_out(OSD_VIDWIN0OFST, line_length | 0x1000);
>+  /* From docs it's not clear why bit12 is needed */
>   } else if (is_win(id, VID1)) {
>-  dispc_reg_out(OSD_VIDWIN1ADR, addr);
>-  dispc_reg_out(OSD_VIDWIN1OFST, line_length);
>+  dispc_reg_out(OSD_VIDWIN1ADR, addr & 0x);
>+  dispc_reg_merge(OSD_VIDWINADH, (addr & 0x7F) >> 8, 0x7F00);
>+  dispc_reg_out(OSD_VIDWIN1OFST, line_length | 0x1000);
>+  /* From docs it's not clear why bit12 is needed */
>   } else if (is_win(id, OSD0)) {
>-  dispc_reg_out(OSD_OSDWIN0ADR, addr);
>-  dispc_reg_out(OSD_OSDWIN0OFST, line_length);
>+  dispc_reg_out(OSD_OSDWIN0ADR, addr & 0x);
>+  dispc_reg_out(OSD_OSDWIN0OFST, line_length | 0x1000);
>+  dispc_reg_merge(OSD_OSDWINADH, (addr & 0x7F) >> 16, 0x7F);
>+  /* From docs it's not clear why bit12 is needed */
>   } else if (is_win(id, OSD1)) {
>-  dispc_reg_out(OSD_OSDWIN1ADR, addr);
>-  dispc_reg_out(OSD_OSDWIN1OFST, line_length);
>+  dispc_reg_out(OSD_OSDWIN1ADR, addr & 0x);
>+  dispc_reg_merge(OSD_OSDWINADH, (addr & 0x7F) >> 8, 0x7F00);
>+  dispc_reg_out(OSD_OSDWIN1OFST, line_length | 0x1000);
>+  /* From docs it's not clear why bit12 is needed */
>   }
> }
>
>@@ -980,14 +995,12 @@ int __init davincifb_setup(char *options)
>   if (!strncmp(this_opt, "output=", 7)) {
>   if (!strncmp(this_opt + 7, "lcd", 3)) {
>   dmparams.output = LCD;
>-  dmparams.format = 0;
>+  dmparams.format = RGB;
>   } else if (!strncmp(this_opt + 7, "ntsc", 4))
>   dmparams.output = NTSC;
>   else if (!strncmp(this_opt + 7, "pal", 3))
>   dmparams.output = PAL;
>   } else if (!strncmp(this_opt, "format=", 7)) {
>-  if (dmparams.output == LCD)
>-  continue;
>   if (!strncmp(this_opt + 7, "composite", 9))
>   dmparams.format = COMPOSITE;
>   else if (!strncmp(this_opt + 7, "s-video", 7))
>@@ -1060,7

Re: [PATCH] DM365EVM: Fix up PHY Clocksource to enable USB Host on DM365EVM

2010-06-14 Thread Raffaele Recalcati
Hi Kieran,

2010/6/8 Kieran Bingham 

> From: Kieran Bingham 
>
> This patch was created by pulling in the code required from the Arago Tree.
> Checked by running on a Spectrum Digital DM365EVM Revision C.
>
> Signed-off-by: Kieran Bingham 
> ---
>  arch/arm/mach-davinci/board-dm365-evm.c |   13 +
>  drivers/usb/musb/davinci.c  |   12 
>  drivers/usb/musb/davinci.h  |4 
>  3 files changed, 29 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-davinci/board-dm365-evm.c
> b/arch/arm/mach-davinci/board-dm365-evm.c
> index fdb073e..c4a05fc 100644
> --- a/arch/arm/mach-davinci/board-dm365-evm.c
> +++ b/arch/arm/mach-davinci/board-dm365-evm.c
> @@ -18,6 +18,7 @@
>  #include 
>  #include 
>  #include 
> +#include 
>  #include 
>  #include 
>  #include 
> @@ -39,6 +40,7 @@
>  #include 
>  #include 
>  #include 
> +#include 
>
>  #include 
>
> @@ -590,6 +592,15 @@ static struct spi_board_info dm365_evm_spi_info[]
> __initconst = {
>},
>  };
>
> +static void dm365evm_usb_configure(void)
> +{
> +   davinci_cfg_reg(DM365_GPIO33);
> +   gpio_request(33, "usb");
> +   gpio_direction_output(33, 1);
> +   davinci_setup_usb(500, 8);
> +}
> +
> +
>  static __init void dm365_evm_init(void)
>  {
>evm_init_i2c();
> @@ -607,6 +618,8 @@ static __init void dm365_evm_init(void)
>dm365_init_rtc();
>dm365_init_ks(&dm365evm_ks_data);
>
> +   dm365evm_usb_configure();
> +
>dm365_init_spi0(BIT(0), dm365_evm_spi_info,
>ARRAY_SIZE(dm365_evm_spi_info));
>  }
> diff --git a/drivers/usb/musb/davinci.c b/drivers/usb/musb/davinci.c
> index ce2e16f..3736792 100644
> --- a/drivers/usb/musb/davinci.c
> +++ b/drivers/usb/musb/davinci.c
> @@ -64,6 +64,16 @@ static inline void phy_on(void)
>/* power everything up; start the on-chip PHY and its PLL */
>phy_ctrl &= ~(USBPHY_OSCPDWN | USBPHY_OTGPDWN | USBPHY_PHYPDWN);
>phy_ctrl |= USBPHY_SESNDEN | USBPHY_VBDTCTEN | USBPHY_PHYPLLON;
> +
> +   if (cpu_is_davinci_dm365()) {
> +   /*
> +* DM365 PHYCLKFREQ field [15:12] is set to 2
> +* to get clock from 24MHz crystal
> +*/
> +   phy_ctrl |= USBPHY_CLKFREQ_24MHZ;
> +   /*phy_ctrl &= ~USBPHY_PHYPDWN;*/
> +   }
> +
>__raw_writel(phy_ctrl, USB_PHY_CTRL);
>
>/* wait for PLL to lock before proceeding */
> @@ -188,6 +198,8 @@ static void davinci_source_power(struct musb *musb, int
> is_on, int immediate)
>if (immediate)
>vbus_state = is_on;
>  #endif
> +   if (cpu_is_davinci_dm365())
> +   gpio_set_value(33, is_on);
>  }
>
>  static void davinci_set_vbus(struct musb *musb, int is_on)
> diff --git a/drivers/usb/musb/davinci.h b/drivers/usb/musb/davinci.h
> index 046c844..0577ec6 100644
> --- a/drivers/usb/musb/davinci.h
> +++ b/drivers/usb/musb/davinci.h
> @@ -16,6 +16,10 @@
>
>  /* Integrated highspeed/otg PHY */
>  #define USBPHY_CTL_PADDR   (DAVINCI_SYSTEM_MODULE_BASE + 0x34)
> +#define USBPHY_NDATAPOLBIT(18)
> +#define USBPHY_SESSION_VBUSBIT(17)
> +#define USBPHY_PERI_USBID  BIT(16)
> +#define USBPHY_CLKFREQ_24MHZ   BIT(13)
>  #define USBPHY_DATAPOL BIT(11) /* (dm355) switch D+/D- */
>  #define USBPHY_PHYCLKGDBIT(8)
>  #define USBPHY_SESNDEN BIT(7)  /* v(sess_end) comparator */
> --
> 1.6.2.1
>
> ___
> Davinci-linux-open-source mailing list
> Davinci-linux-open-source@linux.davincidsp.com
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
>


I have applied and tested your patch.
On the target:
modprobe g_cdc
or
modprobe g_ether
ifconfig usb0 128.16.0.1 netmask 255.255.224.0

and on the ubuntu host:
ifconfig usb0 128.16.0.2 netmask 255.255.224.0

Instead the win-xp host can't do get_descriptor.
I've tested also with beagle sniffer.

With win-xp host I get only:
and the win-xp thinks to see null vid and pids.
=
musb_hdrc: version 6.0, pio, peripheral, debug=0
musb_hdrc: ConfigData=0x06 (UTMI-8, dyn FIFOs, SoftConn)
musb_hdrc: MHDRC RTL version 1.500
musb_hdrc: setup fifo_mode 2
musb_hdrc: 7/9 max ep, 2624/4096 memory
musb_hdrc musb_hdrc: USB Peripheral mode controller at fec64000 using PIO,
IRQ 12
g_ether gadget: using random self ethernet address
g_ether gadget: using random host ethernet address
usb0: MAC 82:aa:9e:2a:87:e1
usb0: HOST MAC 6a:eb:1b:a6:67:69
g_ether gadget: Ethernet Gadget, version: Memorial Day 2008
g_ether gadget: g_ether ready
musb_stage0_irq 384: <== Power=f0, DevCtl=99, int_usb=0x4
musb_stage0_irq 767: BUS RESET as b_idle
musb_g_reset 2013: <== B-Device addr=0 driver 'g_ether'
musb_stage0_irq 384: <== Power=f0, DevCtl=99, int_usb=0x4
musb_stage0_irq 767: BUS RESET as b_peripheral
musb_g_reset 2013: <== B-Device addr=0 driver 'g_ether'
musb_g_disconnect 1957: devctl 99
musb_sta