root/arch/arm/mach-pxa/mp900.c

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

DEFINITIONS

This source file includes following definitions.
  1. isp116x_pfm_delay
  2. mp900c_init

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  *  linux/arch/arm/mach-pxa/mp900.c
   4  *
   5  *  Support for the NEC MobilePro900/C platform
   6  *
   7  *  Based on mach-pxa/gumstix.c
   8  *
   9  *  2007, 2008 Kristoffer Ericson <kristoffer.ericson@gmail.com>
  10  *  2007, 2008 Michael Petchkovsky <mkpetch@internode.on.net>
  11  */
  12 
  13 #include <linux/init.h>
  14 #include <linux/device.h>
  15 #include <linux/platform_device.h>
  16 #include <linux/types.h>
  17 #include <linux/usb/isp116x.h>
  18 
  19 #include <asm/mach-types.h>
  20 #include <asm/mach/arch.h>
  21 
  22 #include "pxa25x.h"
  23 #include "generic.h"
  24 
  25 static void isp116x_pfm_delay(struct device *dev, int delay)
  26 {
  27 
  28         /* 400MHz PXA2 = 2.5ns / instruction */
  29 
  30         int cyc = delay / 10;
  31 
  32         /* 4 Instructions = 4 x 2.5ns = 10ns */
  33         __asm__ volatile ("0:\n"
  34                 "subs %0, %1, #1\n"
  35                 "bge 0b\n"
  36                 :"=r" (cyc)
  37                 :"0"(cyc)
  38         );
  39 }
  40 
  41 static struct isp116x_platform_data isp116x_pfm_data = {
  42         .remote_wakeup_enable = 1,
  43         .delay = isp116x_pfm_delay,
  44 };
  45 
  46 static struct resource isp116x_pfm_resources[] = {
  47         [0] =   {
  48                 .start  = 0x0d000000,
  49                 .end    = 0x0d000000 + 1,
  50                 .flags  = IORESOURCE_MEM,
  51                 },
  52         [1] =   {
  53                 .start  = 0x0d000000 + 4,
  54                 .end    = 0x0d000000 + 5,
  55                 .flags  = IORESOURCE_MEM,
  56                 },
  57         [2] =   {
  58                 .start  = 61,
  59                 .end    = 61,
  60                 .flags  = IORESOURCE_IRQ,
  61                 },
  62 };
  63 
  64 static struct platform_device mp900c_dummy_device = {
  65         .name           = "mp900c_dummy",
  66         .id             = -1,
  67 };
  68 
  69 static struct platform_device mp900c_usb = {
  70         .name           = "isp116x-hcd",
  71         .num_resources  = ARRAY_SIZE(isp116x_pfm_resources),
  72         .resource       = isp116x_pfm_resources,
  73         .dev.platform_data = &isp116x_pfm_data,
  74 };
  75 
  76 static struct platform_device *devices[] __initdata = {
  77         &mp900c_dummy_device,
  78         &mp900c_usb,
  79 };
  80 
  81 static void __init mp900c_init(void)
  82 {
  83         printk(KERN_INFO "MobilePro 900/C machine init\n");
  84         pxa_set_ffuart_info(NULL);
  85         pxa_set_btuart_info(NULL);
  86         pxa_set_stuart_info(NULL);
  87         platform_add_devices(devices, ARRAY_SIZE(devices));
  88 }
  89 
  90 /* Maintainer - Michael Petchkovsky <mkpetch@internode.on.net> */
  91 MACHINE_START(NEC_MP900, "MobilePro900/C")
  92         .atag_offset    = 0x220100,
  93         .init_time      = pxa_timer_init,
  94         .map_io         = pxa25x_map_io,
  95         .nr_irqs        = PXA_NR_IRQS,
  96         .init_irq       = pxa25x_init_irq,
  97         .handle_irq     = pxa25x_handle_irq,
  98         .init_machine   = mp900c_init,
  99         .restart        = pxa_restart,
 100 MACHINE_END
 101 

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