root/arch/mips/cobalt/serial.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. cobalt_uart_add

   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 
  16 static 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 
  29 static 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 
  40 static __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 
  68 err_free_device:
  69         platform_device_put(pdev);
  70 
  71         return retval;
  72 }
  73 device_initcall(cobalt_uart_add);

/* [<][>][^][v][top][bottom][index][help] */