Skip to content

Commit

Permalink
goldfish: platform device for x86
Browse files Browse the repository at this point in the history
Based on code by Jun Nakajima but stripped of all the old x86 mach-foo
stuff and turned into a single file for the Goldfish virtual bus layer.

The actual created platform device and bus enumeration is portable between the
ARM and x86 Goldfish emulations.

Signed-off-by: Sheng Yang <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Yunhong Jiang <[email protected]>
Signed-off-by: Xiaohui Xin <[email protected]>
Signed-off-by: Jun Nakajima <[email protected]>
Signed-off-by: Bruce Beare <[email protected]>
[Ported to 3.7 and reorganised so that we can keep most of the code
 shared properly]
Signed-off-by: Alan Cox <[email protected]>
Signed-off-by: H. Peter Anvin <[email protected]>
Cc: Matthew Garrett <[email protected]>
  • Loading branch information
Jun Nakajima authored and H. Peter Anvin committed Jan 21, 2013
1 parent 7d1f9ae commit ddd70cf
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 0 deletions.
12 changes: 12 additions & 0 deletions arch/x86/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,10 @@ config X86_BIGSMP
---help---
This option is needed for the systems that have more than 8 CPUs

config GOLDFISH
def_bool y
depends on X86_GOLDFISH

if X86_32
config X86_EXTENDED_PLATFORM
bool "Support for extended (non-PC) x86 platforms"
Expand Down Expand Up @@ -402,6 +406,14 @@ config X86_UV
# Following is an alphabetically sorted list of 32 bit extended platforms
# Please maintain the alphabetic order if and when there are additions

config X86_GOLDFISH
bool "Goldfish (Virtual Platform)"
depends on X86_32
---help---
Enable support for the Goldfish virtual platform used primarily
for Android development. Unless you are building for the Android
Goldfish emulator say N here.

config X86_INTEL_CE
bool "CE4100 TV platform"
depends on PCI
Expand Down
1 change: 1 addition & 0 deletions arch/x86/platform/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
obj-y += ce4100/
obj-y += efi/
obj-y += geode/
obj-y += goldfish/
obj-y += iris/
obj-y += mrst/
obj-y += olpc/
Expand Down
1 change: 1 addition & 0 deletions arch/x86/platform/goldfish/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
obj-$(CONFIG_GOLDFISH) += goldfish.o
51 changes: 51 additions & 0 deletions arch/x86/platform/goldfish/goldfish.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/*
* Copyright (C) 2007 Google, Inc.
* Copyright (C) 2011 Intel, Inc.
* Copyright (C) 2013 Intel, Inc.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/

#include <linux/kernel.h>
#include <linux/irq.h>
#include <linux/platform_device.h>

/*
* Where in virtual device memory the IO devices (timers, system controllers
* and so on)
*/

#define GOLDFISH_PDEV_BUS_BASE (0xff001000)
#define GOLDFISH_PDEV_BUS_END (0xff7fffff)
#define GOLDFISH_PDEV_BUS_IRQ (4)

#define GOLDFISH_TTY_BASE (0x2000)

static struct resource goldfish_pdev_bus_resources[] = {
{
.start = GOLDFISH_PDEV_BUS_BASE,
.end = GOLDFISH_PDEV_BUS_END,
.flags = IORESOURCE_MEM,
},
{
.start = GOLDFISH_PDEV_BUS_IRQ,
.end = GOLDFISH_PDEV_BUS_IRQ,
.flags = IORESOURCE_IRQ,
}
};

static int __init goldfish_init(void)
{
platform_device_register_simple("goldfish_pdev_bus", -1,
goldfish_pdev_bus_resources, 2);
return 0;
}
device_initcall(goldfish_init);

0 comments on commit ddd70cf

Please sign in to comment.