Commit Graph

69 Commits

Author SHA1 Message Date
ian
13ce4e66a1 Add support for uarts other than the serial console in TI OMAP SoCs.
The TI uart hardware is ns16550-compatible, except that before it can
be used the clocks and power have to be enabled and a non-standard
mode control register has to be set to put the device in uart mode
(as opposed to irDa or other serial protocols).  This adds the extra
code in an extension to the standard ns8250 probe routine, and the
rest of the driver is just the standard ns8250 code.
2013-08-21 14:33:02 +00:00
ian
06b56d3bab Make the noop clock successfully do nothing, because doing nothing and
returning an error status (which the NULL method pointers caused) isn't
nearly as useful.
2013-08-21 04:49:58 +00:00
ian
7d7f7f1bb2 Define the uart clocks so that they can be en/disabled at runtime. 2013-08-21 04:20:17 +00:00
ian
d8b6d1ce61 Make the standard sdhci(4) driver work for the TI OMAP family SoCs.
The MMCHS hardware is pretty much a standard SDHCI v2.0 controller with a
couple quirks, which are now supported by sdhci(4) as of r254507.

This should work for all TI SoCs that use the MMCHS hardware, but it has
only been tested on AM335x right now, so this enables it on those platforms
but leaves the existing ti_mmchs driver in place for other OMAP variants
until they can be tested.

This initial incarnation lacks DMA support (coming soon).  Even without it
this improves performance pretty noticibly over the ti_mmchs driver,
primarily because it now does multiblock IO.
2013-08-20 12:33:35 +00:00
cognet
6c012d075a Let the platform calculate the timer frequency at runtime, and use that for
the omap4, instead of relying on the (wrong) value provided in the dts.
2013-08-05 20:14:56 +00:00
rpaulo
349cc93fd1 Initialisation routines for the mailbox, spinlock and PRU-ICSS clocks. 2013-07-31 05:52:03 +00:00
rpaulo
5033e61144 Improve a comment. 2013-07-09 02:50:05 +00:00
gonzo
af308476f5 Add IDs for TPS65217C and TPS65217D 2013-07-08 05:06:32 +00:00
gonzo
9d8d39dde6 - AM335x requires updated soft-reset logic too 2013-07-08 04:27:03 +00:00
gonzo
cf4fe991fa - Add USBSS driver for AM335x SoC. Driver is a wrapper around Mentors Graphic
USB OTG core.
2013-07-07 04:22:08 +00:00
rpaulo
3ff4188a7e Don't clear the SYSCONFIG register on boot.
This follows section 18.4.2.2 SD Soft Reset Flow in the TI AM335x Technical
Reference Manual and seems to fix the "ti_mmchs0: Error: current cmd NULL,
already done?" messages.
2013-07-06 04:18:34 +00:00
gonzo
9a2ff700a4 Add support for ePWM submodule of PWMSS
ePWM is controlled by sysctl nodes dev.am335x_pwm.N.period,
dev.am335x_pwm.N.dutyA and dev.am335x_pwm.N.dutyB that controls
PWM period and duty cycles for channels A and B respectively.

Period and duty cycle are measured in clock ticks. Default
clock frequency for AM335x PWM subsystem is 100MHz
2013-07-04 20:13:22 +00:00
gonzo
3079bcf3bb - Request non-cached memory for framebuffer
- Properly probe/initialize syscons
2013-06-27 00:33:08 +00:00
rpaulo
3572acf512 Print the 'setting internal ...' message only with bootverbose. 2013-06-26 02:56:54 +00:00
cognet
12ab9bba63 Increase the maximum KVM available on TI chips. Not sure why we suddenly need
that much, but that lets me boot with 1GB of RAM.
2013-06-09 22:51:11 +00:00
gonzo
8cfe669b84 AM335x LCD controller driver with syscons support
Limitations:
- Raster mode only
- 24 and 32 bpp only
2013-05-27 00:23:01 +00:00
gonzo
98a9c71340 Add PWM module driver for AM335x. Only eCAS subsystem is supported
Export function to configure eCAS submodule from another drivers.
It's used to control LCD panel backlight on AM335x EVM.
2013-05-27 00:13:27 +00:00
gonzo
ab2cef4760 Add SCM registers definitions for AM335x platform 2013-05-27 00:09:04 +00:00
gonzo
0f2f985909 Add clock definitions for LCD controller and PWM module 2013-05-27 00:06:24 +00:00
kientzle
8987b328e8 Back out r250768 until I can further investigate why it might
be causing problems with the BeagleBone Black boot.
2013-05-18 22:42:21 +00:00
kientzle
ab9815cece Label the mmc child after the parent. 2013-05-18 12:53:20 +00:00
gabor
301f6461b7 - Correct mispellings of word resource
Submitted by:	Christoph Mallon <christoph.mallon@gmx.de>
2013-04-17 11:47:32 +00:00
gonzo
0d9d3d4fa4 Properly clean "spurious interrupt" state
Suggested by: Ian Lepore
2013-04-06 03:31:28 +00:00
ian
b2acea1ddc Add a macro that gets the physical address of a memory mapped device
register from a bus space resource.

Note that this macro is just for ARM, and is intended to have a short
lifespan.  The DMA engines in some SoCs need the physical address of a
memory-mapped device register as one of the arguments for the transfer.
Several scattered ad-hoc solutions have been converted to use this macro,
which now also serves to mark the places where a more complete fix needs
to be applied (after that fix has been designed).
2013-03-17 03:04:43 +00:00
mav
6cf7cc6e4d MFcalloutng:
Switch eventtimers(9) from using struct bintime to sbintime_t.
Even before this not a single driver really supported full dynamic range of
struct bintime even in theory, not speaking about practical inexpediency.
This change legitimates the status quo and cleans up the code.
2013-02-28 13:46:03 +00:00
gonzo
5f76bacc85 Fix typo 2013-02-27 08:34:32 +00:00
gonzo
b39d0df4c9 - Initialize GPIO_OE register based on pinmux configuration
Although AM335x TRM states that GPIO_OE register is not used and just
reflects pads configuration in practice it does control pin behavior
and shoiuld be set in addition to pinmux setup
2013-02-27 08:32:34 +00:00
gonzo
97adaace52 Fix off-by-one error in sanity checks 2013-02-25 09:33:48 +00:00
gonzo
3d9e2fd8b2 - Fix off-by-one error when returning max pin number
- Fix GPIOGET for output pins. Requesting state for
    output pin is valid operation, get the state from
    TI_GPIO_DATAOUTX register
2013-02-25 08:04:47 +00:00
gonzo
cf0dd26a09 Fix copy-paste error in bus_space_unmap argument
While I'm at it - fix some style(9) issues

Submitted by:	Mikael Urankar
2013-02-15 21:24:21 +00:00
kientzle
c2bbbcc61a Another overhaul of the CPSW driver for BeagleBone
Major changes:
  * Finally tracked down the flow control setting that
    seems to have been causing TX stalls and watchdog timeouts
  * RX and TX paths now share a lot more code
  * TX interrupt is no longer used; we instead GC finished
    tx queue entries at the bottom of the start routine.
  * TX start now queues fragmented packets directly; it only
    invokes defrag() for occasional very fragmented packets.
  * "sysctl dev.cpsw" dumps controller statistics and queue counts
  * Host Error Interrupt will give extensive debugging information
    if the controller chokes on the queued data.
2013-02-03 01:08:01 +00:00
dmarion
99e65b0a86 Fix case for some signal names.
Submitted by:   Emmanuel Vadot <elbarto@megadrive.org>
2013-01-28 09:23:38 +00:00
dmarion
e343c11ec0 Filled in missing pads for AM335x / Beaglebone.
Submitted by:   Emmanuel Vadot <elbarto@megadrive.org>
2013-01-28 09:11:04 +00:00
kientzle
c824859f78 Clarify the error messages for unrecognized pins and muxtypes. 2013-01-19 17:12:23 +00:00
cognet
477199d02b Define IPI_IRQ_START and IPI_IRQ_END. 2013-01-09 01:54:17 +00:00
gonzo
87211dc2c9 - Identify more devices for OMAP4 SoC (up to OMAP4470)
- Whitespace fixes
2013-01-07 23:30:53 +00:00
kientzle
9b6c7883bd Shuffle the TX underrun to work the same way as the RX underrun,
as suggested by YongHyeon PYUN.
2013-01-05 20:37:40 +00:00
kientzle
2b2fcab759 While trying to track down the root cause for
TX stalls in this driver, I've also had some
time to evaluate the effectiveness of different
watchdog strategies.

This is the latest attempt, which consolidates
all of the watchdog logic in one place and
consistently detects TX stalls and resets within
a couple of seconds.
2013-01-05 17:59:44 +00:00
kientzle
f78ae91218 Overhauled CPSW driver for TI CPSW Ethernet module
(as used in AM335x SoC for BeagleBone).

Among other things:
 * Watchdog reset doesn't hang the driver.
 * Disconnecting cable doesn't hang the driver.
 * ifconfig up/down doesn't hang the driver
 * Out-of-memory no longer panics the driver.

Known issues:
 * Doesn't have good support for fragmented packets
   (calls m_defrag() on TX, assumes RX packets are never fragmented)
 * Promisc and allmulti still unimplimented
 * addmulti and delmulti still unimplemented
 * TX queue still stalls (but watchdog now consistently recovers in ~5s)
 * No sysctl monitoring
 * Only supports port0
 * No switch configuration support
 * Not tested on anything but BeagleBone

Committed from: BeagleBone
2013-01-01 18:55:04 +00:00
gonzo
a381b05232 PL310 driver update:
- Add pl310.disable tunable to disable L2 cache altogether. In
    order to make sure that it's 100% disabled we use cache event
    counters for cache line eviction and read allocate events
    and panic if any of these counters increased. This is purely
    for debugging purpose
- Direct access DEBUG_CTRL and CTRL might be unavailable in
    unsecure mode, so use platform-specific functions for
    these registers
- Replace #if 1 with proper erratum numbers
- Add erratum 753970 workaround
- Remove wait function for atomic operations
- Protect cache operations with spin mutex in order to prevent race condition
- Disable instruction cache prefetch and make sure data cache
    prefetch is enabled in OMAP4-specific intialization
2012-12-31 21:19:44 +00:00
glebius
8e20fa5ae9 Mechanically substitute flags from historic mbuf allocator with
malloc(9) flags within sys.

Exceptions:

- sys/contrib not touched
- sys/mbuf.h edited manually
2012-12-05 08:04:20 +00:00
kientzle
081fe7e283 Fix spelling. 2012-11-25 16:19:12 +00:00
imp
8f833b6bbd Strip trailing newline. 2012-11-23 17:22:38 +00:00
andrew
94003fea26 Merge the FDT versions of initarm.
The copies of initarm used on platforms with FDT support were almost
identical. The differences were pulled out into separate functions that
were called by initarm.

This change merges the, now identical, copies of initarm and a few of it's
support functions. This is a step towards a common kernel on ARMv6.
2012-11-03 22:39:07 +00:00
cognet
431d8fa681 Fix SMP build for omap4
Submitted by:	Giovanni Trematerra <gianni at freebsd DOT org>
2012-10-30 15:25:01 +00:00
kientzle
61bbdc6eb0 Missing paren.
Pointy hat:me
2012-10-27 22:13:42 +00:00
kientzle
b4838ce8ff set the kernelname from the boot loader environment.
This fixes kern.bootfile sysctl.

Submitted by:	Giovanni Trematerra
2012-10-26 05:48:53 +00:00
kientzle
e8860ec0d6 Do proper padding of runt packets using code copied from bge(4).
Reviewed by:	gnn
2012-10-25 04:37:47 +00:00
kientzle
0ecde454b5 Refer to headers locally. This makes it a lot easier
to build this driver out-of-tree.
2012-10-25 04:33:47 +00:00
eadler
3f7a414911 remove duplicate semicolons where possible.
Approved by:	cperciva
MFC after:	1 week
2012-10-22 03:00:37 +00:00