cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

serial.c (1476B)


      1// SPDX-License-Identifier: GPL-2.0-or-later
      2/*
      3 *  Registration of Cobalt UART platform device.
      4 *
      5 *  Copyright (C) 2007  Yoichi Yuasa <yuasa@linux-mips.org>
      6 */
      7#include <linux/errno.h>
      8#include <linux/init.h>
      9#include <linux/ioport.h>
     10#include <linux/platform_device.h>
     11#include <linux/serial_8250.h>
     12
     13#include <cobalt.h>
     14#include <irq.h>
     15
     16static struct resource cobalt_uart_resource[] __initdata = {
     17	{
     18		.start	= 0x1c800000,
     19		.end	= 0x1c800007,
     20		.flags	= IORESOURCE_MEM,
     21	},
     22	{
     23		.start	= SERIAL_IRQ,
     24		.end	= SERIAL_IRQ,
     25		.flags	= IORESOURCE_IRQ,
     26	},
     27};
     28
     29static struct plat_serial8250_port cobalt_serial8250_port[] = {
     30	{
     31		.irq		= SERIAL_IRQ,
     32		.uartclk	= 18432000,
     33		.iotype		= UPIO_MEM,
     34		.flags		= UPF_IOREMAP | UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
     35		.mapbase	= 0x1c800000,
     36	},
     37	{},
     38};
     39
     40static __init int cobalt_uart_add(void)
     41{
     42	struct platform_device *pdev;
     43	int retval;
     44
     45	/*
     46	 * Cobalt Qube1 has no UART.
     47	 */
     48	if (cobalt_board_id == COBALT_BRD_ID_QUBE1)
     49		return 0;
     50
     51	pdev = platform_device_alloc("serial8250", -1);
     52	if (!pdev)
     53		return -ENOMEM;
     54
     55	pdev->id = PLAT8250_DEV_PLATFORM;
     56	pdev->dev.platform_data = cobalt_serial8250_port;
     57
     58	retval = platform_device_add_resources(pdev, cobalt_uart_resource, ARRAY_SIZE(cobalt_uart_resource));
     59	if (retval)
     60		goto err_free_device;
     61
     62	retval = platform_device_add(pdev);
     63	if (retval)
     64		goto err_free_device;
     65
     66	return 0;
     67
     68err_free_device:
     69	platform_device_put(pdev);
     70
     71	return retval;
     72}
     73device_initcall(cobalt_uart_add);