Re: [PATCH] DM365EVM: Fix up PHY Clocksource to enable USB Host on DM365EVM
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
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
> 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
> > 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
> > 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
> > 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
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
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
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