History log of /freebsd-10-stable/sys/arm/samsung/s3c2xx0/
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
283327 23-May-2015 ian

MFC r279723, r279724:

Define new linker set, UART_FDT_CLASS_AND_DEVICE, for registering full
(class and device) FDT UART. Define second one, UART_FDT_CLASS, for UART
class only.

Move the uart_class definitions and fdt compat data into the individual
uart implementations, and export them using the new linker-set mechanism.

278727 13-Feb-2015 ian

MFC r277454, r277460, r277465, r277466, r277467, r277469, r277470, r277471,
r277472, r277473, r277474, r277475, r277476, r277477, r277478, r277479,
r277480, r277512, r277516:

Add inline implementations of arm bus_space_read/write_N().

Revise the arm bus_space implementation to avoid dereferencing the tag on
every operation to retrieve the bs_cookie value almost nothing actually uses.

Use the explicit member initializer style to init the bus_space struct.

Use arm/bus_space-v6.c for all armv6 systems

Consolidate many identical implementations of bus_space to a single
common tag and implementation shared by armv4 and armv6.

Micro-optimize the new arm inline bus_space implementation by grouping all
the data the inline functions access together at the start of the bus_space
struct so that they all fit in a single cache line.


/freebsd-10-stable/sys/arm/allwinner/a20/files.a20
/freebsd-10-stable/sys/arm/allwinner/files.a10
/freebsd-10-stable/sys/arm/arm/bus_space-v6.c
/freebsd-10-stable/sys/arm/arm/bus_space_asm_generic.S
/freebsd-10-stable/sys/arm/arm/bus_space_base.c
/freebsd-10-stable/sys/arm/arm/bus_space_generic.c
/freebsd-10-stable/sys/arm/at91/at91.c
/freebsd-10-stable/sys/arm/at91/files.at91
/freebsd-10-stable/sys/arm/broadcom/bcm2835/files.bcm2835
/freebsd-10-stable/sys/arm/cavium/cns11xx/econa.c
/freebsd-10-stable/sys/arm/cavium/cns11xx/files.econa
/freebsd-10-stable/sys/arm/freescale/imx/files.imx51
/freebsd-10-stable/sys/arm/freescale/imx/files.imx53
/freebsd-10-stable/sys/arm/freescale/imx/files.imx6
/freebsd-10-stable/sys/arm/freescale/vybrid/files.vybrid
/freebsd-10-stable/sys/arm/include/bus.h
/freebsd-10-stable/sys/arm/lpc/files.lpc
/freebsd-10-stable/sys/arm/lpc/lpc_space.c
/freebsd-10-stable/sys/arm/mv/bus_space.c
/freebsd-10-stable/sys/arm/mv/files.mv
/freebsd-10-stable/sys/arm/rockchip/files.rk30xx
/freebsd-10-stable/sys/arm/samsung/exynos/files.exynos5
files.s3c2xx0
s3c24x0.c
s3c2xx0_space.c
s3c2xx0var.h
uart_cpu_s3c2410.c
/freebsd-10-stable/sys/arm/ti/files.ti
/freebsd-10-stable/sys/arm/versatile/bus_space.c
/freebsd-10-stable/sys/arm/versatile/files.versatile
/freebsd-10-stable/sys/arm/versatile/versatile_pci.c
/freebsd-10-stable/sys/arm/versatile/versatile_pci_bus_space.c
/freebsd-10-stable/sys/arm/versatile/versatile_pci_bus_space.h
/freebsd-10-stable/sys/arm/xilinx/files.zynq7
/freebsd-10-stable/sys/arm/xilinx/zy7_bus_space.c
/freebsd-10-stable/sys/arm/xscale/i80321/ep80219_machdep.c
/freebsd-10-stable/sys/arm/xscale/i80321/files.ep80219
/freebsd-10-stable/sys/arm/xscale/i80321/files.i80219
/freebsd-10-stable/sys/arm/xscale/i80321/files.i80321
/freebsd-10-stable/sys/arm/xscale/i80321/files.iq31244
/freebsd-10-stable/sys/arm/xscale/i80321/i80321_space.c
/freebsd-10-stable/sys/arm/xscale/i80321/iq31244_machdep.c
/freebsd-10-stable/sys/arm/xscale/i80321/obio.c
/freebsd-10-stable/sys/arm/xscale/i80321/obio_space.c
/freebsd-10-stable/sys/arm/xscale/i80321/obiovar.h
/freebsd-10-stable/sys/arm/xscale/i80321/uart_cpu_i80321.c
/freebsd-10-stable/sys/arm/xscale/i8134x/crb_machdep.c
/freebsd-10-stable/sys/arm/xscale/i8134x/files.i81342
/freebsd-10-stable/sys/arm/xscale/i8134x/i81342_space.c
/freebsd-10-stable/sys/arm/xscale/i8134x/obio.c
/freebsd-10-stable/sys/arm/xscale/i8134x/obio_space.c
/freebsd-10-stable/sys/arm/xscale/i8134x/obiovar.h
/freebsd-10-stable/sys/arm/xscale/i8134x/uart_cpu_i81342.c
/freebsd-10-stable/sys/arm/xscale/ixp425/avila_ata.c
/freebsd-10-stable/sys/arm/xscale/ixp425/cambria_exp_space.c
/freebsd-10-stable/sys/arm/xscale/ixp425/ixp425_a4x_space.c
/freebsd-10-stable/sys/arm/xscale/ixp425/ixp425_pci_space.c
/freebsd-10-stable/sys/arm/xscale/ixp425/ixp425_space.c
/freebsd-10-stable/sys/arm/xscale/pxa/pxa_space.c
/freebsd-10-stable/sys/dev/usb/controller/ehci_ixp4xx.c
278726 13-Feb-2015 ian

MFC r272103: Move s3c2xx0 into the samsung directory.

272103 25-Sep-2014 gavin

Move the ARM Samsung s3c2xx0 support files into the samsung directory, to
match other platforms.

Discussed with: andrew


271398 10-Sep-2014 andrew

Unify interrupts bit definition and usage. While here remove PSR_C_bit.

Submitted by: Svatopluk Kraus <onwahe at gmail.com>,
Michal Meloun <meloun at miracle.cz>
Differential Revision: https://reviews.freebsd.org/D754


265852 10-May-2014 ian

When mapping device memory, use PTE_DEVICE rather than PTE_NOCACHE.
On armv4 these are defined as synonyms right now, but it's a bit ambiguous
what NOCACHE means (is buffering/write-combining also enabled or not?); this
is a first step towards replacing PTE_NOCACHE with a less ambiguous name.


262979 10-Mar-2014 ian

Eliminate irq_dispatch.S. Move the data items it contained into arm/intr.c
and the functionality it provided into arm/exception.S. Rename the main
irq handling routine from arm_handler_execute() to arm_irq_handler() to
make it more congruent with how other exception handlers are named, and
also update its signature to reflect what has long been reality: it is
passed just a trapframe pointer, no interrupt number argument.


262952 09-Mar-2014 ian

The arm exception entry points currently vector through a function pointer
to the actual handler routine. All the pointers are static-intialized to
the only handlers available, and yet various platform-specific inits still
set those pointers (to the values they're already initialized to). Begin
to drain the swamp by removing all the redundant external declarations and
runtime setting of the pointers that's scattered around various places.


261649 09-Feb-2014 ian

It turns out a global variable is the only straightforward way to
communicate the kernel's physical load address from where it's known in
initarm() into cpu_mp_start() which is called from non-arm code and
takes no parameters.

This adds the global variable and ensures that all the various copies
of initarm() set it. It uses the variable in cpu_mp_start(), eliminating
the last uses of KERNPHYSADDR outside of locore.S (where we can now
calculate it instead of relying on the constant).


261646 09-Feb-2014 ian

Replace compile-time constant KERNPHYSADDR with abp_physaddr (determined
at runtime) where it's trivial to do so. Another breadcrumb on the trail
to a kernel that can be loaded at any 1MB boundary.


261643 09-Feb-2014 ian

Consolidate code related to setting up physical memory configuration into
a new physmem.c file. The new code provides helper routines that can be
used by legacy SoCs and newer FDT-based systems. There are routines to
add one or more regions of physically contiguous ram, and exclude one or
more physically contiguous regions of ram. Ram can be excluded from crash
dumps, from being given over to the vm system for allocation management,
or both. After all the included and excluded regions have been added,
arm_physmem_init_kernel_globals() processes the regions into the global
dump_avail and phys_avail arrays and realmem and physmem variables that
communicate memory configuration to the rest of the kernel.

Convert all existing SoCs to use the new helper code.


261565 06-Feb-2014 andrew

Use abp_physaddr for the physical address over KERNPHYSADDR. This helps us
remove the need to load the kernel at a fixed address.


261227 28-Jan-2014 andrew

Remove STARTUP_PAGETABLE_ADDR from the ARM configs and replace it with
memory at the end of the kernel.

This helps reduce the SoC and board specific configuration required.

Reviewed by: bsdimp
Tested by: jmg (armeb), br


260889 19-Jan-2014 imp

Introduce grab and ungrab upcalls. When the kernel desires to grab the
console, it calls the grab functions. These functions should turn off
the RX interrupts, and any others that interfere. This makes mountroot
prompt work again. If there's more generalized need other than
prompting, many of these routines should be expanded to do those new
things.

Reviewed by: bde (with reservations)


258534 24-Nov-2013 gavin

Fix typo in comment.


258412 21-Nov-2013 ian

Call cpu_setup() from the initarm() routine on platforms that don't use
the common FDT-aware initarm() in arm/machdep.c.

Pointed out by: cognet
Pointy hat to: ian


257660 04-Nov-2013 ian

Move remaining code and data related to static device mapping into the
new devmap.[ch] files. Emphasize the MD nature of these things by using
the prefix arm_devmap_ on the function and type names (already a few of
these things found their way into MI code, hopefully it will be harder to
do by accident in the future).


257639 04-Nov-2013 ian

Remove the duplicated implementations of some bus_space functions and use
the essentially identical generic implementations instead. The generic
implementations differ only in the spelling of a couple variable names
and some formatting differences.


257342 29-Oct-2013 nwhitehorn

A few last BUS_PROBE_NOWILDCARDs are in order.


256196 09-Oct-2013 dim

Remove redundant redeclarations of uart_s3c2410_class in
sys/arm/s3c2xx0/uart_bus_s3c2410.c and uart_cpu_s3c2410.c, to silence
two gcc warnings.

Approved by: re (gjb)
X-MFC-With: r252394


254172 10-Aug-2013 cognet

Use the correct address when calling kva_free()

Pointy hat to: cognet
Spotted out by: alc


254171 10-Aug-2013 cognet

- The address lies in the bus space handle, not in the cookie
- Use the right address when calling kva_free()
(Is there any reason why the s3c2xx0 comes with its own version of bs_map/
bs_unmap ? It seems to be just the same as in bus_space_generic.c)


254025 07-Aug-2013 jeff

Replace kernel virtual address space allocation with vmem. This provides
transparent layering and better fragmentation.

- Normalize functions that allocate memory to use kmem_*
- Those that allocate address space are named kva_*
- Those that operate on maps are named kmap_*
- Implement recursive allocation handling for kmem_arena in vmem.

Reviewed by: alc
Tested by: pho
Sponsored by: EMC / Isilon Storage Division


248965 01-Apr-2013 ian

Fix low-level uart drivers that set their fifo sizes in the softc too late.

uart(4) allocates send and receiver buffers in attach() before it calls
the low-level driver's attach routine. Many low-level drivers set the
fifo sizes in their attach routine, which is too late. Other drivers set
them in the probe() routine, so that they're available when uart(4)
allocates buffers. This fixes the ones that were setting the values too
late by moving the code to probe().


247564 01-Mar-2013 alc

Eliminate a redundant #include: machine/pmap.h is already included
through vm/pmap.h.


247429 28-Feb-2013 attilio

Complete r247297:
Remove unused inclusions of vm/vm_pager.h and vm/vnode_pager.h.

Sponsored by: EMC / Isilon storage division


247046 20-Feb-2013 alc

Initialize vm_max_kernel_address on non-FDT platforms. (This should have
been included in r246926.)

The second parameter to pmap_bootstrap() is redundant. Eliminate it.

Reviewed by: andrew


240802 22-Sep-2012 andrew

Create a common set_stackptrs in sys/arm/machdep.c.

On single core devices set_stackptrs is only ever called with cpu = 0 in
initarm and will be identical to the existing function. On SMP this needs
to be implemented for sys/arm/mp_machdep.c, but the implementations are
identical for each SoC.


239362 18-Aug-2012 andrew

Set machine correctly on ARM. This allows universe to use the correct world
when building each kernel.

Reviewed by: imp


239268 15-Aug-2012 gonzo

Merging projects/armv6, part 1

Cummulative patch of changes that are not vendor-specific:
- ARMv6 and ARMv7 architecture support
- ARM SMP support
- VFP/Neon support
- ARM Generic Interrupt Controller driver
- Simplification of startup code for all platforms


238545 17-Jul-2012 gonzo

Move unmask IRQ function call up to nexus device level.

FDT-enabled targets were broken after r238043 that relies
on device up the hierarchy to properly setup interrupt.
nexus device for ARM platforms did job only partially:
setting handler but not unmasking interrupt. Unmasking
was performed by platform code.

Reviewed by: andrew@


238329 10-Jul-2012 imp

Remove some unused variables/externs that have been copied too many times...


237137 15-Jun-2012 imp

Remove stray line from merge.


237045 14-Jun-2012 imp

More Linux boot support. Create arm_dump_avail_init() to initialize
this array either from Linux boot data, when enabled, or in the
typical way that most ports do it. arm_pyhs_avail_init is coming
soon since it must be a separate function.


237040 14-Jun-2012 imp

Modify all the arm platform files to call parse_boot_param passing in
the boot parameters from initarm first thing. parse_boot_param parses
the boot arguments and converts them to the /boot/loader metadata the
rest of the kernel uses. parse_boot_param is a weak alias to
fake_preload_metadata, which all the platforms use now, but may become
more extensive in the future.

Since it is a weak symbol, specific boards may define their own
parse_boot_param to interface to custom boot loaders.

Reviewed by: cognet@, Ian Lapore


236990 13-Jun-2012 imp

Trim trailing whitespace...


236828 10-Jun-2012 andrew

Pull out the common code to initialise proc0 & thread0 from initarm to a
common function.

Reviewed by: imp


236524 03-Jun-2012 imp

Minor rearrangement of the locore <-> initarm interface. Pass in a
structure with the first 4 registers to allow a wider range of boot
loaders to work. Future commits will make use of this to centralize
support for the different loaders.


218913 21-Feb-2011 cognet

Get myself a brain, move the call to init_param1() before the first use in
at91_machdep.c, and do it for the files I forgot the first time

Reported by: andrew
Submitted by: pluknet


218054 29-Jan-2011 andrew

Move the load address of the kernel to the start of KVA as the
s3c24x0 copy of initarm expects the kernel to be loaded there.

Approved by: imp (mentor)


217688 21-Jan-2011 pluknet

Make MSGBUF_SIZE kernel option a loader tunable kern.msgbufsize.

Submitted by: perryh pluto.rain.com (previous version)
Reviewed by: jhb
Approved by: kib (mentor)
Tested by: universe


217072 06-Jan-2011 jhb

Remove bogus usage of INTR_FAST. "Fast" interrupts are now indicated by
registering a filter handler rather than a threaded handler. Also remove
a bogus use of INTR_MPSAFE for a filter.


210458 24-Jul-2010 andrew

Allow external interrupts.

- Set the external pin to interrupt in bus_setup_intr
- Implement bus_config_intr for external interrupts
- Extend arm_{,un}mask_irq to work with external interrupts

Approved by: imp (mentor)


210397 22-Jul-2010 andrew

Add the s3c24x0 real time clock driver

Approved by: imp (mentor)


210396 22-Jul-2010 andrew

Rework how device memory is allocated on the s3c24x0 CPU's.

The device virtual addresses are now able to be allocated at runtime rather
than from the static pmap_devmap at boot. The only exception is memory
required before we have had a chance to dynamically allocate it.

While here reduce the space between the statically allocated devices by
reducing the distance between the virtual addresses.

Approved by: imp (mentor)


205354 20-Mar-2010 imp

Add support for the Samsung S3C2xx0 family of ARM SoCs written by
Andrew Turner. The kernel supports the LN2410SBC evaluation board,
and likely others. These parts (or similar ones) are in some open
hardware designs for phones.

Submitted by: Andrew Turner