Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/mips/ingenic - use the same parameter block as the ...
details: https://anonhg.NetBSD.org/src/rev/128a2c2a6608
branches: trunk
changeset: 335089:128a2c2a6608
user: macallan <macallan%NetBSD.org@localhost>
date: Thu Dec 25 05:13:49 2014 +0000
description:
- use the same parameter block as the linux driver, only with DMA disabled
- reset the chip before handing it to dwc2/
now it actually detects some devices
diffstat:
sys/arch/mips/ingenic/ingenic_dwctwo.c | 65 ++++++++++++++++++++-------------
1 files changed, 39 insertions(+), 26 deletions(-)
diffs (108 lines):
diff -r 15818f36721f -r 128a2c2a6608 sys/arch/mips/ingenic/ingenic_dwctwo.c
--- a/sys/arch/mips/ingenic/ingenic_dwctwo.c Thu Dec 25 05:10:50 2014 +0000
+++ b/sys/arch/mips/ingenic/ingenic_dwctwo.c Thu Dec 25 05:13:49 2014 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ingenic_dwctwo.c,v 1.3 2014/12/23 18:48:52 macallan Exp $ */
+/* $NetBSD: ingenic_dwctwo.c,v 1.4 2014/12/25 05:13:49 macallan Exp $ */
/*-
* Copyright (c) 2014 Michael Lorenz
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ingenic_dwctwo.c,v 1.3 2014/12/23 18:48:52 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ingenic_dwctwo.c,v 1.4 2014/12/25 05:13:49 macallan Exp $");
/*
* adapted from bcm2835_dwctwo.c
@@ -53,6 +53,8 @@
#include <dwc2/dwc2.h>
#include "dwc2_core.h"
+#include "opt_ingenic.h"
+
struct ingenic_dwc2_softc {
struct dwc2_softc sc_dwc2;
@@ -60,31 +62,31 @@
};
static struct dwc2_core_params ingenic_dwc2_params = {
- .otg_cap = 0, /* HNP/SRP capable */
- .otg_ver = 0, /* 1.3 */
- .dma_enable = 1,
+ .otg_cap = -1, /* HNP/SRP capable */
+ .otg_ver = -1, /* 1.3 */
+ .dma_enable = 0, /* for now */
.dma_desc_enable = 0,
- .speed = 0, /* High Speed */
- .enable_dynamic_fifo = 1,
- .en_multiple_tx_fifo = 1,
- .host_rx_fifo_size = 774, /* 774 DWORDs */
- .host_nperio_tx_fifo_size = 256, /* 256 DWORDs */
- .host_perio_tx_fifo_size = 512, /* 512 DWORDs */
- .max_transfer_size = 65535,
- .max_packet_count = 511,
- .host_channels = 8,
- .phy_type = 1, /* UTMI */
- .phy_utmi_width = 8, /* 8 bits */
- .phy_ulpi_ddr = 0, /* Single */
- .phy_ulpi_ext_vbus = 0,
- .i2c_enable = 0,
- .ulpi_fs_ls = 0,
- .host_support_fs_ls_low_power = 0,
- .host_ls_low_power_phy_clk = 0, /* 48 MHz */
- .ts_dline = 0,
- .reload_ctl = 0,
- .ahbcfg = 0x10,
- .uframe_sched = 1,
+ .speed = -1, /* High Speed */
+ .enable_dynamic_fifo = -1,
+ .en_multiple_tx_fifo = -1,
+ .host_rx_fifo_size = 1024, /* 1024 DWORDs */
+ .host_nperio_tx_fifo_size = 1024, /* 1024 DWORDs */
+ .host_perio_tx_fifo_size = 1024, /* 1024 DWORDs */
+ .max_transfer_size = -1,
+ .max_packet_count = -1,
+ .host_channels = -1,
+ .phy_type = -1, /* UTMI */
+ .phy_utmi_width = -1, /* 16 bits */
+ .phy_ulpi_ddr = -1, /* Single */
+ .phy_ulpi_ext_vbus = -1,
+ .i2c_enable = -1,
+ .ulpi_fs_ls = -1,
+ .host_support_fs_ls_low_power = -1,
+ .host_ls_low_power_phy_clk = -1, /* 48 MHz */
+ .ts_dline = -1,
+ .reload_ctl = -1,
+ .ahbcfg = -1,
+ .uframe_sched = 0,
};
static int ingenic_dwc2_match(device_t, struct cfdata *, void *);
@@ -152,13 +154,24 @@
reg &= ~PCR_CLK_M;
reg |= PCR_CLK_48;
reg |= PCR_WORD_I_F0;
+ reg |= PCR_WORD_I_F1;
writereg(JZ_USBPCR1, reg);
#ifdef INGENIC_DEBUG
printf("JZ_USBPCR1 %08x\n", reg);
+ printf("JZ_USBRDT %08x\n", readreg(JZ_USBRDT));
#endif
delay(10000);
+ reg = readreg(JZ_USBPCR);
+ reg |= PCR_POR;
+ writereg(JZ_USBPCR, reg);
+ delay(1000);
+ reg &= ~PCR_POR;
+ writereg(JZ_USBPCR, reg);
+
+ delay(10000);
+
sc->sc_ih = evbmips_intr_establish(21, dwc2_intr, &sc->sc_dwc2);
if (sc->sc_ih == NULL) {
Home |
Main Index |
Thread Index |
Old Index