Linux Audio

Check our new training course

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