aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ps3
diff options
context:
space:
mode:
authorblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>2012-10-05 10:12:53 +0000
committerblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>2012-10-05 10:12:53 +0000
commit5c105d9f3fd086aff195d3849dcf847d6b0bd927 (patch)
tree1229a11f725bfa58aa7c57a76898553bb5f6654a /target/linux/ps3
downloadopenwrt-5c105d9f3fd086aff195d3849dcf847d6b0bd927.tar.gz
openwrt-5c105d9f3fd086aff195d3849dcf847d6b0bd927.zip
branch Attitude Adjustment
git-svn-id: svn://svn.openwrt.org/openwrt/branches/attitude_adjustment@33625 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/ps3')
-rw-r--r--target/linux/ps3/Makefile35
-rw-r--r--target/linux/ps3/README43
-rw-r--r--target/linux/ps3/config-2.6.30321
-rw-r--r--target/linux/ps3/image/Makefile21
-rw-r--r--target/linux/ps3/modules.mk58
-rw-r--r--target/linux/ps3/patches-2.6.30/0016-ps3-gelic-fix-rxdmac.patch89
-rwxr-xr-xtarget/linux/ps3/petitboot/base-files/bin/login45
-rw-r--r--target/linux/ps3/petitboot/base-files/etc/banner6
-rw-r--r--target/linux/ps3/petitboot/base-files/etc/config/network11
-rw-r--r--target/linux/ps3/petitboot/base-files/etc/config/system3
-rwxr-xr-xtarget/linux/ps3/petitboot/base-files/etc/init.d/boot73
-rw-r--r--target/linux/ps3/petitboot/base-files/etc/inittab7
-rw-r--r--target/linux/ps3/petitboot/base-files/etc/sysctl.conf11
-rwxr-xr-xtarget/linux/ps3/petitboot/base-files/sbin/initrun18
-rwxr-xr-xtarget/linux/ps3/petitboot/base-files/sbin/ps3-bl-option119
-rw-r--r--target/linux/ps3/petitboot/defconfig-ps3-petitboot19
-rw-r--r--target/linux/ps3/petitboot/profiles/000-Default.mk19
-rw-r--r--target/linux/ps3/petitboot/target.mk6
18 files changed, 904 insertions, 0 deletions
diff --git a/target/linux/ps3/Makefile b/target/linux/ps3/Makefile
new file mode 100644
index 000000000..01b298975
--- /dev/null
+++ b/target/linux/ps3/Makefile
@@ -0,0 +1,35 @@
+#
+# Copyright (C) 2007 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+include $(TOPDIR)/rules.mk
+
+ARCH:=powerpc
+BOARD:=ps3
+BOARDNAME:=Sony PS3 Game Console
+MAINTAINER:=Geoff Levand <geoffrey.levand@am.sony.com>
+SUBTARGETS=petitboot
+FEATURES:=powerpc64 broken
+
+LINUX_VERSION:=2.6.30.10
+
+KERNEL_CC:=
+
+include $(INCLUDE_DIR)/target.mk
+
+define Target/Description
+ Build for the Sony PS3 Game Console
+
+ The OpenWRT build will create both a 1st stage PS3-Linux image
+ suitable for programming into the PS3 flash memory, and a 2nd
+ stage PS3-Linux image suitable for loading via bootloaders or
+ the kexec utility.
+
+ Enable the Petitboot package to build a PS3 bootloader.
+endef
+
+KERNELNAME:="zImage"
+
+$(eval $(call BuildTarget))
diff --git a/target/linux/ps3/README b/target/linux/ps3/README
new file mode 100644
index 000000000..2d08b8c25
--- /dev/null
+++ b/target/linux/ps3/README
@@ -0,0 +1,43 @@
+OpenWRT on the Sony PS3 Game Console
+
+The OpenWRT build will create both a 1st stage PS3-Linux image
+suitable for programming into the PS3 flash memory, and a 2nd
+stage PS3-Linux image suitable for loading via bootloaders or
+the kexec utility.
+
+The 2nd stage image is convenient for testing new builds. It can
+be loaded from disk, USB device, or the network by an existing
+Other OS bootloader. After the 2nd stage image is tested and
+found to be good, the 1st stage image can then be programmed into
+flash memory. It is recommended to use this method during
+development to avoid corrupting the flash memory contents, which
+requires a reboot to the Game OS to repair.
+
+Known good Other OS bootloader images and installation information
+can be found here:
+
+ http://www.kernel.org/pub/linux/kernel/people/geoff/cell/
+
+The 2nd stage image file is bin/openwrt-ps3-vmlinux.elf. It can
+be loaded with an entry in the bootloader config file. It has
+no initrd file.
+
+The 1st stage image is named bin/otheros.bld. It can be programmed
+into flash memory either from Linux or the Game OS. From Linux,
+use the command:
+
+ ps3-flash-util -w otheros.bld
+
+From the Game OS, use the menu item 'Install Other OS'.
+
+Tips on how to recover your PS3-Linux system when it hangs up or no
+longer boots can be found here:
+
+ http://www.kernel.org/pub/linux/kernel/people/geoff/cell/ps3-howto/ps3-boot-recovery-howto.txt
+
+To alter the kernel command line options, run 'make kernel_menuconfig'
+and go to 'Kernel Options' -> 'Initial kernel command string'.
+
+The default video behavior is to autodetect the monitor capabilities,
+which should work for most monitors. More info on video modes can be
+found in the man page of the ps3-video-mode utility.
diff --git a/target/linux/ps3/config-2.6.30 b/target/linux/ps3/config-2.6.30
new file mode 100644
index 000000000..0d7af3746
--- /dev/null
+++ b/target/linux/ps3/config-2.6.30
@@ -0,0 +1,321 @@
+CONFIG_64BIT=y
+CONFIG_ALTIVEC=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
+CONFIG_ARCH_HAS_ILOG2_U32=y
+CONFIG_ARCH_HAS_ILOG2_U64=y
+CONFIG_ARCH_HAS_WALK_MEMORY=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_ARCH_MEMORY_PROBE=y
+CONFIG_ARCH_NO_VIRT_TO_BUS=y
+CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_SPARSEMEM_DEFAULT=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
+CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
+# CONFIG_ARPD is not set
+CONFIG_AUDIT_ARCH=y
+# CONFIG_BINARY_PRINTF is not set
+CONFIG_BITREVERSE=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=65535
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_SD=y
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_BLK_DEV_SR=y
+CONFIG_BLOCK_COMPAT=y
+# CONFIG_BOOTX_TEXT is not set
+CONFIG_BOUNCE=y
+# CONFIG_BRIDGE is not set
+# CONFIG_CGROUP_SCHED is not set
+CONFIG_CMDLINE=""
+CONFIG_CMDLINE_BOOL=y
+CONFIG_COMPAT_BINFMT_ELF=y
+CONFIG_COMPAT_BRK=y
+CONFIG_COMPAT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+# CONFIG_CRYPTO is not set
+# CONFIG_DEFAULT_UIMAGE is not set
+CONFIG_DEVKMEM=y
+CONFIG_DNOTIFY=y
+CONFIG_DTC=y
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_ELF_CORE=y
+# CONFIG_ENABLE_WARN_DEPRECATED is not set
+CONFIG_EXT2_FS=y
+CONFIG_EXT3_FS=y
+# CONFIG_EXT4DEV_COMPAT is not set
+# CONFIG_EXT4_FS_XATTR is not set
+CONFIG_EXT4_FS=y
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAT_FS=y
+CONFIG_FB_PS3_DEFAULT_SIZE_M=9
+CONFIG_FB_PS3=y
+CONFIG_FB_SYS_COPYAREA=y
+CONFIG_FB_SYS_FILLRECT=y
+CONFIG_FB_SYS_FOPS=y
+CONFIG_FB_SYS_IMAGEBLIT=y
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FLATMEM_MANUAL is not set
+CONFIG_FONT_8x16=y
+CONFIG_FONT_8x8=y
+# CONFIG_FONTS is not set
+CONFIG_FORCE_MAX_ZONEORDER=13
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAME_WARN=2048
+# CONFIG_FSL_ULI1575 is not set
+CONFIG_GELIC_NET=y
+# CONFIG_GELIC_WIRELESS is not set
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_GENERIC_FIND_LAST_BIT=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+# CONFIG_GENERIC_IOMAP is not set
+CONFIG_GENERIC_ISA_DMA=y
+# CONFIG_GENERIC_TBSYNC is not set
+CONFIG_GENERIC_TIME_VSYSCALL=y
+# CONFIG_GEN_RTC is not set
+CONFIG_GROUP_SCHED=y
+# CONFIG_HAMRADIO is not set
+# CONFIG_HANGCHECK_TIMER is not set
+CONFIG_HAS_DMA=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+# CONFIG_HAS_RAPIDIO is not set
+CONFIG_HAVE_ARCH_KGDB=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
+CONFIG_HAVE_IDE=y
+CONFIG_HAVE_IOREMAP_PROT=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_HAVE_LMB=y
+CONFIG_HAVE_MEMORY_PRESENT=y
+CONFIG_HAVE_MLOCK=y
+CONFIG_HAVE_OPROFILE=y
+CONFIG_HAVE_SETUP_PER_CPU_AREA=y
+CONFIG_HAVE_SYSCALL_WRAPPERS=y
+CONFIG_HID_APPLE=y
+CONFIG_HID_BELKIN=y
+CONFIG_HID_CHERRY=y
+CONFIG_HID_EZKEY=y
+CONFIG_HID_LOGITECH=y
+CONFIG_HID_MICROSOFT=y
+CONFIG_HID_SONY=y
+CONFIG_HID_SUNPLUS=y
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HIGH_RES_TIMERS is not set
+# CONFIG_HUGETLBFS is not set
+CONFIG_HW_CONSOLE=y
+# CONFIG_HW_RANDOM is not set
+# CONFIG_HZ_100 is not set
+CONFIG_HZ=250
+CONFIG_HZ_250=y
+CONFIG_INITRAMFS_ROOT_GID=500
+CONFIG_INITRAMFS_ROOT_UID=500
+CONFIG_INOTIFY_USER=y
+CONFIG_INOTIFY=y
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_JOYSTICK=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT=y
+# CONFIG_INPUT_YEALINK is not set
+CONFIG_IOMMU_HELPER=y
+# CONFIG_IOMMU_VMERGE is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IPIC is not set
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IRQ_ALL_CPUS is not set
+CONFIG_IRQ_PER_CPU=y
+# CONFIG_IRQSTACKS is not set
+CONFIG_ISA_DMA_API=y
+CONFIG_ISO9660_FS=y
+CONFIG_JBD2=y
+CONFIG_JBD=y
+# CONFIG_JOYSTICK_A3D is not set
+# CONFIG_JOYSTICK_ADI is not set
+# CONFIG_JOYSTICK_ANALOG is not set
+# CONFIG_JOYSTICK_COBRA is not set
+# CONFIG_JOYSTICK_GF2K is not set
+# CONFIG_JOYSTICK_GRIP is not set
+# CONFIG_JOYSTICK_GRIP_MP is not set
+# CONFIG_JOYSTICK_GUILLEMOT is not set
+# CONFIG_JOYSTICK_IFORCE is not set
+# CONFIG_JOYSTICK_INTERACT is not set
+# CONFIG_JOYSTICK_JOYDUMP is not set
+# CONFIG_JOYSTICK_MAGELLAN is not set
+# CONFIG_JOYSTICK_SIDEWINDER is not set
+# CONFIG_JOYSTICK_SPACEBALL is not set
+# CONFIG_JOYSTICK_SPACEORB is not set
+# CONFIG_JOYSTICK_STINGER is not set
+# CONFIG_JOYSTICK_TMDC is not set
+# CONFIG_JOYSTICK_TWIDJOY is not set
+# CONFIG_JOYSTICK_WARRIOR is not set
+# CONFIG_JOYSTICK_XPAD is not set
+# CONFIG_JOYSTICK_ZHENHUA is not set
+CONFIG_KERNEL_START=0xc000000000000000
+CONFIG_KEXEC=y
+# CONFIG_LEDS_TRIGGERS is not set
+CONFIG_LOCK_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=15
+# CONFIG_LOGO is not set
+CONFIG_MEMORY_HOTPLUG_SPARSE=y
+CONFIG_MEMORY_HOTPLUG=y
+# CONFIG_MEMORY_HOTREMOVE is not set
+CONFIG_MIGRATION=y
+# CONFIG_MINI_FO is not set
+# CONFIG_MISC_DEVICES is not set
+# CONFIG_MMIO_NVRAM is not set
+# CONFIG_MPIC is not set
+# CONFIG_MPIC_WEIRD is not set
+CONFIG_MSDOS_FS=y
+# CONFIG_MTD is not set
+# CONFIG_NET_ETHERNET is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_NETWORK_FILESYSTEMS is not set
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS=y
+CONFIG_NR_CPUS=2
+# CONFIG_NUMA is not set
+CONFIG_OF_DEVICE=y
+CONFIG_OF=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_PAGE_OFFSET=0xc000000000000000
+# CONFIG_PARTITION_ADVANCED is not set
+# CONFIG_PCI_DOMAINS is not set
+# CONFIG_PCI_SYSCALL is not set
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_PHYSICAL_START=0x00000000
+CONFIG_POWER3=y
+# CONFIG_POWER4_ONLY is not set
+CONFIG_POWER4=y
+CONFIG_PPC64=y
+# CONFIG_PPC_970_NAP is not set
+CONFIG_PPC_BOOK3S=y
+# CONFIG_PPC_CELLEB is not set
+# CONFIG_PPC_CELL_NATIVE is not set
+# CONFIG_PPC_CELL_QPACE is not set
+CONFIG_PPC_CELL=y
+# CONFIG_PPC_CLOCK is not set
+# CONFIG_PPC_DCR_MMIO is not set
+# CONFIG_PPC_DCR_NATIVE is not set
+# CONFIG_PPC_EARLY_DEBUG is not set
+CONFIG_PPC_FPU=y
+# CONFIG_PPC_HAS_HASH_64K is not set
+# CONFIG_PPC_I8259 is not set
+# CONFIG_PPC_IBM_CELL_BLADE is not set
+# CONFIG_PPC_INDIRECT_IO is not set
+# CONFIG_PPC_ISERIES is not set
+# CONFIG_PPC_MAPLE is not set
+# CONFIG_PPC_MM_SLICES is not set
+# CONFIG_PPC_MPC106 is not set
+# CONFIG_PPC_OF_BOOT_TRAMPOLINE is not set
+CONFIG_PPC_OF=y
+# CONFIG_PPC_PASEMI is not set
+CONFIG_PPC_PCI_CHOICE=y
+# CONFIG_PPC_PMAC is not set
+CONFIG_PPC_PS3=y
+# CONFIG_PPC_PSERIES is not set
+# CONFIG_PPC_RTAS is not set
+CONFIG_PPC_STD_MMU_64=y
+CONFIG_PPC_STD_MMU=y
+# CONFIG_PPC_UDBG_16550 is not set
+CONFIG_PPC=y
+# CONFIG_PQ2ADS is not set
+CONFIG_PRINT_STACK_DEPTH=64
+CONFIG_PROC_DEVICETREE=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_PS3_ADVANCED=y
+CONFIG_PS3_DISK=y
+# CONFIG_PS3_DYNAMIC_DMA is not set
+CONFIG_PS3_FLASH=y
+CONFIG_PS3_HTAB_SIZE=20
+# CONFIG_PS3_LPM is not set
+CONFIG_PS3_PS3AV=y
+CONFIG_PS3_ROM=y
+CONFIG_PS3_STORAGE=y
+CONFIG_PS3_SYS_MANAGER=y
+# CONFIG_PS3_VRAM is not set
+CONFIG_PS3_VUART=y
+# CONFIG_RD_LZMA is not set
+# CONFIG_RELOCATABLE is not set
+# CONFIG_RT_GROUP_SCHED is not set
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+# CONFIG_SCHED_HRTICK is not set
+CONFIG_SCHED_OMIT_FRAME_POINTER=y
+# CONFIG_SCHED_SMT is not set
+# CONFIG_SCSI_LOWLEVEL is not set
+# CONFIG_SCSI_PROC_FS is not set
+CONFIG_SCSI=y
+# CONFIG_SERIAL_8250 is not set
+# CONFIG_SERIAL_OF_PLATFORM is not set
+# CONFIG_SLOW_WORK is not set
+CONFIG_SMP=y
+CONFIG_SPARSEMEM_EXTREME=y
+CONFIG_SPARSEMEM_MANUAL=y
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
+# CONFIG_SPARSEMEM_VMEMMAP is not set
+CONFIG_SPARSEMEM=y
+# CONFIG_SPU_BASE is not set
+# CONFIG_SPU_FS is not set
+# CONFIG_SQUASHFS is not set
+CONFIG_STOP_MACHINE=y
+# CONFIG_SWAP is not set
+# CONFIG_SYSCTL_SYSCALL_CHECK is not set
+CONFIG_SYSVIPC_COMPAT=y
+# CONFIG_TEXTSEARCH is not set
+CONFIG_TRACING_SUPPORT=y
+CONFIG_TUNE_CELL=y
+# CONFIG_U3_DART is not set
+# CONFIG_USB_DEVICEFS is not set
+CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y
+CONFIG_USB_EHCI_HCD_PPC_OF=y
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+CONFIG_USB_HID=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
+# CONFIG_USB_OHCI_HCD_PPC_OF is not set
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB=y
+CONFIG_USE_GENERIC_SMP_HELPERS=y
+CONFIG_USER_SCHED=y
+CONFIG_VFAT_FS=y
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=y
+CONFIG_VIRT_CPU_ACCOUNTING=y
+# CONFIG_VLAN_8021Q is not set
+CONFIG_VM_EVENT_COUNTERS=y
+# CONFIG_VSX is not set
+CONFIG_VT_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_VT=y
+# CONFIG_WATCHDOG is not set
+# CONFIG_WIRELESS is not set
+# CONFIG_WLAN_80211 is not set
+CONFIG_WORD_SIZE=64
+# CONFIG_ZISOFS is not set
diff --git a/target/linux/ps3/image/Makefile b/target/linux/ps3/image/Makefile
new file mode 100644
index 000000000..9eb3d93f0
--- /dev/null
+++ b/target/linux/ps3/image/Makefile
@@ -0,0 +1,21 @@
+#
+# Copyright (C) 2007-2010 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/image.mk
+
+define Image/Prepare
+ cp $(LINUX_DIR)/arch/powerpc/boot/otheros.bld $(KDIR)/image
+endef
+
+define Image/BuildKernel
+ mkdir -p $(BIN_DIR)
+ cp $(KDIR)/image $(BIN_DIR)/otheros.bld
+ cp $(KDIR)/vmlinux.elf $(BIN_DIR)/$(IMG_PREFIX)-vmlinux.elf
+ cp $(BIN_DIR)/$(IMG_PREFIX)-vmlinux.elf $(TARGET_DIR)
+endef
+
+$(eval $(call BuildImage))
diff --git a/target/linux/ps3/modules.mk b/target/linux/ps3/modules.mk
new file mode 100644
index 000000000..51638181a
--- /dev/null
+++ b/target/linux/ps3/modules.mk
@@ -0,0 +1,58 @@
+#
+# Copyright (C) 2010 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define KernelPackage/ps3lan
+ SUBMENU:=Network Devices
+ TITLE:=PS3-Lan support
+ DEPENDS:=@TARGET_ps3
+ KCONFIG:= \
+ CONFIG_GELIC_NET \
+ CONFIG_GELIC_WIRELESS=y
+ FILES:=$(LINUX_DIR)/drivers/net/ps3_gelic.ko
+ AUTOLOAD:=$(call AutoLoad,50,ps3_gelic)
+endef
+
+define KernelPackage/ps3lan/description
+ Kernel module for PS3 Networking. Includes Gb Ethernet and WLAN
+endef
+
+$(eval $(call KernelPackage,ps3lan))
+
+
+define KernelPackage/ps3vram
+ SUBMENU:=$(BLOCK_MENU)
+ TITLE:=PS3 Video RAM Storage Driver
+ DEPENDS:=@TARGET_ps3
+ KCONFIG:=CONFIG_PS3_VRAM
+ FILES:=$(LINUX_DIR)/drivers/block/ps3vram.ko
+ AUTOLOAD:=$(call AutoLoad,01,ps3vram)
+endef
+
+define KernelPackage/ps3vram/description
+ Kernel support for PS3 Video RAM Storage
+endef
+
+$(eval $(call KernelPackage,ps3vram))
+
+
+define KernelPackage/sound-ps3
+ SUBMENU:=$(SOUND_MENU)
+ TITLE:=PS3 Audio
+ DEPENDS:=@TARGET_ps3
+ KCONFIG:=CONFIG_SND_PS3 \
+ CONFIG_SND_PPC=y \
+ CONFIG_SND_PS3_DEFAULT_START_DELAY=2000
+ FILES:=$(LINUX_DIR)/sound/ppc/snd_ps3.ko
+ AUTOLOAD:=$(call AutoLoad,35, snd_ps3)
+ $(call AddDepends/sound)
+endef
+
+define KernelPackage/sound-ps3/description
+ support for the integrated PS3 audio device
+endef
+
+$(eval $(call KernelPackage,sound-ps3))
diff --git a/target/linux/ps3/patches-2.6.30/0016-ps3-gelic-fix-rxdmac.patch b/target/linux/ps3/patches-2.6.30/0016-ps3-gelic-fix-rxdmac.patch
new file mode 100644
index 000000000..1cb202d4f
--- /dev/null
+++ b/target/linux/ps3/patches-2.6.30/0016-ps3-gelic-fix-rxdmac.patch
@@ -0,0 +1,89 @@
+Subject: net/ps3_gelic: Fix RX DMA restart
+
+Fix the condition where PS3 network RX hangs when no network
+TX is occuring by calling gelic_card_enable_rxdmac() during
+RX_DMA_CHAIN_END event processing.
+
+The gelic hardware automatically clears its RX_DMA_EN flag when
+it detects an RX_DMA_CHAIN_END event. In its processing of
+RX_DMA_CHAIN_END the gelic driver is required to set RX_DMA_EN
+(with a call to gelic_card_enable_rxdmac()) to restart RX DMA
+transfers. The existing gelic driver code does not set
+RX_DMA_EN directly in its processing of the RX_DMA_CHAIN_END
+event, but uses a flag variable card->rx_dma_restart_required
+to schedule the setting of RX_DMA_EN until next inside the
+interrupt handler.
+
+It seems this delayed setting of RX_DMA_EN causes the hang since
+the next RX interrupt after the RX_DMA_CHAIN_END event where
+RX_DMA_EN is scheduled to be set will not occur since RX_DMA_EN
+was not set. In the case were network TX is occuring, RX_DMA_EN
+is set in the next TX interrupt and RX processing continues.
+
+Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com>
+---
+ drivers/net/ps3_gelic_net.c | 21 ++++++++-------------
+ drivers/net/ps3_gelic_net.h | 1 -
+ 2 files changed, 8 insertions(+), 14 deletions(-)
+
+--- a/drivers/net/ps3_gelic_net.c
++++ b/drivers/net/ps3_gelic_net.c
+@@ -969,10 +969,6 @@ static int gelic_card_decode_one_descr(s
+ int dmac_chain_ended;
+
+ status = gelic_descr_get_status(descr);
+- /* is this descriptor terminated with next_descr == NULL? */
+- dmac_chain_ended =
+- be32_to_cpu(descr->dmac_cmd_status) &
+- GELIC_DESCR_RX_DMA_CHAIN_END;
+
+ if (status == GELIC_DESCR_DMA_CARDOWNED)
+ return 0;
+@@ -1035,6 +1031,11 @@ static int gelic_card_decode_one_descr(s
+ /* ok, we've got a packet in descr */
+ gelic_net_pass_skb_up(descr, card, netdev);
+ refill:
++
++ /* is the current descriptor terminated with next_descr == NULL? */
++ dmac_chain_ended =
++ be32_to_cpu(descr->dmac_cmd_status) &
++ GELIC_DESCR_RX_DMA_CHAIN_END;
+ /*
+ * So that always DMAC can see the end
+ * of the descriptor chain to avoid
+@@ -1063,10 +1064,9 @@ refill:
+ * If dmac chain was met, DMAC stopped.
+ * thus re-enable it
+ */
+- if (dmac_chain_ended) {
+- card->rx_dma_restart_required = 1;
+- dev_dbg(ctodev(card), "reenable rx dma scheduled\n");
+- }
++
++ if (dmac_chain_ended)
++ gelic_card_enable_rxdmac(card);
+
+ return 1;
+ }
+@@ -1132,11 +1132,6 @@ static irqreturn_t gelic_card_interrupt(
+
+ status &= card->irq_mask;
+
+- if (card->rx_dma_restart_required) {
+- card->rx_dma_restart_required = 0;
+- gelic_card_enable_rxdmac(card);
+- }
+-
+ if (status & GELIC_CARD_RXINT) {
+ gelic_card_rx_irq_off(card);
+ napi_schedule(&card->napi);
+--- a/drivers/net/ps3_gelic_net.h
++++ b/drivers/net/ps3_gelic_net.h
+@@ -284,7 +284,6 @@ struct gelic_card {
+
+ struct gelic_descr_chain tx_chain;
+ struct gelic_descr_chain rx_chain;
+- int rx_dma_restart_required;
+ int rx_csum;
+ /*
+ * tx_lock guards tx descriptor list and
diff --git a/target/linux/ps3/petitboot/base-files/bin/login b/target/linux/ps3/petitboot/base-files/bin/login
new file mode 100755
index 000000000..b17efcdf4
--- /dev/null
+++ b/target/linux/ps3/petitboot/base-files/bin/login
@@ -0,0 +1,45 @@
+#!/bin/sh
+# Copyright (C) 2008 OpenWrt.org
+
+bl_option=/sbin/ps3-bl-option
+
+if [ ! -f $bl_option ] ||
+ [ ! `$bl_option --get-telnet-enabled` ] ||
+ [ `$bl_option --get-telnet-enabled` = "0" ]; then
+ echo \
+"
+ === IMPORTANT ==========================
+ Telnet login is disabled for security
+ reasons. Enabling telnet login on the
+ host will allow any user connected to
+ the same network to login to the host.
+
+ You can enable telnet login with the
+ following command in the host console:
+
+ # $bl_option -T 1
+
+ You can disable telnet login with the
+ following command in the host console:
+
+ # $bl_option -T 0
+ ----------------------------------------
+"
+ exit 0
+fi
+
+grep '^root:[^!]' /etc/passwd >&- 2>&-
+[ "$?" = "0" -a -z "$FAILSAFE" ] &&
+{
+ echo "Login failed."
+ exit 0
+} || {
+cat << EOF
+ === IMPORTANT ============================
+ Use 'passwd' to set your login password
+ this will disable telnet and enable SSH
+ ------------------------------------------
+EOF
+}
+
+exec /bin/ash --login
diff --git a/target/linux/ps3/petitboot/base-files/etc/banner b/target/linux/ps3/petitboot/base-files/etc/banner
new file mode 100644
index 000000000..4d671c7ba
--- /dev/null
+++ b/target/linux/ps3/petitboot/base-files/etc/banner
@@ -0,0 +1,6 @@
+ _____ _____ _____
+ | _ || ___||___ |
+ | __||___ ||___ |
+ |__| |_____||_____|
+ L I N U X
+
diff --git a/target/linux/ps3/petitboot/base-files/etc/config/network b/target/linux/ps3/petitboot/base-files/etc/config/network
new file mode 100644
index 000000000..3c1805fb9
--- /dev/null
+++ b/target/linux/ps3/petitboot/base-files/etc/config/network
@@ -0,0 +1,11 @@
+# Copyright (C) 2006-2012 OpenWrt.org
+
+config interface loopback
+ option ifname lo
+ option proto static
+ option ipaddr 127.0.0.1
+ option netmask 255.0.0.0
+
+config interface lan
+ option ifname eth0
+ option proto dhcp
diff --git a/target/linux/ps3/petitboot/base-files/etc/config/system b/target/linux/ps3/petitboot/base-files/etc/config/system
new file mode 100644
index 000000000..67ffe8319
--- /dev/null
+++ b/target/linux/ps3/petitboot/base-files/etc/config/system
@@ -0,0 +1,3 @@
+config system
+ option hostname ps3-linux
+ option log_file /var/log/messages
diff --git a/target/linux/ps3/petitboot/base-files/etc/init.d/boot b/target/linux/ps3/petitboot/base-files/etc/init.d/boot
new file mode 100755
index 000000000..c84c6873d
--- /dev/null
+++ b/target/linux/ps3/petitboot/base-files/etc/init.d/boot
@@ -0,0 +1,73 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2006 OpenWrt.org
+
+START=10
+
+system_config() {
+ local cfg="$1"
+ local hostname
+
+ config_get hostname "$cfg" hostname
+ echo "${hostname:-OpenWrt}" > /proc/sys/kernel/hostname
+
+ config_get conloglevel "$cfg" conloglevel
+ [ -n "$conloglevel" ] && dmesg -n "$conloglevel"
+
+ config_get timezone "$cfg" timezone
+ [ -z "$timezone" ] && timezone=UTC
+ echo "$timezone" > /tmp/TZ
+
+ config_get log_ip "$cfg" log_ip
+ config_get log_size "$cfg" log_size
+ config_get log_port "$cfg" log_port
+ config_get log_file "$cfg" log_file
+
+ [ -z $log_file -a -z "$log_size" ] && log_size=16
+ [ -x /sbin/syslogd ] && syslogd ${log_size:+-C $log_size} \
+ ${log_file:+-O $log_file} ${log_ip:+-L -R $log_ip}
+ [ -x /sbin/klogd ] && klogd
+}
+
+apply_uci_config() {(
+ include /lib/config
+ uci_apply_defaults
+)}
+
+start() {
+ [ -f /proc/mounts ] || /sbin/mount_root
+ [ -f /proc/jffs2_bbc ] && echo "S" > /proc/jffs2_bbc
+ [ -f /proc/net/vlan/config ] && vconfig set_name_type DEV_PLUS_VID_NO_PAD
+
+ apply_uci_config
+ config_load system
+ config_foreach system_config system
+
+ mkdir -p /var/run
+ mkdir -p /var/log
+ mkdir -p /var/lock
+ mkdir -p /var/state
+ mkdir -p /tmp/.uci
+ chown 0700 /tmp/.uci
+ touch /var/log/wtmp
+ touch /var/log/lastlog
+ touch /tmp/resolv.conf.auto
+ ln -sf /tmp/resolv.conf.auto /tmp/resolv.conf
+ [ "$FAILSAFE" = "true" ] && touch /tmp/.failsafe
+
+ killall -q hotplug2
+ [ -x /sbin/hotplug2 ] && /sbin/hotplug2 --override --persistent \
+ --max-children 1 --no-coldplug &
+
+ # the coldplugging of network interfaces needs to happen later, so we do it manually here
+ for iface in $(awk -F: '/:/ {print $1}' /proc/net/dev); do
+ /usr/bin/env -i ACTION=add INTERFACE="$iface" /sbin/hotplug-call net
+ done
+
+ # create /dev/root if it doesn't exist
+ [ -e /dev/root ] || {
+ rootdev=$(awk 'BEGIN { RS=" "; FS="="; } $1 == "root" { print $2 }' < /proc/cmdline)
+ [ -n "$rootdev" ] && ln -s "$rootdev" /dev/root
+ }
+
+ load_modules /etc/modules.d/*
+}
diff --git a/target/linux/ps3/petitboot/base-files/etc/inittab b/target/linux/ps3/petitboot/base-files/etc/inittab
new file mode 100644
index 000000000..96abea984
--- /dev/null
+++ b/target/linux/ps3/petitboot/base-files/etc/inittab
@@ -0,0 +1,7 @@
+::sysinit:/etc/init.d/rcS S boot
+::shutdown:/etc/init.d/rcS K stop
+::ctrlaltdel:/sbin/reboot
+::restart:/sbin/init
+tty1::respawn:/sbin/initrun
+tty2::askfirst:/bin/ash --login
+tty3::askfirst:/bin/ash --login
diff --git a/target/linux/ps3/petitboot/base-files/etc/sysctl.conf b/target/linux/ps3/petitboot/base-files/etc/sysctl.conf
new file mode 100644
index 000000000..1af007925
--- /dev/null
+++ b/target/linux/ps3/petitboot/base-files/etc/sysctl.conf
@@ -0,0 +1,11 @@
+kernel.panic=3
+net.ipv4.conf.default.arp_ignore=1
+net.ipv4.conf.all.arp_ignore=1
+net.ipv4.ip_forward=1
+net.ipv4.icmp_echo_ignore_broadcasts=1
+net.ipv4.icmp_ignore_bogus_error_responses=1
+net.ipv4.tcp_ecn=1
+net.ipv4.tcp_fin_timeout=30
+net.ipv4.tcp_keepalive_time=120
+net.ipv4.tcp_timestamps=0
+net.core.netdev_max_backlog=30
diff --git a/target/linux/ps3/petitboot/base-files/sbin/initrun b/target/linux/ps3/petitboot/base-files/sbin/initrun
new file mode 100755
index 000000000..1c3363fcc
--- /dev/null
+++ b/target/linux/ps3/petitboot/base-files/sbin/initrun
@@ -0,0 +1,18 @@
+#!/bin/sh
+# Run petitboot at first startup, otherwise run a login.
+
+sbindir=/usr/sbin
+localstatedir=/var/petitboot
+
+petitboot=$sbindir/petitboot
+run_once=$localstatedir/.run-once
+
+if [ ! -f $run_once -a -x $petitboot ]; then
+ # quiet console
+ echo 3 > /proc/sys/kernel/printk
+ mkdir -p $localstatedir
+ touch $run_once
+ exec $petitboot --timeout
+fi
+
+exec /bin/ash --login
diff --git a/target/linux/ps3/petitboot/base-files/sbin/ps3-bl-option b/target/linux/ps3/petitboot/base-files/sbin/ps3-bl-option
new file mode 100755
index 000000000..972c00ae1
--- /dev/null
+++ b/target/linux/ps3/petitboot/base-files/sbin/ps3-bl-option
@@ -0,0 +1,119 @@
+#!/bin/sh
+#
+# Copyright (C) 2008 Sony Computer Entertainment Inc.
+# Copyright 2008 Sony Corp.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+
+usage() {
+ echo -n "
+SYNOPSIS
+ ps3-bl-option [OPTION]
+DESCRIPTION
+ Get and set PS3 bootloader options in flash.
+OPTIONS
+ -m, --get-video-mode
+ Get the bootloader video mode.
+ -M, --set-video-mode value
+ Set the bootloader video mode.
+ -o, --get-bootloader-timeout
+ Get the bootloader timeout in seconds.
+ -O, --set-bootloader-timeout value
+ Set the bootloader timeout in seconds.
+ -p, --get-bootloader-default
+ Get the default bootloader menu item.
+ -P, --set-bootloader-default value
+ Set the default bootloader menu item.
+ -t, --get-telnet-enabled
+ Get the telnet enabled flag.
+ -T, --set-telnet-enabled value
+ Set the telnet enabled flag.
+ -h, --help
+ Print a help message.
+SEE ALSO
+ ps3-flash-util(8)
+"
+}
+
+bad_arg() {
+ echo "ERROR: bad arg" >&2;
+ usage
+ exit 1
+}
+
+if [ "$#" -eq 0 ] ; then
+ bad_arg
+fi
+
+get_flag() {
+ flags=`ps3-flash-util --db-print $1 $2`
+ echo $(( ${flags:-0} & $3 ))
+}
+
+set_flag() {
+ flags=`ps3-flash-util --db-print $1 $2`
+
+ if [ $4 -eq 0 ]; then
+ ps3-flash-util --db-write-half $1 $2 $(( ${flags:-0} & ~$3 ))
+ else
+ ps3-flash-util --db-write-half $1 $2 $(( ${flags:-0} | $3 ))
+ fi
+}
+
+# owners
+bootloader="3"
+
+# keys
+item="1"
+video="2"
+flags="3"
+timeout="4"
+
+# flags
+telnet="1"
+
+case "$1" in
+ -m | --get-video-mode)
+ ps3-flash-util --db-print ${bootloader} ${video}
+ ;;
+ -M | --set-video-mode)
+ ps3-flash-util --db-write-half ${bootloader} ${video} $2
+ ;;
+ -o | --get-bootloader-timeout)
+ ps3-flash-util --db-print ${bootloader} ${timeout}
+ ;;
+ -O | --set-bootloader-timeout)
+ ps3-flash-util --db-write-half ${bootloader} ${timeout} $2
+ ;;
+ -p | --get-bootloader-default)
+ ps3-flash-util --db-print ${bootloader} ${item}
+ ;;
+ -P | --set-bootloader-default)
+ ps3-flash-util --db-write-word ${bootloader} ${item} $2
+ ;;
+ -t | --get-telnet-enabled)
+ get_flag ${bootloader} ${flags} ${telnet}
+ ;;
+ -T | --set-telnet-enabled)
+ set_flag ${bootloader} ${flags} ${telnet} $2
+ ;;
+ -h | --help)
+ usage
+ exit 0
+ ;;
+ *)
+ bad_arg
+ ;;
+esac
diff --git a/target/linux/ps3/petitboot/defconfig-ps3-petitboot b/target/linux/ps3/petitboot/defconfig-ps3-petitboot
new file mode 100644
index 000000000..72a2551af
--- /dev/null
+++ b/target/linux/ps3/petitboot/defconfig-ps3-petitboot
@@ -0,0 +1,19 @@
+# Configuration overrides
+
+CONFIG_TARGET_ps3=y
+
+CONFIG_BUSYBOX_CONFIG_GETTY=y
+CONFIG_BUSYBOX_CONFIG_FDISK=y
+CONFIG_BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE=y
+# CONFIG_BUSYBOX_CONFIG_BRCTL is not set
+# CONFIG_BUSYBOX_CONFIG_HTTPD is not set
+CONFIG_BUSYBOX_CONFIG_TFTP=y
+CONFIG_BUSYBOX_CONFIG_FEATURE_TFTP_GET=y
+
+# CONFIG_PACKAGE_udevtrigger is not set
+CONFIG_UDEV_ENABLE_DEBUG=y
+
+CONFIG_PETITBOOT_DEBUG=y
+CONFIG_PETITBOOT_PS3=y
+# CONFIG_PETITBOOT_AUTORUN_GUI is not set
+CONFIG_PETITBOOT_AUTORUN_CUI=y
diff --git a/target/linux/ps3/petitboot/profiles/000-Default.mk b/target/linux/ps3/petitboot/profiles/000-Default.mk
new file mode 100644
index 000000000..61cfc0796
--- /dev/null
+++ b/target/linux/ps3/petitboot/profiles/000-Default.mk
@@ -0,0 +1,19 @@
+#
+# Copyright (C) 2009 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Profile/Default
+ NAME:=Default PS3 Petitboot profile
+ PACKAGES:=-dnsmasq -iptables -opkg -ppp -ppp-mod-pppoe -kmod-ipt-nathelper \
+ -firewall -mtd -hotplug2 -swconfig \
+ kexec-tools ps3-utils petitboot
+endef
+
+define Profile/Default/Description
+ Default PS3 Petitboot profile
+endef
+$(eval $(call Profile,Default))
+
diff --git a/target/linux/ps3/petitboot/target.mk b/target/linux/ps3/petitboot/target.mk
new file mode 100644
index 000000000..845c4316d
--- /dev/null
+++ b/target/linux/ps3/petitboot/target.mk
@@ -0,0 +1,6 @@
+BOARDNAME:=Petitboot
+FEATURES+=fpu ramdisk
+
+define Target/Description
+ Build Petitboot bootloader
+endef