mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
Merge tag 'mips_5.6' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux
Pull MIPS changes from Paul Burton:
"Nothing too big or scary in here:
- Support mremap() for the VDSO, primarily to allow CRIU to restore
the VDSO to its checkpointed location.
- Restore the MIPS32 cBPF JIT, after having reverted the enablement
of the eBPF JIT for MIPS32 systems in the 5.5 cycle.
- Improve cop0 counter synchronization behaviour whilst onlining CPUs
by running with interrupts disabled.
- Better match FPU behaviour when emulating multiply-accumulate
instructions on pre-r6 systems that implement IEEE754-2008 style
MACs.
- Loongson64 kernels now build using the MIPS64r2 ISA, allowing them
to take advantage of instructions introduced by r2.
- Support for the Ingenic X1000 SoC & the really nice little CU Neo
development board that's using it.
- Support for WMAC on GARDENA Smart Gateway devices.
- Lots of cleanup & refactoring of SGI IP27 (Origin 2*) support in
preparation for introducing IP35 (Origin 3*) support.
- Various Kconfig & Makefile cleanups"
* tag 'mips_5.6' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux: (60 commits)
MIPS: PCI: Add detection of IOC3 on IO7, IO8, IO9 and Fuel
MIPS: Loongson64: Disable exec hazard
MIPS: Loongson64: Bump ISA level to MIPSR2
MIPS: Make DIEI support as a config option
MIPS: OCTEON: octeon-irq: fix spelling mistake "to" -> "too"
MIPS: asm: local: add barriers for Loongson
MIPS: Loongson64: Select mac2008 only feature
MIPS: Add MAC2008 Support
Revert "MIPS: Add custom serial.h with BASE_BAUD override for generic kernel"
MIPS: sort MIPS and MIPS_GENERIC Kconfig selects alphabetically (again)
MIPS: make CPU_HAS_LOAD_STORE_LR opt-out
MIPS: generic: don't unconditionally select PINCTRL
MIPS: don't explicitly select LIBFDT in Kconfig
MIPS: sync-r4k: do slave counter synchronization with disabled HW interrupts
MIPS: SGI-IP30: Check for valid pointer before using it
MIPS: syscalls: fix indentation of the 'SYSNR' message
MIPS: boot: fix typo in 'vmlinux.lzma.its' target
MIPS: fix indentation of the 'RELOCS' message
dt-bindings: Document loongson vendor-prefix
MIPS: CU1000-Neo: Refresh defconfig to support HWMON and WiFi.
...
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* SGI IOC3 8250 UART driver
|
||||
*
|
||||
* Copyright (C) 2019 Thomas Bogendoerfer <tbogendoerfer@suse.de>
|
||||
*
|
||||
* based on code Copyright (C) 2005 Stanislaw Skowronek <skylark@unaligned.org>
|
||||
* Copyright (C) 2014 Joshua Kinard <kumba@gentoo.org>
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include "8250.h"
|
||||
|
||||
#define IOC3_UARTCLK (22000000 / 3)
|
||||
|
||||
struct ioc3_8250_data {
|
||||
int line;
|
||||
};
|
||||
|
||||
static unsigned int ioc3_serial_in(struct uart_port *p, int offset)
|
||||
{
|
||||
return readb(p->membase + (offset ^ 3));
|
||||
}
|
||||
|
||||
static void ioc3_serial_out(struct uart_port *p, int offset, int value)
|
||||
{
|
||||
writeb(value, p->membase + (offset ^ 3));
|
||||
}
|
||||
|
||||
static int serial8250_ioc3_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct ioc3_8250_data *data;
|
||||
struct uart_8250_port up;
|
||||
struct resource *r;
|
||||
void __iomem *membase;
|
||||
int irq, line;
|
||||
|
||||
r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
if (!r)
|
||||
return -ENODEV;
|
||||
|
||||
data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
|
||||
if (!data)
|
||||
return -ENOMEM;
|
||||
|
||||
membase = devm_ioremap_nocache(&pdev->dev, r->start, resource_size(r));
|
||||
if (!membase)
|
||||
return -ENOMEM;
|
||||
|
||||
irq = platform_get_irq(pdev, 0);
|
||||
if (irq < 0)
|
||||
irq = 0; /* no interrupt -> use polling */
|
||||
|
||||
/* Register serial ports with 8250.c */
|
||||
memset(&up, 0, sizeof(struct uart_8250_port));
|
||||
up.port.iotype = UPIO_MEM;
|
||||
up.port.uartclk = IOC3_UARTCLK;
|
||||
up.port.type = PORT_16550A;
|
||||
up.port.irq = irq;
|
||||
up.port.flags = (UPF_BOOT_AUTOCONF | UPF_SHARE_IRQ);
|
||||
up.port.dev = &pdev->dev;
|
||||
up.port.membase = membase;
|
||||
up.port.mapbase = r->start;
|
||||
up.port.serial_in = ioc3_serial_in;
|
||||
up.port.serial_out = ioc3_serial_out;
|
||||
line = serial8250_register_8250_port(&up);
|
||||
if (line < 0)
|
||||
return line;
|
||||
|
||||
platform_set_drvdata(pdev, data);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int serial8250_ioc3_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct ioc3_8250_data *data = platform_get_drvdata(pdev);
|
||||
|
||||
serial8250_unregister_port(data->line);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver serial8250_ioc3_driver = {
|
||||
.probe = serial8250_ioc3_probe,
|
||||
.remove = serial8250_ioc3_remove,
|
||||
.driver = {
|
||||
.name = "ioc3-serial8250",
|
||||
}
|
||||
};
|
||||
|
||||
module_platform_driver(serial8250_ioc3_driver);
|
||||
|
||||
MODULE_AUTHOR("Thomas Bogendoerfer <tbogendoerfer@suse.de>");
|
||||
MODULE_DESCRIPTION("SGI IOC3 8250 UART driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
@@ -381,6 +381,17 @@ config SERIAL_8250_EM
|
||||
port hardware found on the Emma Mobile line of processors.
|
||||
If unsure, say N.
|
||||
|
||||
config SERIAL_8250_IOC3
|
||||
tristate "SGI IOC3 8250 UART support"
|
||||
depends on SGI_MFD_IOC3 && SERIAL_8250
|
||||
select SERIAL_8250_EXTENDED
|
||||
select SERIAL_8250_SHARE_IRQ
|
||||
help
|
||||
Enable this if you have a SGI Origin or Octane machine. This module
|
||||
provides basic serial support by directly driving the UART chip
|
||||
behind the IOC3 device on those systems. Maximum baud speed is
|
||||
38400bps using this driver.
|
||||
|
||||
config SERIAL_8250_RT288X
|
||||
bool "Ralink RT288x/RT305x/RT3662/RT3883 serial port support"
|
||||
depends on SERIAL_8250
|
||||
|
||||
@@ -28,6 +28,7 @@ obj-$(CONFIG_SERIAL_8250_FSL) += 8250_fsl.o
|
||||
obj-$(CONFIG_SERIAL_8250_MEN_MCB) += 8250_men_mcb.o
|
||||
obj-$(CONFIG_SERIAL_8250_DW) += 8250_dw.o
|
||||
obj-$(CONFIG_SERIAL_8250_EM) += 8250_em.o
|
||||
obj-$(CONFIG_SERIAL_8250_IOC3) += 8250_ioc3.o
|
||||
obj-$(CONFIG_SERIAL_8250_OMAP) += 8250_omap.o
|
||||
obj-$(CONFIG_SERIAL_8250_LPC18XX) += 8250_lpc18xx.o
|
||||
obj-$(CONFIG_SERIAL_8250_MT6577) += 8250_mtk.o
|
||||
|
||||
Reference in New Issue
Block a user