1 Commits
pyro ... danny

Author SHA1 Message Date
Andrei Gherzan
1ad98cf651 README: Modify dependencies for danny branch
Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
2012-10-29 20:18:20 +02:00
149 changed files with 1678 additions and 7727 deletions

View File

@@ -1,27 +0,0 @@
<!--
If you are reporting a new issue, make sure that we do not have any duplicates
already open. You can ensure this by searching the issue list for this
repository. If there is a duplicate, please close your issue and add a comment
to the existing issue instead.
-->
**Description**
<!--
Briefly describe the problem you are having in a few paragraphs.
-->
**Steps to reproduce the issue:**
1.
2.
3.
**Describe the results you received:**
**Describe the results you expected:**
**Additional information you deem important (e.g. issue happens only occasionally):**
**Additional details (revisions used, host distro, etc.):**

View File

@@ -1,16 +0,0 @@
<!--
Please make sure you've read and understood our contributing guidelines.
For additional information on the contribution guidelines:
https://wiki.yoctoproject.org/wiki/Contribution_Guidelines#General_Information
If this PR fixes an issue, make sure your description includes "fixes #xxxx".
If this PR connects to an issue, make sure your description includes "connected to #xxxx".
Please provide the following information:
-->
**- What I did**
**- How I did it**

7
.gitignore vendored
View File

@@ -1,7 +0,0 @@
build*
*~
.*.swp
*.orig
*.rej
*.log
docs/_build

142
README Normal file
View File

@@ -0,0 +1,142 @@
.8MMMMMMMM MMMMMMMM8.
MMM77$$$$$$7MM MM$$$$$$$$$MMM
MM$$$$$$$$$$$$M M$$$$$$$$$$$$MM
MO7$$$$$8$$$$$MMM$$$$$N7$$$$7DM
M7$$$$$$$M7$$MMM$$7M$$$$$$$7M.
M7$$$$$$$$MMMMMMM$$$$$$$$7M.
MM$$$$$$7MMMMMMM$$$$$$$MM
.MM$7MMMMMMMMMMMMM7$MM.
.MM8ZZZMMZZZZZZZMZZZ$MM.
.MOZZZZMMZZZZZZZZZM8ZZZZMM
MZZMMMZZZZ8MMMMM$ZZZ$MMZZMM
.MMMMMZZZZZZZZMMMZZZZZZZMMMMM:
M8ZZMMZZZZZZZZNMZZZZZZZZZMMZZMM
MZZZZMZZZZZZZZZMMMZZZZZZZZ8MZZZMM
.MZZZZMZZZZZZZZZMMMZZZZZZZZMMZZZ8M
.MZZZMMMZZZZZZZMMMMM$ZZZZZ$MMZZZMM
MMZZMMMMMM8MMNZZZZZ8MMMMMMMMMZZM
MMMMZMMMMMMZZZZZZZZZMMMM$ZZZMM.
MMZZZZZMMMZZZZZZZZZMMMZZZZZMM
MZZZZZZZMNZZZZZZZMMZZZZZZZM.
MMMMMZZZZZZZZZMMMM.
.MMDZZZZZZZMMD
.MMMMMMMM,
....
OpenEmbedded BSP Layer - RaspberryPi
--------------------------------------
This is the general hardware specific BSP overlay for the RaspberryPi device.
It should be used with openembedded-core (not old-style org.openembedded.dev).
More information can be found at:
http://www.raspberrypi.org/ (Official Site)
http://www.distant-earth.com/ (My Site)
Build scripts patched to support making a firmware image for the RaspberryPi with Angstrom can be found at:
http://github.com/Angstrom-distribution/setup-scripts
When not depending on meta-openembedded and not using systemd, you may need to
mask few recipes requiring systemd or other recipes not included in your distribution of choice.
You can achieve this by adding something like the following to local.conf:
BBMASK = "meta-raspberrypi/recipes-multimedia/libav|meta-raspberrypi/recipes-core/systemd"
You can adjust the BBMASK for any .bbappends that your distribution does not contain recipes for.
The core BSP part of meta-raspberrypi should work with different OpenEmbedded/Yocto
distributions and layer stacks, such as:
* Distro-less (only with OE-Core).
* Angstrom (main focus of testing).
* Yocto/Poky.
This layer in its entirety depends on:
URI: git://git.openembedded.org/openembedded-core
branch: master
revision: HEAD
URI: git://git.openembedded.org/meta-openembedded
branch: master
revision: HEAD
It is preferred that people raise pull requests using GIThub by forking the appropriate tree:
https://github.com/djwillis/
(More info on achieving this can be found at http://help.github.com/send-pull-requests/)
Yocto BSP Layer - RaspberryPi
-------------------------------
This layer depends on:
URI: git://git.yoctoproject.org/poky
branch: danny
revision: HEAD
URI: git://git.openembedded.org/meta-openembedded
branch: master
revision: 1571c2c566c51799eceea2aabe13d1c3116f36b3
How to use it:
1. source poky/oe-init-build-env rpi-build
2. Add needed layers to bblayers.conf:
- meta-raspberrypi
- meta-openembedded/meta-oe
3 Set MACHINE to raspberrypi in local.conf
4. bitbake rpi-hwup-image
5. dd to a SD card the generated sdimg file (use xzcat if rpi-sdimg.xz is used)
6. Boot your RPI.
Optional - compressed deployed files:
=====================================
1. Overwrite IMAGE_FSTYPES in local.conf
IMAGE_FSTYPES = "tar.bz2 ext3.xz rpi-sdimg.xz
2. Overwrite SDIMG_ROOTFS_TYPE in local.conf
SDIMG_ROOTFS_TYPE = "ext3.xz"
*Accommodate the values above to your own needs (ex: ext3 / ext4).
Optional - GPU firmware:
========================
By default the GPU firmware shipped is arm192. You can overwrite this using the
variable RPI_GPU_FIRMWARE with one of the values below.
# arm128 : 128M ARM, 128M GPU split
# arm192 : 192M ARM, 64M GPU split
# arm224 : 224M ARM, 32M GPU split
# arm240 : 240M ARM, 16M GPU split
Optional - Add purchased license codecs:
========================================
To add you own licenses use variables KEY_DECODE_MPG2 and KEY_DECODE_WVC1 in local.conf. Example:
KEY_DECODE_MPG2 = "12345678"
KEY_DECODE_WVC1 = "12345678"
You can supply more licenses separated by comma. Example:
KEY_DECODE_WVC1 = "0x12345678,0xabcdabcd,0x87654321"
Optional - Disable overscan:
============================
By default the GPU adds a black border around the video output to compensate for TVs
which cut off part of the image. To disable this set this variable in
local.conf:
DISALE_OVERSCAN = "0"
Optional - Set overclocking options:
====================================
The Raspberry PI can be overclocked. As of now overclocking up to the "Turbo
Mode" is officially supported by the raspbery and does not void warranty.
Check the config.txt for a detailed description of options and modes. Example:
# Turbo mode
ARM_FREQ = "1000"
CORE_FREQ = "500"
SDRAM_FREQ = "500"
OVER_VOLTAGE = "6"
Layer maintainer: John Willis <John.Willis at distant-earth.com>
Andrei Gherzan <andrei at gherzan.ro>

View File

@@ -1,55 +0,0 @@
# meta-raspberrypi
Yocto BSP layer for the Raspberry Pi boards - <http://www.raspberrypi.org/>.
[![Build Status](https://yocto-ci.resin.io/job/meta-raspberrypi1/badge/icon)](https://yocto-ci.resin.io/job/meta-raspberrypi1)
[![Build Status](https://yocto-ci.resin.io/job/meta-raspberrypi2/badge/icon)](https://yocto-ci.resin.io/job/meta-raspberrypi2)
[![Build Status](https://yocto-ci.resin.io/job/meta-raspberrypi3/badge/icon)](https://yocto-ci.resin.io/job/meta-raspberrypi3)
[![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/agherzan/meta-raspberrypi)
## Quick links
* Git repository web frontend:
<http://git.yoctoproject.org/cgit/cgit.cgi/meta-raspberrypi/>
* Mailing list (yocto mailing list): <yocto@yoctoproject.org>
* Issues management (Github Issues):
<https://github.com/agherzan/meta-raspberrypi/issues>
## Description
This is the general hardware specific BSP overlay for the RaspberryPi device.
More information can be found at: <http://www.raspberrypi.org/> (Official Site)
The core BSP part of meta-raspberrypi should work with different
OpenEmbedded/Yocto distributions and layer stacks, such as:
* Distro-less (only with OE-Core).
* Angstrom.
* Yocto/Poky (main focus of testing).
## Dependencies
This layer depends on:
* URI: git://git.yoctoproject.org/poky
* branch: pyro
* revision: HEAD
* URI: git://git.openembedded.org/meta-openembedded
* layers: meta-oe, meta-multimedia, meta-networking, meta-python
* branch: pyro
* revision: HEAD
## Quick Start
1. source poky/oe-init-build-env rpi-build
2. Add this layer to bblayers.conf and the dependencies above
3. Set MACHINE in local.conf to one of the supported boards
4. bitbake rpi-hwup-image
5. dd to a SD card the generated sdimg file (use xzcat if rpi-sdimg.xz is used)
6. Boot your RPI.
## Maintainers
* Andrei Gherzan `<andrei at gherzan.ro>`

View File

@@ -1,29 +0,0 @@
inherit linux-kernel-base
def get_dts(d, ver=None):
import re
staging_dir = d.getVar("STAGING_KERNEL_BUILDDIR")
dts = d.getVar("KERNEL_DEVICETREE")
# d.getVar() might return 'None' as a normal string
# leading to 'is None' check isn't enough.
# TODO: Investigate if this is a bug in bitbake
if ver is None or ver == "None":
''' if 'ver' isn't set try to grab the kernel version
from the kernel staging '''
ver = get_kernelversion_file(staging_dir)
return dts
def split_overlays(d, out, ver=None):
dts = get_dts(d, ver)
if out:
overlays = oe.utils.str_filter_out('\S+\-overlay\.dtb$', dts, d)
overlays = oe.utils.str_filter_out('\S+\.dtbo$', overlays, d)
else:
overlays = oe.utils.str_filter('\S+\-overlay\.dtb$', dts, d) + \
" " + oe.utils.str_filter('\S+\.dtbo$', dts, d)
return overlays

View File

@@ -1,5 +1,4 @@
inherit image_types
inherit linux-raspberrypi-base
#
# Create an image that can by written onto a SD card using dd.
@@ -14,129 +13,88 @@ inherit linux-raspberrypi-base
# Default Free space = 1.3x
# Use IMAGE_OVERHEAD_FACTOR to add more space
# <--------->
# 4MiB 40MiB SDIMG_ROOTFS
# 4KiB 20MiB SDIMG_ROOTFS
# <-----------------------> <----------> <---------------------->
# ------------------------ ------------ ------------------------
# | IMAGE_ROOTFS_ALIGNMENT | BOOT_SPACE | ROOTFS_SIZE |
# ------------------------ ------------ ------------------------
# ^ ^ ^ ^
# | | | |
# 0 4MiB 4MiB + 40MiB 4MiB + 40Mib + SDIMG_ROOTFS
# ------------------------ ------------ ------------------------ -------------------------------
# | IMAGE_ROOTFS_ALIGNMENT | BOOT_SPACE | ROOTFS_SIZE | IMAGE_ROOTFS_ALIGNMENT |
# ------------------------ ------------ ------------------------ -------------------------------
# ^ ^ ^ ^ ^
# | | | | |
# 0 4096 4KiB + 20MiB 4KiB + 20Mib + SDIMG_ROOTFS 4KiB + 20MiB + SDIMG_ROOTFS + 4KiB
# This image depends on the rootfs image
IMAGE_TYPEDEP_rpi-sdimg = "${SDIMG_ROOTFS_TYPE}"
# Set kernel and boot loader
IMAGE_BOOTLOADER ?= "bcm2835-bootfiles"
# Set initramfs extension
KERNEL_INITRAMFS ?= ""
# Kernel image name
SDIMG_KERNELIMAGE_raspberrypi ?= "kernel.img"
SDIMG_KERNELIMAGE_raspberrypi2 ?= "kernel7.img"
SDIMG_KERNELIMAGE_raspberrypi3-64 ?= "kernel8.img"
# Boot partition volume id
BOOTDD_VOLUME_ID ?= "${MACHINE}"
# Boot partition size [in KiB] (will be rounded up to IMAGE_ROOTFS_ALIGNMENT)
BOOT_SPACE ?= "40960"
# Boot partition size [in KiB]
BOOT_SPACE ?= "20480"
# Set alignment to 4MB [in KiB]
IMAGE_ROOTFS_ALIGNMENT = "4096"
# Use an uncompressed ext3 by default as rootfs
SDIMG_ROOTFS_TYPE ?= "ext3"
SDIMG_ROOTFS = "${IMGDEPLOYDIR}/${IMAGE_NAME}.rootfs.${SDIMG_ROOTFS_TYPE}"
SDIMG_ROOTFS = "${IMAGE_NAME}.rootfs.${SDIMG_ROOTFS_TYPE}"
RPI_GPU_FIRMWARE ?= "arm192"
IMAGE_DEPENDS_rpi-sdimg = " \
parted-native \
mtools-native \
dosfstools-native \
virtual/kernel:do_deploy \
virtual/kernel \
${IMAGE_BOOTLOADER} \
${@bb.utils.contains('KERNEL_IMAGETYPE', 'uImage', 'u-boot', '',d)} \
"
# SD card image name
SDIMG = "${IMGDEPLOYDIR}/${IMAGE_NAME}.rootfs.rpi-sdimg"
# Compression method to apply to SDIMG after it has been created. Supported
# compression formats are "gzip", "bzip2" or "xz". The original .rpi-sdimg file
# is kept and a new compressed file is created if one of these compression
# formats is chosen. If SDIMG_COMPRESSION is set to any other value it is
# silently ignored.
#SDIMG_COMPRESSION ?= ""
SDIMG = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.rpi-sdimg"
# Additional files and/or directories to be copied into the vfat partition from the IMAGE_ROOTFS.
FATPAYLOAD ?= ""
# SD card vfat partition image name
SDIMG_VFAT = "${IMAGE_NAME}.vfat"
SDIMG_LINK_VFAT = "${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.vfat"
IMAGEDATESTAMP = "${@time.strftime('%Y.%m.%d',time.gmtime())}"
IMAGE_CMD_rpi-sdimg () {
# Align partitions
BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE} + ${IMAGE_ROOTFS_ALIGNMENT} - 1)
BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE_ALIGNED} - ${BOOT_SPACE_ALIGNED} % ${IMAGE_ROOTFS_ALIGNMENT})
SDIMG_SIZE=$(expr ${IMAGE_ROOTFS_ALIGNMENT} + ${BOOT_SPACE_ALIGNED} + $ROOTFS_SIZE)
echo "Creating filesystem with Boot partition ${BOOT_SPACE_ALIGNED} KiB and RootFS $ROOTFS_SIZE KiB"
# Check if we are building with device tree support
DTS="${@get_dts(d)}"
SDIMG_SIZE=$(expr ${IMAGE_ROOTFS_ALIGNMENT} + ${BOOT_SPACE_ALIGNED} + $ROOTFS_SIZE + ${IMAGE_ROOTFS_ALIGNMENT})
# Initialize sdcard image file
dd if=/dev/zero of=${SDIMG} bs=1024 count=0 seek=${SDIMG_SIZE}
dd if=/dev/zero of=${SDIMG} bs=1 count=0 seek=$(expr 1024 \* ${SDIMG_SIZE})
# Create partition table
parted -s ${SDIMG} mklabel msdos
# Create boot partition and mark it as bootable
parted -s ${SDIMG} unit KiB mkpart primary fat32 ${IMAGE_ROOTFS_ALIGNMENT} $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT})
parted -s ${SDIMG} set 1 boot on
# Create rootfs partition to the end of disk
parted -s ${SDIMG} -- unit KiB mkpart primary ext2 $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT}) -1s
# Create rootfs partition
parted -s ${SDIMG} unit KiB mkpart primary ext2 $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT}) $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT} \+ ${ROOTFS_SIZE})
parted ${SDIMG} print
# Create a vfat image with boot files
BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDIMG} unit b print | awk '/ 1 / { print substr($4, 1, length($4 -1)) / 512 /2 }')
rm -f ${WORKDIR}/boot.img
mkfs.vfat -n "${BOOTDD_VOLUME_ID}" -S 512 -C ${WORKDIR}/boot.img $BOOT_BLOCKS
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/* ::/
if test -n "${DTS}"; then
# Device Tree Overlays are assumed to be suffixed by '-overlay.dtb' (4.1.x) or by '.dtbo' (4.4.9+) string and will be put in a dedicated folder
DT_OVERLAYS="${@split_overlays(d, 0)}"
DT_ROOT="${@split_overlays(d, 1)}"
# Copy board device trees to root folder
for DTB in $DT_ROOT; do
DTB_BASE_NAME=`basename ${DTB} .dtb`
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTB_BASE_NAME}.dtb ::${DTB_BASE_NAME}.dtb
done
# Copy device tree overlays to dedicated folder
mmd -i ${WORKDIR}/boot.img overlays
for DTB in $DT_OVERLAYS; do
DTB_EXT=${DTB##*.}
DTB_BASE_NAME=`basename ${DTB} ."${DTB_EXT}"`
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTB_BASE_NAME}.${DTB_EXT} ::overlays/${DTB_BASE_NAME}.${DTB_EXT}
done
fi
case "${KERNEL_IMAGETYPE}" in
"uImage")
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/u-boot.bin ::${SDIMG_KERNELIMAGE}
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}${KERNEL_INITRAMFS}-${MACHINE}.bin ::uImage
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/boot.scr ::boot.scr
;;
*)
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}${KERNEL_INITRAMFS}-${MACHINE}.bin ::${SDIMG_KERNELIMAGE}
;;
case "${RPI_GPU_FIRMWARE}" in
"arm128" | "arm192" | "arm224" | "arm240")
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/${RPI_GPU_FIRMWARE}_start.elf ::start.elf
;;
*)
bberror "RPI_GPU_FIRMWARE is undefined or value not recognised. Possible values: arm128, arm192, arm224 or arm240."
exit 1
;;
esac
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/config.txt ::
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/cmdline.txt ::
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/bootcode.bin ::
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/loader.bin ::
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin ::kernel.img
if [ -n ${FATPAYLOAD} ] ; then
echo "Copying payload into VFAT"
for entry in ${FATPAYLOAD} ; do
@@ -146,41 +104,18 @@ IMAGE_CMD_rpi-sdimg () {
fi
# Add stamp file
echo "${IMAGE_NAME}" > ${WORKDIR}/image-version-info
mcopy -i ${WORKDIR}/boot.img -v ${WORKDIR}/image-version-info ::
# Deploy vfat partition (for u-boot case only)
case "${KERNEL_IMAGETYPE}" in
"uImage")
cp ${WORKDIR}/boot.img ${IMGDEPLOYDIR}/${SDIMG_VFAT}
ln -sf ${SDIMG_VFAT} ${SDIMG_LINK_VFAT}
;;
*)
;;
esac
echo "${IMAGE_NAME}-${IMAGEDATESTAMP}" > ${WORKDIR}/image-version-info
mcopy -i ${WORKDIR}/boot.img -v ${WORKDIR}//image-version-info ::
# Burn Partitions
dd if=${WORKDIR}/boot.img of=${SDIMG} conv=notrunc seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync
# If SDIMG_ROOTFS_TYPE is a .xz file use xzcat
if echo "${SDIMG_ROOTFS_TYPE}" | egrep -q "*\.xz"
if [[ "$SDIMG_ROOTFS_TYPE" == *.xz ]]
then
xzcat ${SDIMG_ROOTFS} | dd of=${SDIMG} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync
else
dd if=${SDIMG_ROOTFS} of=${SDIMG} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync
fi
# Optionally apply compression
case "${SDIMG_COMPRESSION}" in
"gzip")
gzip -k9 "${SDIMG}"
;;
"bzip2")
bzip2 -k9 "${SDIMG}"
;;
"xz")
xz -k "${SDIMG}"
;;
esac
}
ROOTFS_POSTPROCESS_COMMAND += " rpi_generate_sysctl_config ; "

View File

@@ -2,13 +2,9 @@
BBPATH .= ":${LAYERDIR}"
# We have a recipes directory containing .bb and .bbappend files, add to BBFILES
BBFILES += "${LAYERDIR}/recipes*/*/*.bb \
BBFILES := "${BBFILES} ${LAYERDIR}/recipes*/*/*.bb \
${LAYERDIR}/recipes*/*/*.bbappend"
BBFILE_COLLECTIONS += "raspberrypi"
BBFILE_PATTERN_raspberrypi := "^${LAYERDIR}/"
BBFILE_PRIORITY_raspberrypi = "9"
# Additional license directories.
LICENSE_PATH += "${LAYERDIR}/files/custom-licenses"
BBFILE_PRIORITY_raspberrypi = "6"

View File

@@ -1,97 +0,0 @@
include conf/machine/include/rpi-default-settings.inc
include conf/machine/include/rpi-default-versions.inc
include conf/machine/include/rpi-default-providers.inc
SOC_FAMILY = "rpi"
include conf/machine/include/soc-family.inc
IMAGE_FSTYPES ?= "tar.bz2 ext3 rpi-sdimg"
XSERVER = " \
xserver-xorg \
${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "xserver-xorg-extension-glx", "", d)} \
${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "xf86-video-modesetting", "xf86-video-fbdev", d)} \
"
KERNEL_DEVICETREE ?= " \
bcm2708-rpi-0-w.dtb \
bcm2708-rpi-b.dtb \
bcm2708-rpi-b-plus.dtb \
bcm2709-rpi-2-b.dtb \
bcm2710-rpi-3-b.dtb \
bcm2708-rpi-cm.dtb \
bcm2710-rpi-cm3.dtb \
\
overlays/hifiberry-amp.dtbo \
overlays/hifiberry-dac.dtbo \
overlays/hifiberry-dacplus.dtbo \
overlays/hifiberry-digi.dtbo \
overlays/i2c-rtc.dtbo \
overlays/iqaudio-dac.dtbo \
overlays/iqaudio-dacplus.dtbo \
overlays/lirc-rpi.dtbo \
overlays/pitft22.dtbo \
overlays/pitft28-resistive.dtbo \
overlays/pitft35-resistive.dtbo \
overlays/pps-gpio.dtbo \
overlays/rpi-ft5406.dtbo \
overlays/w1-gpio.dtbo \
overlays/w1-gpio-pullup.dtbo \
overlays/pi3-disable-bt.dtbo \
overlays/pi3-miniuart-bt.dtbo \
overlays/vc4-kms-v3d.dtbo \
"
KERNEL_IMAGETYPE ?= "Image"
MACHINE_FEATURES += "apm usbhost keyboard vfat ext2 screen touchscreen alsa bluetooth wifi sdio"
# Raspberry Pi has no hardware clock
MACHINE_FEATURES_BACKFILL_CONSIDERED = "rtc"
MACHINE_EXTRA_RRECOMMENDS += " kernel-modules"
# Set Raspberrypi splash image
SPLASH = "psplash-raspberrypi"
def make_dtb_boot_files(d):
# Generate IMAGE_BOOT_FILES entries for device tree files listed in
# KERNEL_DEVICETREE.
alldtbs = d.getVar('KERNEL_DEVICETREE')
imgtyp = d.getVar('KERNEL_IMAGETYPE')
def transform(dtb):
if dtb.endswith('dtb'):
# eg: whatever/bcm2708-rpi-b.dtb has:
# DEPLOYDIR file: ${KERNEL_IMAGETYPE}-bcm2708-rpi-b.dtb
# destination: bcm2708-rpi-b.dtb
base = os.path.basename(dtb)
src = '{}-{}'.format(imgtyp, base)
dst = base
return '{};{}'.format(src, dst)
elif dtb.endswith('dtbo'):
# overlay dtb:
# eg: overlays/hifiberry-amp.dtbo has:
# DEPLOYDIR file: ${KERNEL_IMAGETYPE}-hifiberry-amp.dtbo
# destination: overlays/hifiberry-amp.dtbo
base = os.path.basename(dtb)
src = '{}-{}'.format(imgtyp, base)
dst = dtb
return '{};{}'.format(src, dtb)
return ' '.join([transform(dtb) for dtb in alldtbs.split(' ') if dtb])
IMAGE_BOOT_FILES ?= "bcm2835-bootfiles/* \
${@make_dtb_boot_files(d)} \
${@bb.utils.contains('KERNEL_IMAGETYPE', 'uImage', \
'${KERNEL_IMAGETYPE} u-boot.bin;${SDIMG_KERNELIMAGE} boot.scr', \
'${KERNEL_IMAGETYPE};${SDIMG_KERNELIMAGE}', d)} \
"
do_image_wic[depends] += " \
bcm2835-bootfiles:do_deploy \
${@bb.utils.contains('RPI_USE_U_BOOT', '1', 'u-boot:do_deploy', '',d)} \
"
# The kernel image is installed into the FAT32 boot partition and does not need
# to also be installed into the rootfs.
RDEPENDS_kernel-base = ""

View File

@@ -1,10 +1,7 @@
# RaspberryPi BSP default providers
PREFERRED_PROVIDER_virtual/kernel ?= "linux-raspberrypi"
PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
PREFERRED_PROVIDER_virtual/egl ?= "${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "mesa", "userland", d)}"
PREFERRED_PROVIDER_virtual/libgles2 ?= "${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "mesa", "userland", d)}"
PREFERRED_PROVIDER_virtual/libgl ?= "${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "mesa", "mesa-gl", d)}"
PREFERRED_PROVIDER_virtual/mesa ?= "${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "mesa", "mesa-gl", d)}"
PREFERRED_PROVIDER_libgbm ?= "${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "mesa", "mesa-gl", d)}"
PREFERRED_PROVIDER_jpeg ?= "jpeg"
PREFERRED_PROVIDER_virtual/kernel = "linux-raspberrypi"
PREFERRED_PROVIDER_virtual/xserver = "xserver-xorg"
PREFERRED_PROVIDER_virtual/egl ?= "vc-graphics-hardfp"
PREFERRED_PROVIDER_virtual/libgles2 ?= "vc-graphics-hardfp"
PREFERRED_PROVIDER_virtual/libgl ?= "vc-graphics-hardfp"

View File

@@ -1,3 +1,3 @@
# RaspberryPi BSP default versions
PREFERRED_VERSION_linux-raspberrypi ??= "4.9.%"
PREFERRED_VERSION_udev = "164"

View File

@@ -1,15 +1,10 @@
DEFAULTTUNE ?= "armv6"
DEFAULTTUNE ?= "arm1176jzfs"
require conf/machine/include/arm/arch-armv6.inc
TUNEVALID[arm1176jzfs] = "Enable arm1176jzfs specific processor optimizations"
TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "arm1176jzfs", "-mtune=arm1176jzf-s", "", d)}"
TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "vfp", "-mfpu=vfp", "", d)}"
AVAILTUNES += "arm1176jzfs arm1176jzfshf"
ARMPKGARCH_tune-arm1176jzfs = "arm1176jzfs"
ARMPKGARCH_tune-arm1176jzfshf = "arm1176jzfs"
AVAILTUNES += "arm1176jzfs"
TUNE_FEATURES_tune-arm1176jzfs = "${TUNE_FEATURES_tune-armv6} arm1176jzfs"
TUNE_FEATURES_tune-arm1176jzfshf = "${TUNE_FEATURES_tune-arm1176jzfs} callconvention-hard"
PACKAGE_EXTRA_ARCHS_tune-arm1176jzfs = "${PACKAGE_EXTRA_ARCHS_tune-armv6}"
PACKAGE_EXTRA_ARCHS_tune-arm1176jzfshf = "${PACKAGE_EXTRA_ARCHS_tune-armv6hf} arm1176jzfshf-vfp"

View File

@@ -1,6 +0,0 @@
#@TYPE: Machine
#@NAME: RaspberryPi Compute Module (CM1)
#@DESCRIPTION: Machine configuration for the RaspberryPi Compute Module (CM1)
MACHINEOVERRIDES = "raspberrypi:${MACHINE}"
include conf/machine/raspberrypi.conf

View File

@@ -1,6 +0,0 @@
#@TYPE: Machine
#@NAME: RaspberryPi Compute Module 3 (CM3)
#@DESCRIPTION: Machine configuration for the RaspberryPi Compute Module 3 (CM3)
MACHINEOVERRIDES = "raspberrypi2:${MACHINE}"
include conf/machine/raspberrypi2.conf

View File

@@ -1,13 +1,37 @@
#@TYPE: Machine
#@NAME: RaspberryPi Development Board
#@DESCRIPTION: Machine configuration for the RaspberryPi http://www.raspberrypi.org/ Board
#@MAINTAINER: John Willis
DEFAULTTUNE ?= "arm1176jzfshf"
include conf/machine/include/rpi-default-settings.inc
include conf/machine/include/rpi-default-versions.inc
include conf/machine/include/rpi-default-providers.inc
require conf/machine/include/tune-arm1176jzf-s.inc
include conf/machine/include/rpi-base.inc
SERIAL_CONSOLE ?= "115200 ttyAMA0"
IMAGE_FSTYPES ?= "tar.bz2 ext3 rpi-sdimg"
UBOOT_MACHINE = "rpi_config"
VC4_CMA_SIZE_raspberrypi ?= "cma-64"
SERIAL_CONSOLE = "115200 ttyAMA0"
MACHINE_KERNEL_PR = "r4"
XSERVER = " \
xserver-xorg \
xf86-input-evdev \
xf86-input-mouse \
xf86-input-keyboard \
xf86-video-fbdev \
"
KERNEL_IMAGETYPE = "Image"
MACHINE_FEATURES = "kernel26 apm usbgadget usbhost keyboard vfat ext2 screen touchscreen alsa bluetooth wifi sdio"
#RaspberryPi has no hardware clock
MACHINE_FEATURES_BACKFILL_CONSIDERED = "rtc"
MACHINE_EXTRA_RRECOMMENDS += " \
kernel-modules \
"
# Set default GPU firmware image to be shipped
RPI_GPU_FIRMWARE ?= "arm192"

View File

@@ -1,15 +0,0 @@
#@TYPE: Machine
#@NAME: RaspberryPi Zero WiFi Development Board
#@DESCRIPTION: Machine configuration for the RaspberryPi Zero WiFi board (https://www.raspberrypi.org/blog/raspberry-pi-zero-w-joins-family/)
DEFAULTTUNE ?= "arm1176jzfshf"
require conf/machine/include/tune-arm1176jzf-s.inc
include conf/machine/include/rpi-base.inc
MACHINE_EXTRA_RRECOMMENDS += "linux-firmware-bcm43430"
SDIMG_KERNELIMAGE ?= "kernel.img"
KERNEL_DEFCONFIG ?= "bcmrpi_defconfig"
UBOOT_MACHINE ?= "rpi_config"
SERIAL_CONSOLE ?= "115200 ttyS0"
VC4_CMA_SIZE ?= "cma-128"

View File

@@ -1,9 +0,0 @@
#@TYPE: Machine
#@NAME: RaspberryPi Zero Development Board
#@DESCRIPTION: Machine configuration for the RaspberryPi Zero board (https://www.raspberrypi.org/blog/raspberry-pi-zero)
MACHINEOVERRIDES = "raspberrypi:${MACHINE}"
include conf/machine/raspberrypi.conf
SERIAL_CONSOLE ?= "115200 ttyAMA0"
VC4_CMA_SIZE ?= "cma-128"

View File

@@ -1,13 +0,0 @@
#@TYPE: Machine
#@NAME: RaspberryPi 2 Development Board
#@DESCRIPTION: Machine configuration for the RaspberryPi 2
DEFAULTTUNE ?= "cortexa7thf-neon-vfpv4"
require conf/machine/include/tune-cortexa7.inc
include conf/machine/include/rpi-base.inc
SERIAL_CONSOLE ?= "115200 ttyAMA0"
UBOOT_MACHINE = "rpi_2_config"
VC4_CMA_SIZE ?= "cma-256"

View File

@@ -1,40 +0,0 @@
#@TYPE: Machine
#@NAME: RaspberryPi 3 Development Board
#@DESCRIPTION: Machine configuration for the RaspberryPi 3 in 64 bits mode
MACHINEOVERRIDES = "raspberrypi3:${MACHINE}"
MACHINE_EXTRA_RRECOMMENDS += "linux-firmware-bcm43430"
require conf/machine/include/arm/arch-armv8.inc
include conf/machine/include/rpi-base.inc
KERNEL_DEVICETREE = " \
broadcom/bcm2710-rpi-3-b.dtb \
broadcom/bcm2837-rpi-3-b.dtb \
\
overlays/hifiberry-amp.dtbo \
overlays/hifiberry-dac.dtbo \
overlays/hifiberry-dacplus.dtbo \
overlays/hifiberry-digi.dtbo \
overlays/i2c-rtc.dtbo \
overlays/iqaudio-dac.dtbo \
overlays/iqaudio-dacplus.dtbo \
overlays/lirc-rpi.dtbo \
overlays/pitft22.dtbo \
overlays/pitft28-resistive.dtbo \
overlays/pitft35-resistive.dtbo \
overlays/pps-gpio.dtbo \
overlays/rpi-ft5406.dtbo \
overlays/w1-gpio.dtbo \
overlays/w1-gpio-pullup.dtbo \
overlays/pi3-disable-bt.dtbo \
overlays/pi3-miniuart-bt.dtbo \
overlays/vc4-kms-v3d.dtbo \
"
SERIAL_CONSOLE ?= "115200 ttyS0"
VC4_CMA_SIZE ?= "cma-256"
UBOOT_MACHINE = "rpi_3_config"
MACHINE_FEATURES_append = " vc4graphics"

View File

@@ -1,15 +0,0 @@
#@TYPE: Machine
#@NAME: RaspberryPi 3 Development Board
#@DESCRIPTION: Machine configuration for the RaspberryPi 3
DEFAULTTUNE ?= "cortexa7thf-neon-vfpv4"
require conf/machine/include/tune-cortexa7.inc
include conf/machine/include/rpi-base.inc
MACHINE_EXTRA_RRECOMMENDS += "linux-firmware-bcm43430"
SDIMG_KERNELIMAGE ?= "kernel7.img"
KERNEL_DEFCONFIG ?= "bcm2709_defconfig"
UBOOT_MACHINE = "rpi_3_32b_config"
SERIAL_CONSOLE ?= "115200 ttyS0"
VC4_CMA_SIZE ?= "cma-256"

View File

@@ -1,225 +0,0 @@
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = _build
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
.PHONY: help
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " applehelp to make an Apple Help Book"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " epub3 to make an epub3"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " xml to make Docutils-native XML files"
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
@echo " coverage to run coverage check of the documentation (if enabled)"
@echo " dummy to check syntax errors of document sources"
.PHONY: clean
clean:
rm -rf $(BUILDDIR)/*
.PHONY: html
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
.PHONY: dirhtml
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
.PHONY: singlehtml
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
.PHONY: pickle
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
.PHONY: json
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
.PHONY: htmlhelp
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
.PHONY: qthelp
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/meta-raspberrypi.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/meta-raspberrypi.qhc"
.PHONY: applehelp
applehelp:
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
@echo
@echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
@echo "N.B. You won't be able to view it unless you put it in" \
"~/Library/Documentation/Help or install it in your application" \
"bundle."
.PHONY: devhelp
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/meta-raspberrypi"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/meta-raspberrypi"
@echo "# devhelp"
.PHONY: epub
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
.PHONY: epub3
epub3:
$(SPHINXBUILD) -b epub3 $(ALLSPHINXOPTS) $(BUILDDIR)/epub3
@echo
@echo "Build finished. The epub3 file is in $(BUILDDIR)/epub3."
.PHONY: latex
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
.PHONY: latexpdf
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
.PHONY: latexpdfja
latexpdfja:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through platex and dvipdfmx..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
.PHONY: text
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
.PHONY: man
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
.PHONY: texinfo
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
.PHONY: info
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
.PHONY: gettext
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
.PHONY: changes
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
.PHONY: linkcheck
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
.PHONY: doctest
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
.PHONY: coverage
coverage:
$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
@echo "Testing of coverage in the sources finished, look at the " \
"results in $(BUILDDIR)/coverage/python.txt."
.PHONY: xml
xml:
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
@echo
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
.PHONY: pseudoxml
pseudoxml:
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
@echo
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
.PHONY: dummy
dummy:
$(SPHINXBUILD) -b dummy $(ALLSPHINXOPTS) $(BUILDDIR)/dummy
@echo
@echo "Build finished. Dummy builder generates no files."

View File

@@ -1,343 +0,0 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# meta-raspberrypi documentation build configuration file, created by
# sphinx-quickstart on Tue May 23 09:51:24 2017.
#
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
# import os
# import sys
# sys.path.insert(0, os.path.abspath('.'))
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#
# needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = []
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
#
# source_suffix = ['.rst', '.md']
source_suffix = ['.rst', '.md']
# The encoding of source files.
#
# source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = 'meta-raspberrypi'
copyright = '2017, meta-raspberrypi contributors'
author = 'meta-raspberrypi contributors'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = 'pyro'
# The full version, including alpha/beta/rc tags.
release = 'pyro'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#
# today = ''
#
# Else, today_fmt is used as the format for a strftime call.
#
# today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This patterns also effect to html_static_path and html_extra_path
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
# The reST default role (used for this markup: `text`) to use for all
# documents.
#
# default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#
# add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#
# add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#
# show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
# modindex_common_prefix = []
# If true, keep warnings as "system message" paragraphs in the built documents.
# keep_warnings = False
# If true, `todo` and `todoList` produce output, else they produce nothing.
todo_include_todos = False
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = 'alabaster'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#
# html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
# html_theme_path = []
# The name for this set of Sphinx documents.
# "<project> v<release> documentation" by default.
#
# html_title = 'meta-raspberrypi vmaster'
# A shorter title for the navigation bar. Default is the same as html_title.
#
# html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#
# html_logo = None
# The name of an image file (relative to this directory) to use as a favicon of
# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#
# html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
#
# html_extra_path = []
# If not None, a 'Last updated on:' timestamp is inserted at every page
# bottom, using the given strftime format.
# The empty string is equivalent to '%b %d, %Y'.
#
# html_last_updated_fmt = None
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#
# html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#
# html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#
# html_additional_pages = {}
# If false, no module index is generated.
#
# html_domain_indices = True
# If false, no index is generated.
#
# html_use_index = True
# If true, the index is split into individual pages for each letter.
#
# html_split_index = False
# If true, links to the reST sources are added to the pages.
#
# html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#
# html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#
# html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#
# html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
# html_file_suffix = None
# Language to be used for generating the HTML full-text search index.
# Sphinx supports the following languages:
# 'da', 'de', 'en', 'es', 'fi', 'fr', 'h', 'it', 'ja'
# 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr', 'zh'
#
# html_search_language = 'en'
# A dictionary with options for the search language support, empty by default.
# 'ja' uses this config value.
# 'zh' user can custom change `jieba` dictionary path.
#
# html_search_options = {'type': 'default'}
# The name of a javascript file (relative to the configuration directory) that
# implements a search results scorer. If empty, the default will be used.
#
# html_search_scorer = 'scorer.js'
# Output file base name for HTML help builder.
htmlhelp_basename = 'meta-raspberrypidoc'
# -- Options for LaTeX output ---------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#
# 'preamble': '',
# Latex figure (float) alignment
#
# 'figure_align': 'htbp',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'meta-raspberrypi.tex', 'meta-raspberrypi Documentation',
'meta-raspberrypi contributors', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#
# latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#
# latex_use_parts = False
# If true, show page references after internal links.
#
# latex_show_pagerefs = False
# If true, show URL addresses after external links.
#
# latex_show_urls = False
# Documents to append as an appendix to all manuals.
#
# latex_appendices = []
# It false, will not define \strong, \code, itleref, \crossref ... but only
# \sphinxstrong, ..., \sphinxtitleref, ... To help avoid clash with user added
# packages.
#
# latex_keep_old_macro_names = True
# If false, no module index is generated.
#
# latex_domain_indices = True
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, 'meta-raspberrypi', 'meta-raspberrypi Documentation',
[author], 1)
]
# If true, show URL addresses after external links.
#
# man_show_urls = False
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, 'meta-raspberrypi', 'meta-raspberrypi Documentation',
author, 'meta-raspberrypi', 'One line description of project.',
'Miscellaneous'),
]
# Documents to append as an appendix to all manuals.
#
# texinfo_appendices = []
# If false, no module index is generated.
#
# texinfo_domain_indices = True
# How to display URL addresses: 'footnote', 'no', or 'inline'.
#
# texinfo_show_urls = 'footnote'
# If true, do not generate a @detailmenu in the "Top" node's menu.
#
# texinfo_no_detailmenu = False
source_parsers = {
'.md': 'recommonmark.parser.CommonMarkParser',
}

View File

@@ -1,38 +0,0 @@
# Contributing
## Mailing list
The main communication tool we use is a mailing list:
* <yocto@yoctoproject.org>
* <https://lists.yoctoproject.org/listinfo/yocto>
Feel free to ask any kind of questions but always prepend your email subject
with "[meta-raspberrypi]". This is because we use the 'yocto' mailing list and
not a perticular 'meta-raspberrypi' mailing list.
## Patches and pull requests
All the contributions should be compliant with the openembedded patch
guidelines: <http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines>
To contribute to this project you should send pull requests to the github mirror
(<https://github.com/agherzan/meta-raspberrypi>). **Additionally** you can send
the patches for review to the above specified mailing list.
When creating patches for the mailing list, please use something like:
git format-patch -s --subject-prefix='meta-raspberrypi][PATCH' origin
When sending patches to the mailing list, please use something like:
git send-email --to yocto@yoctoproject.org <generated patch>
## Github issues
In order to manage and trace the meta-raspberrypi issues, we use github issues:
<https://github.com/agherzan/meta-raspberrypi/issues>
If you push patches which have a github issue associated, please provide the
issue number in the commit log just before "Signed-off-by" line(s). Example line
for a bug:
`[Issue #13]`

View File

@@ -1,9 +0,0 @@
# Extra apps
## omxplayer
omxplayer depends on libav which has a commercial license. So in order to be
able to compile omxplayer you will need to whiteflag the commercial
license in your local.conf:
LICENSE_FLAGS_WHITELIST = "commercial"

View File

@@ -1,180 +0,0 @@
# Optional build configuration
There are a set of ways in which a user can influence different paramenters of
the build. We list here the ones that are closely related to this BSP or
specific to it. For the rest please check:
<http://www.yoctoproject.org/docs/latest/ref-manual/ref-manual.html>
## Compressed deployed files
1. Overwrite IMAGE_FSTYPES in local.conf
* `IMAGE_FSTYPES = "tar.bz2 ext3.xz"`
2. Overwrite SDIMG_ROOTFS_TYPE in local.conf
* `SDIMG_ROOTFS_TYPE = "ext3.xz"`
3. Overwrite SDIMG_COMPRESSION in local.conf
* `SDIMG_COMPRESSION = "xz"`
Accommodate the values above to your own needs (ex: ext3 / ext4).
## GPU memory
* `GPU_MEM`: GPU memory in megabyte. Sets the memory split between the ARM and
GPU. ARM gets the remaining memory. Min 16. Default 64.
* `GPU_MEM_256`: GPU memory in megabyte for the 256MB Raspberry Pi. Ignored by
the 512MB RP. Overrides gpu_mem. Max 192. Default not set.
* `GPU_MEM_512`: GPU memory in megabyte for the 512MB Raspberry Pi. Ignored by
the 256MB RP. Overrides gpu_mem. Max 448. Default not set.
* `GPU_MEM_1024`: GPU memory in megabyte for the 1024MB Raspberry Pi. Ignored by
the 256MB/512MB RP. Overrides gpu_mem. Max 944. Default not set.
## Add purchased license codecs
To add you own licenses use variables `KEY_DECODE_MPG2` and `KEY_DECODE_WVC1` in
local.conf. Example:
KEY_DECODE_MPG2 = "12345678"
KEY_DECODE_WVC1 = "12345678"
You can supply more licenses separated by comma. Example:
KEY_DECODE_WVC1 = "0x12345678,0xabcdabcd,0x87654321"
## Disable overscan
By default the GPU adds a black border around the video output to compensate for
TVs which cut off part of the image. To disable this set this variable in
local.conf:
DISABLE_OVERSCAN = "1"
## Set overclocking options
The Raspberry PI can be overclocked. As of now overclocking up to the "Turbo
Mode" is officially supported by the raspbery and does not void warranty. Check
the config.txt for a detailed description of options and modes. Example turbo
mode:
ARM_FREQ = "1000"
CORE_FREQ = "500"
SDRAM_FREQ = "500"
OVER_VOLTAGE = "6"
## Video camera support with V4L2 drivers
Set this variable to enable support for the video camera (Linux 3.12.4+
required):
VIDEO_CAMERA = "1"
## Enable offline compositing support
Set this variable to enable support for dispmanx offline compositing:
DISPMANX_OFFLINE = "1"
This will enable the firmware to fall back to off-line compositing of Dispmanx
elements. Normally the compositing is done on-line, during scanout, but cannot
handle too many elements. With off-line enabled, an off-screen buffer is
allocated for compositing. When scene complexity (number and sizes
of elements) is high, compositing will happen off-line into the buffer.
Heavily recommended for Wayland/Weston.
See: <http://wayland.freedesktop.org/raspberrypi.html>
## Enable kgdb over console support
To add the kdbg over console (kgdboc) parameter to the kernel command line, set
this variable in local.conf:
ENABLE_KGDB = "1"
## Boot to U-Boot
To have u-boot load kernel image, set in your local.conf:
KERNEL_IMAGETYPE = "uImage"
This will make kernel.img be u-boot image which will load uImage. By default,
kernel.img is the actual kernel image (ex. Image).
## Image with Initramfs
To build an initramfs image:
* Set this 3 kernel variables (in linux-raspberrypi.inc for example)
- kernel_configure_variable BLK_DEV_INITRD y
- kernel_configure_variable INITRAMFS_SOURCE ""
- kernel_configure_variable RD_GZIP y
* Set the yocto variables (in linux-raspberrypi.inc for example)
- `INITRAMFS_IMAGE = "<a name for your initramfs image>"`
- `INITRAMFS_IMAGE_BUNDLE = "1"`
* Set the meta-rasberrypi variable (in raspberrypi.conf for example)
- `KERNEL_INITRAMFS = "-initramfs"`
## Enable SPI bus
When using device tree kernels, set this variable to enable the SPI bus:
ENABLE_SPI_BUS = "1"
## Enable I2C
When using device tree kernels, set this variable to enable I2C:
ENABLE_I2C = "1"
## Enable PiTFT support
Basic support for using PiTFT screens can be enabled by adding below in
local.conf:
* `MACHINE_FEATURES += "pitft"`
- This will enable SPI bus and i2c device-trees, it will also setup
framebuffer for console and x server on PiTFT.
NOTE: To get this working the overlay for the PiTFT model must be build, added
and specified as well (dtoverlay=<driver> in config.txt).
Below is a list of currently supported PiTFT models in meta-raspberrypi, the
modelname should be added as a MACHINE_FEATURES in local.conf like below:
MACHINE_FEATURES += "pitft <modelname>"
List of currently supported models:
* pitft22
* pitft28r
* pitft35r
## Misc. display
If you would like to use the Waveshare "C" 1024×600, 7 inch Capacitive Touch
Screen LCD, HDMI interface (<http://www.waveshare.com/7inch-HDMI-LCD-C.htm>) Rev
2.1, please set the following in your local.conf:
WAVESHARE_1024X600_C_2_1 = "1"
## Enable UART
RaspberryPi 0, 1, 2 and CM will have UART console enabled by default.
RaspberryPi 0 WiFi and 3 does not have the UART enabled by default because this
needs a fixed core frequency and enable_uart wil set it to the minimum. Certain
operations - 60fps h264 decode, high quality deinterlace - which aren't
performed on the ARM may be affected, and we wouldn't want to do that to users
who don't want to use the serial port. Users who want serial console support on
RaspberryPi3 will have to explicitely set in local.conf:
ENABLE_UART = "1"
Ref.:
* <https://github.com/raspberrypi/firmware/issues/553>
* <https://github.com/RPi-Distro/repo/issues/22>

View File

@@ -1,26 +0,0 @@
.. meta-raspberrypi documentation master file, created by
sphinx-quickstart on Tue May 23 09:51:24 2017.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to meta-raspberrypi's documentation!
============================================
Contents:
.. toctree::
:maxdepth: 2
readme
layer-contents
extra-build-config
extra-apps
contributing
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

View File

@@ -1,24 +0,0 @@
# Layer Contents
## Supported Machines
* raspberrypi
* raspberrypi0
* raspberrypi0-wifi
* raspberrypi2
* raspberrypi3
* raspberrypi3-64 (64 bit kernel & userspace)
* raspberrypi-cm (dummy alias for raspberrypi)
* raspberrypi-cm3 (dummy alias for raspberrypi2)
## Images
* rpi-hwup-image
* Hardware up image
* rpi-basic-image
* Based on rpi-hwup-image with some added features (ex: splash)
* rpi-test-image
* Image based on rpi-basic-image which includes most of the packages in this
layer and some media samples.

View File

@@ -1 +0,0 @@
../README.md

View File

@@ -1,25 +0,0 @@
Copyright (c) 2012, Broadcom Europe Ltd
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -5,38 +5,38 @@ SECTION = "base"
HOMEPAGE = "http://www.open.com.au/mikem/bcm2835"
AUTHOR = "Mike McCauley (mikem@open.com.au)"
LICENSE = "GPLv2"
LICENSE = "GPL-2.0"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
PR = "r0"
COMPATIBLE_MACHINE = "raspberrypi"
SRC_URI = "http://www.airspayce.com/mikem/bcm2835/bcm2835-${PV}.tar.gz"
SRC_URI = "http://www.open.com.au/mikem/bcm2835/bcm2835-1.8.tar.gz"
SRC_URI[md5sum] = "b5dc426b4ff258bb1397442f98e40236"
SRC_URI[sha256sum] = "b9fd10f7a80aadaed28a77168709b7c519568a63b6e98d0a50e9c5fe31bea6bb"
SRC_URI[md5sum] = "cca8500049d4ebf9087de4bd1601d185"
SRC_URI[sha256sum] = "64be77b10aaf48ecb2a9022e13057f3b564093916875c0fc56373b4142dd5cae"
PACKAGES += "${PN}-tests"
FILES_${PN} = ""
FILES_${PN}-tests = "${libdir}/${BPN}"
FILES_${PN}-dbg += "${libdir}/${BPN}/.debug"
inherit autotools
do_compile_append() {
# Now compiling the examples provided by the package
mkdir -p ${B}/examples
for file in `ls ${S}/examples`; do
${CC} ${LDFLAGS} ${S}/examples/${file}/${file}.c -o ${B}/examples/${file} -Bstatic -L${B}/src -lbcm2835 -I${S}/src
#Now compiling the examples provided by the package
for file in examples/*
do
${CC} ${file}/${file##*/}.c -o ${file}/${file##*/} -Bstatic -L${S}/src -lbcm2835 -I${S}/src
done
}
do_install_append() {
install -d ${D}/${libdir}/${BPN}
for file in ${B}/examples/*
for file in examples/*
do
install -m 0755 ${file} ${D}/${libdir}/${BPN}
install -m 0755 ${file}/${file##*/} ${D}/${libdir}/${BPN}
done
}
PACKAGES += "${PN}-tests"
RDEPENDS_${PN}-dev = ""
FILES_${PN} = ""
FILES_${PN}-tests = "${libdir}/${BPN}"
FILES_${PN}-dbg += "${libdir}/${BPN}/.debug"

View File

@@ -0,0 +1,34 @@
DESCRIPTION = "Closed source binary files to help boot the ARM on the BCM2835."
LICENSE = "Proprietary"
LIC_FILES_CHKSUM = "file://LICENCE.broadcom;md5=e86e693d19572ee64cc8b17fb062faa9"
include ../common/firmware.inc
RDEPENDS_${PN} = "rpi-config"
COMPATIBLE_MACHINE = "raspberrypi"
SRC_URI = " \
git://github.com/raspberrypi/firmware.git;protocol=git;branch=master \
"
S = "${WORKDIR}/git/boot"
PR = "r2"
addtask deploy before do_package after do_install
do_deploy() {
install -d ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles
for i in *.elf ; do
cp $i ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles
done
for i in *.bin ; do
cp $i ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles
done
# Add stamp in deploy directory
touch ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/${PN}-${PV}.stamp
}
PACKAGE_ARCH = "${MACHINE_ARCH}"

View File

@@ -0,0 +1,46 @@
DESCRIPTION = "Commented config.txt file for the Raspberry Pi. \
The Raspberry Pi config.txt file is read by the GPU before \
the ARM core is initialised. It can be used to set various \
system configuration parameters."
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
COMPATIBLE_MACHINE = "raspberrypi"
SRCREV = "afeaed02ba5f01298dec3ac4e1bd98f27bcd876e"
SRC_URI = "git://github.com/Evilpaul/RPi-config.git;protocol=git;branch=master \
"
S = "${WORKDIR}/git"
PR = "r1"
addtask deploy before do_package after do_install
do_deploy() {
install -d ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles
cp config.txt ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/
if [ -n "${KEY_DECODE_MPG2}" ]; then
sed -i '/#decode_MPG2/ c\decode_MPG2=${KEY_DECODE_MPG2}' ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/config.txt
fi
if [ -n "${KEY_DECODE_WVC1}" ]; then
sed -i '/#decode_WVC1/ c\decode_MVC1=${KEY_DECODE_WVC1}' ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/config.txt
fi
if [ -n "${DISABLE_OVERSCAN}" ]; then
sed -i '/#disable_overscan/ c\disable_overscan=${DISABLE_OVERSCAN}' ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/config.txt
fi
if [ -n "${ARM_FREQ}" ]; then
sed -i '/#arm_freq/ c\arm_freq=${ARM_FREQ}' ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/config.txt
fi
if [ -n "${CORE_FREQ}" ]; then
sed -i '/#core_freq/ c\core_freq=${CORE_FREQ}' ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/config.txt
fi
if [ -n "${SDRAM_FREQ}" ]; then
sed -i '/#sdram_freq/ c\sdram_freq=${SDRAM_FREQ}' ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/config.txt
fi
if [ -n "${OVER_VOLTAGE}" ]; then
sed -i '/#over_voltage/ c\over_voltage=${OVER_VOLTAGE}' ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/config.txt
fi
}
PACKAGE_ARCH = "${MACHINE_ARCH}"

View File

@@ -0,0 +1,6 @@
# 13/09/2012 firmware; this can be overridden from distro config
RPIFW_SRCREV ?= "b616053edb93713efa25299cb4ea7efa439dcb61"
RPIFW_DATE ?= "20120913"
SRCREV = "${RPIFW_SRCREV}"
PV = "${RPIFW_DATE}"

View File

@@ -1,6 +1,8 @@
CONFLICTS = "vc-graphics"
VCDIR = "hardfp/opt/vc"
require vc-graphics.inc
PR = "${INCPR}.0"

View File

@@ -1,6 +1,8 @@
CONFLICTS = "vc-graphics-hardfp"
VCDIR = "opt/vc"
require vc-graphics.inc
PR = "${INCPR}.0"

View File

@@ -3,19 +3,18 @@ LICENSE = "Proprietary"
LIC_FILES_CHKSUM = "file://LICENCE;md5=86e53f5f5909ee66900418028de11780"
PROVIDES = "virtual/libgles2 virtual/egl"
PROVIDES = "virtual/libgl virtual/libgles2 virtual/egl"
COMPATIBLE_MACHINE = "raspberrypi"
include recipes-bsp/common/firmware.inc
include ../common/firmware.inc
SRC_URI += " \
file://egl.pc \
file://vchiq.sh \
"
SRC_URI = "git://github.com/raspberrypi/firmware.git;protocol=git;branch=master\
file://egl.pc \
file://vchiq.sh"
S = "${RPIFW_S}/${VCDIR}"
S = "${WORKDIR}/git/${VCDIR}"
INCPR = "r1"
INCPR = "r0"
inherit pkgconfig update-rc.d
@@ -49,8 +48,6 @@ INITSCRIPT_PARAMS = "start 03 S ."
FILES_${PN} = "${bindir}/* \
${sbindir}/* \
${libdir}/lib*.so \
${sysconfdir}/init.d \
${libdir}/plugins"
${sysconfdir}/init.d"
FILES_${PN}-dev = "${libdir}/pkgconfig \
${includedir}"
FILES_${PN}-dbg += "${libdir}/plugins/.debug"

View File

@@ -1,39 +0,0 @@
DESCRIPTION = "Closed source binary files to help boot the ARM on the BCM2835."
LICENSE = "Proprietary"
LIC_FILES_CHKSUM = "file://LICENCE.broadcom;md5=4a4d169737c0786fb9482bb6d30401d1"
inherit deploy
include recipes-bsp/common/firmware.inc
RDEPENDS_${PN} = "rpi-config"
COMPATIBLE_MACHINE = "raspberrypi"
S = "${RPIFW_S}/boot"
PR = "r3"
do_deploy() {
install -d ${DEPLOYDIR}/${PN}
for i in ${S}/*.elf ; do
cp $i ${DEPLOYDIR}/${PN}
done
for i in ${S}/*.dat ; do
cp $i ${DEPLOYDIR}/${PN}
done
for i in ${S}/*.bin ; do
cp $i ${DEPLOYDIR}/${PN}
done
# Add stamp in deploy directory
touch ${DEPLOYDIR}/${PN}/${PN}-${PV}.stamp
}
addtask deploy before do_package after do_install
do_deploy[dirs] += "${DEPLOYDIR}/${PN}"
PACKAGE_ARCH = "${MACHINE_ARCH}"

View File

@@ -1,140 +0,0 @@
DESCRIPTION = "Commented config.txt file for the Raspberry Pi. \
The Raspberry Pi config.txt file is read by the GPU before \
the ARM core is initialised. It can be used to set various \
system configuration parameters."
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
COMPATIBLE_MACHINE = "raspberrypi"
SRCREV = "648ffc470824c43eb0d16c485f4c24816b32cd6f"
SRC_URI = "git://github.com/Evilpaul/RPi-config.git;protocol=git;branch=master \
"
S = "${WORKDIR}/git"
PR = "r5"
PITFT="${@bb.utils.contains("MACHINE_FEATURES", "pitft", "1", "0", d)}"
PITFT22="${@bb.utils.contains("MACHINE_FEATURES", "pitft22", "1", "0", d)}"
PITFT28r="${@bb.utils.contains("MACHINE_FEATURES", "pitft28r", "1", "0", d)}"
PITFT35r="${@bb.utils.contains("MACHINE_FEATURES", "pitft35r", "1", "0", d)}"
VC4GRAPHICS="${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "1", "0", d)}"
inherit deploy
do_deploy() {
install -d ${DEPLOYDIR}/bcm2835-bootfiles
cp ${S}/config.txt ${DEPLOYDIR}/bcm2835-bootfiles/
if [ -n "${KEY_DECODE_MPG2}" ]; then
sed -i '/#decode_MPG2/ c\decode_MPG2=${KEY_DECODE_MPG2}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
if [ -n "${KEY_DECODE_WVC1}" ]; then
sed -i '/#decode_WVC1/ c\decode_WVC1=${KEY_DECODE_WVC1}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
if [ -n "${DISABLE_OVERSCAN}" ]; then
sed -i '/#disable_overscan/ c\disable_overscan=${DISABLE_OVERSCAN}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
if [ -n "${ARM_FREQ}" ]; then
sed -i '/#arm_freq/ c\arm_freq=${ARM_FREQ}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
if [ -n "${CORE_FREQ}" ]; then
sed -i '/#core_freq/ c\core_freq=${CORE_FREQ}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
if [ -n "${SDRAM_FREQ}" ]; then
sed -i '/#sdram_freq/ c\sdram_freq=${SDRAM_FREQ}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
if [ -n "${OVER_VOLTAGE}" ]; then
sed -i '/#over_voltage/ c\over_voltage=${OVER_VOLTAGE}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
# GPU memory
if [ -n "${GPU_MEM}" ]; then
sed -i '/#gpu_mem=/ c\gpu_mem=${GPU_MEM}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
if [ -n "${GPU_MEM_256}" ]; then
sed -i '/#gpu_mem_256/ c\gpu_mem_256=${GPU_MEM_256}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
if [ -n "${GPU_MEM_512}" ]; then
sed -i '/#gpu_mem_512/ c\gpu_mem_512=${GPU_MEM_512}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
if [ -n "${GPU_MEM_1024}" ]; then
sed -i '/#gpu_mem_1024/ c\gpu_mem_1024=${GPU_MEM_1024}' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
# Video camera support
if [ -n "${VIDEO_CAMERA}" ]; then
echo "# Enable video camera" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
echo "start_x=1" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
# Offline compositing support
if [ -n "${DISPMANX_OFFLINE}" ]; then
echo "# Enable offline compositing" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
echo "dispmanx_offline=1" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
# SPI bus support
if [ -n "${ENABLE_SPI_BUS}" ] || [ "${PITFT}" = "1" ]; then
echo "# Enable SPI bus" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
echo "dtparam=spi=on" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
if [ -n "${ENABLE_I2C}" ] || [ "${PITFT}" = "1" ]; then
echo "# Enable I2C" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
echo "dtparam=i2c1=on" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
echo "dtparam=i2c_arm=on" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
# PiTFT22 display support
if [ "${PITFT22}" = "1" ]; then
echo "# Enable PITFT22 display" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
echo "dtoverlay=pitft22,rotate=270,speed=32000000,txbuflen=32768" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
if [ "${PITFT28r}" = "1" ]; then
echo "# Enable PITFT28r display" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
echo "dtoverlay=pitft28-resistive,rotate=90,speed=32000000,txbuflen=32768" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
if [ "${PITFT35r}" = "1" ]; then
echo "# Enable PITFT35r display" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
echo "dtoverlay=pitft35-resistive,rotate=90,speed=42000000,fps=20" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
# UART support
if [ "${ENABLE_UART}" = "1" ]; then
echo "# Enable UART" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
echo "enable_uart=1" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
# VC4 Graphics support
if [ "${VC4GRAPHICS}" = "1" ]; then
echo "# Enable VC4 Graphics" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
echo "dtoverlay=vc4-kms-v3d,${VC4_CMA_SIZE}" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
# Waveshare "C" 1024x600 7" Rev2.1 IPS capacitive touch (http://www.waveshare.com/7inch-HDMI-LCD-C.htm)
if [ "${WAVESHARE_1024X600_C_2_1}" = "1" ]; then
echo "# Waveshare \"C\" 1024x600 7\" Rev2.1 IPS capacitive touch screen" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
echo "max_usb_current=1" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
echo "hdmi_group=2" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
echo "hdmi_mode=87" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
echo "hdmi_cvt 1024 600 60 6 0 0 0" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
echo "hdmi_drive=1" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
fi
}
do_deploy_append_raspberrypi3-64() {
# Device Tree support
echo "# Load correct Device Tree for Aarch64" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
echo "device_tree=bcm2710-rpi-3-b.dtb" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
}
addtask deploy before do_package after do_install
do_deploy[dirs] += "${DEPLOYDIR}/bcm2835-bootfiles"
PACKAGE_ARCH = "${MACHINE_ARCH}"

View File

@@ -1,9 +0,0 @@
RPIFW_DATE ?= "20171029"
RPIFW_SRC_URI ?= "https://github.com/raspberrypi/firmware/archive/1.${RPIFW_DATE}.tar.gz"
RPIFW_S ?= "${WORKDIR}/firmware-1.${RPIFW_DATE}"
SRC_URI = "${RPIFW_SRC_URI}"
SRC_URI[md5sum] = "4d27c1888a7bab3097471906e7b4a319"
SRC_URI[sha256sum] = "46ce28c8d87ef22bdcc57ac1836ca3f04d1ec6f46580ff5a30bf76b3c0822117"
PV = "${RPIFW_DATE}"

View File

@@ -1 +1,2 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
PRINC = "1"

View File

@@ -1,3 +0,0 @@
fdt addr ${fdt_addr} && fdt get value bootargs /chosen bootargs
fatload mmc 0:1 ${kernel_addr_r} uImage
bootm ${kernel_addr_r} - ${fdt_addr}

View File

@@ -1,21 +0,0 @@
SUMMARY = "U-boot boot scripts for Raspberry Pi"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
COMPATIBLE_MACHINE = "rpi"
DEPENDS = "u-boot-mkimage-native"
SRC_URI = "file://boot.cmd"
do_compile() {
mkimage -A arm -T script -C none -n "Boot script" -d "${WORKDIR}/boot.cmd" boot.scr
}
inherit deploy
do_deploy() {
install -d ${DEPLOYDIR}
install -m 0644 boot.scr ${DEPLOYDIR}
}
addtask do_deploy after do_compile before do_build

View File

@@ -1 +0,0 @@
RDEPENDS_${PN}_append_rpi = " rpi-u-boot-scr"

View File

@@ -1,26 +0,0 @@
From b4f2b77472aeb967d3a7595e8a965785c7a37c87 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Tue, 16 Feb 2016 16:40:46 +0000
Subject: [PATCH 1/4] bcm43xx: Add bcm43xx-3wire variant
---
tools/hciattach.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tools/hciattach.c b/tools/hciattach.c
index 59a76a7..5861d33 100644
--- a/tools/hciattach.c
+++ b/tools/hciattach.c
@@ -1144,6 +1144,9 @@ struct uart_t uart[] = {
{ "bcm43xx", 0x0000, 0x0000, HCI_UART_H4, 115200, 3000000,
FLOW_CTL, DISABLE_PM, NULL, bcm43xx, NULL },
+ { "bcm43xx-3wire", 0x0000, 0x0000, HCI_UART_3WIRE, 115200, 3000000,
+ 0, DISABLE_PM, NULL, bcm43xx, NULL },
+
{ "ath3k", 0x0000, 0x0000, HCI_UART_ATH3K, 115200, 115200,
FLOW_CTL, DISABLE_PM, NULL, ath3k_ps, ath3k_pm },
--
1.9.1

View File

@@ -1,37 +0,0 @@
From e145c9621f976063e5c573db1f2053d906f63427 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Tue, 16 Feb 2016 16:39:09 +0000
Subject: [PATCH 2/4] bcm43xx: The UART speed must be reset after the firmware download
---
tools/hciattach_bcm43xx.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/tools/hciattach_bcm43xx.c b/tools/hciattach_bcm43xx.c
index 81f38cb..0b792e0 100644
--- a/tools/hciattach_bcm43xx.c
+++ b/tools/hciattach_bcm43xx.c
@@ -366,11 +366,8 @@ int bcm43xx_init(int fd, int def_speed, int speed, struct termios *ti,
return -1;
if (bcm43xx_locate_patch(FIRMWARE_DIR, chip_name, fw_path)) {
- fprintf(stderr, "Patch not found, continue anyway\n");
+ fprintf(stderr, "Patch not found for %s, continue anyway\n", chip_name);
} else {
- if (bcm43xx_set_speed(fd, ti, speed))
- return -1;
-
if (bcm43xx_load_firmware(fd, fw_path))
return -1;
@@ -380,6 +377,7 @@ int bcm43xx_init(int fd, int def_speed, int speed, struct termios *ti,
return -1;
}
+ sleep(1);
if (bcm43xx_reset(fd))
return -1;
}
--
1.9.1

View File

@@ -1,25 +0,0 @@
From d41dc2046dd08d8c95197f677e224506f5b39bdd Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Wed, 20 Jan 2016 16:00:37 +0000
Subject: [PATCH 3/4] Increase firmware load timeout to 30s
---
tools/hciattach.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/hciattach.c b/tools/hciattach.c
index 5861d33..4141796 100644
--- a/tools/hciattach.c
+++ b/tools/hciattach.c
@@ -1293,7 +1293,7 @@ int main(int argc, char *argv[])
{
struct uart_t *u = NULL;
int detach, printpid, raw, opt, i, n, ld, err;
- int to = 10;
+ int to = 30;
int init_speed = 0;
int send_break = 0;
pid_t pid;
--
1.9.1

View File

@@ -1,25 +0,0 @@
From 76681284b0ea49852041fdb97a35175089a08781 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Tue, 23 Feb 2016 17:52:29 +0000
Subject: [PATCH 4/4] Move the 43xx firmware into /lib/firmware
---
tools/hciattach_bcm43xx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/hciattach_bcm43xx.c b/tools/hciattach_bcm43xx.c
index 0b792e0..207f668 100644
--- a/tools/hciattach_bcm43xx.c
+++ b/tools/hciattach_bcm43xx.c
@@ -43,7 +43,7 @@
#include "hciattach.h"
#ifndef FIRMWARE_DIR
-#define FIRMWARE_DIR "/etc/firmware"
+#define FIRMWARE_DIR "/lib/firmware"
#endif
#define FW_EXT ".hcd"
--
1.9.1

View File

@@ -1,12 +0,0 @@
[Unit]
Description=Broadcom BCM43438 bluetooth HCI
ConditionPathIsDirectory=/proc/device-tree/soc/gpio@7e200000/bt_pins
Before=bluetooth.service
After=dev-ttyAMA0.device
[Service]
Type=simple
ExecStart=/usr/bin/hciattach -n /dev/ttyAMA0 bcm43xx 921600 noflow -
[Install]
WantedBy=multi-user.target

View File

@@ -1,26 +0,0 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI_append_raspberrypi3 = " \
file://BCM43430A1.hcd \
file://0001-bcm43xx-Add-bcm43xx-3wire-variant.patch \
file://0002-bcm43xx-The-UART-speed-must-be-reset-after-the-firmw.patch \
file://0003-Increase-firmware-load-timeout-to-30s.patch \
file://0004-Move-the-43xx-firmware-into-lib-firmware.patch \
file://brcm43438.service \
"
do_install_append_raspberrypi3() {
install -d ${D}/lib/firmware/brcm/
install -m 0644 ${WORKDIR}/BCM43430A1.hcd ${D}/lib/firmware/brcm/BCM43430A1.hcd
if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
install -d ${D}${systemd_unitdir}/system
install -m 0644 ${WORKDIR}/brcm43438.service ${D}${systemd_unitdir}/system
fi
}
FILES_${PN}_append_raspberrypi3 = " \
/lib/firmware/brcm/BCM43430A1.hcd \
"
SYSTEMD_SERVICE_${PN}_append_raspberrypi3 = " brcm43438.service"

View File

@@ -0,0 +1,9 @@
# stock fstab for the RaspberryPi - you may want to tweak this to suit.
rootfs / auto defaults,noatime 1 1
proc /proc proc defaults 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
usbfs /proc/bus/usb usbfs defaults 0 0
tmpfs /var/volatile tmpfs defaults 0 0
tmpfs /dev/shm tmpfs mode=0777 0 0
tmpfs /media/ram tmpfs defaults 0 0

View File

@@ -0,0 +1,33 @@
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
PATH="/usr/local/bin:/usr/bin:/bin"
EDITOR="/bin/vi" # needed for packages like cron
test -z "$TERM" && TERM="vt100" # Basic terminal capab. For screen etc.
if [ ! -e /etc/localtime -a ! -e /etc/TZ ]; then
TZ="UTC" # Time Zone. Look at http://theory.uwinnipeg.ca/gnu/glibc/libc_303.html
# for an explanation of how to set this to your local timezone.
export TZ
fi
if [ "`id -u`" -eq 0 ]; then
PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:
fi
if [ "$PS1" ]; then
# works for bash and ash (no other shells known to be in use here)
PS1='\u@\h:\w\$ '
fi
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
export PATH PS1 OPIEDIR QPEDIR QTDIR EDITOR TERM
umask 022

View File

@@ -0,0 +1,3 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
# Don't forget to bump PRINC if you update the extra files.
PRINC = "1"

View File

@@ -1,6 +1,4 @@
# Base this image on rpi-hwup-image
include rpi-hwup-image.bb
SPLASH = "psplash-raspberrypi"
IMAGE_FEATURES += "ssh-server-dropbear splash"

View File

@@ -1,4 +0,0 @@
# Base this image on rpi-basic-image
include rpi-basic-image.bb
IMAGE_INSTALL_append = " packagegroup-rpi-test"

View File

@@ -0,0 +1,2 @@
127.0.0.1 localhost.localdomain localhost raspberrypi rpi

View File

@@ -0,0 +1,15 @@
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
# The loopback interface
auto lo
iface lo inet loopback
# Wireless interfaces
iface wlan0 inet dhcp
wireless_mode managed
wireless_essid any
wpa-driver wext
wpa-conf /etc/wpa_supplicant.conf
# Bluetooth networking
iface bnep0 inet dhcp

View File

@@ -0,0 +1,3 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
# Don't forget to bump PRINC if you update the extra files.
PRINC = "1"

View File

@@ -1,27 +0,0 @@
DESCRIPTION = "RaspberryPi Test Packagegroup"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
inherit packagegroup
RDEPENDS_${PN} = "\
omxplayer \
bcm2835-tests \
wiringpi \
rpio \
rpi-gpio \
pi-blaster \
python-rtimu \
python-sense-hat \
connman \
connman-client \
crda \
bluez5 \
"
RRECOMMENDS_${PN} = "\
bigbuckbunny-1080p \
bigbuckbunny-480p \
bigbuckbunny-720p \
${MACHINE_EXTRA_RRECOMMENDS} \
"

View File

@@ -1,4 +1,2 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SPLASH_IMAGES_append_rpi = " file://psplash-raspberrypi-img.h;outsuffix=raspberrypi"
ALTERNATIVE_PRIORITY_psplash-raspberrypi[psplash] = "10"
SPLASH_IMAGES = "file://psplash-raspberrypi-img.h;outsuffix=default"

View File

@@ -1,12 +0,0 @@
DESCRIPTION = "udev rules for Raspberry Pi Boards"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
SRC_URI = " file://99-com.rules"
S = "${WORKDIR}"
do_install () {
install -d ${D}${sysconfdir}/udev/rules.d
install -m 0644 ${WORKDIR}/99-com.rules ${D}${sysconfdir}/udev/rules.d/
}

View File

@@ -1,21 +0,0 @@
KERNEL=="ttyAMA[01]", PROGRAM="/bin/sh -c '\
ALIASES=/proc/device-tree/aliases; \
if cmp -s $ALIASES/uart0 $ALIASES/serial0; then \
echo 0;\
elif cmp -s $ALIASES/uart0 $ALIASES/serial1; then \
echo 1; \
else \
exit 1; \
fi\
'", SYMLINK+="serial%c"
KERNEL=="ttyS0", PROGRAM="/bin/sh -c '\
ALIASES=/proc/device-tree/aliases; \
if cmp -s $ALIASES/uart1 $ALIASES/serial0; then \
echo 0; \
elif cmp -s $ALIASES/uart1 $ALIASES/serial1; then \
echo 1; \
else \
exit 1; \
fi \
'", SYMLINK+="serial%c"

View File

@@ -1,96 +0,0 @@
From 1338f98a279616f4e5e9ea30a25d1dfa0c7df5d6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petter=20Mab=C3=A4cker?= <petter@technux.se>
Date: Sun, 4 Jun 2017 12:22:40 +0200
Subject: [PATCH] Remove dependencies on LSB functions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
See this as a rebase of the previous 'Remove dependencies on LSB
functions patch' with only minor modifications from the original version,
based on the work done by Alex Lennon <ajlennon@dynamicdevices.co.uk> in
'25fd817 pi-blaster: Added recipe'.
Upstream-Status: Inappropriate [configuration]
Signed-off-by: Petter Mabäcker <petter@technux.se>
---
debian/pi-blaster.init | 38 +++++++-------------------------------
1 file changed, 7 insertions(+), 31 deletions(-)
diff --git a/debian/pi-blaster.init b/debian/pi-blaster.init
index b142d70..01a686c 100644
--- a/debian/pi-blaster.init
+++ b/debian/pi-blaster.init
@@ -28,12 +28,12 @@ SCRIPTNAME=/etc/init.d/$NAME
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
-. /lib/init/vars.sh
+#. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
-. /lib/lsb/init-functions
+#. /lib/lsb/init-functions
#
# Function that starts the daemon/service
@@ -77,48 +77,24 @@ do_stop()
case "$1" in
start)
- [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ [ "$VERBOSE" != no ] && echo "Starting $DESC" "$NAME"
do_start
- case "$?" in
- 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
- 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
- esac
;;
stop)
- [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ [ "$VERBOSE" != no ] && echo "Stopping $DESC" "$NAME"
do_stop
- case "$?" in
- 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
- 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
- esac
- ;;
- status)
- status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
;;
restart|force-reload)
#
# If the "reload" option is implemented then remove the
# 'force-reload' alias
#
- log_daemon_msg "Restarting $DESC" "$NAME"
+ echo "Restarting $DESC" "$NAME"
do_stop
- case "$?" in
- 0|1)
- do_start
- case "$?" in
- 0) log_end_msg 0 ;;
- 1) log_end_msg 1 ;; # Old process is still running
- *) log_end_msg 1 ;; # Failed to start
- esac
- ;;
- *)
- # Failed to stop
- log_end_msg 1
- ;;
- esac
+ do_start
;;
*)
- echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac
--
1.9.1

View File

@@ -1,21 +0,0 @@
DESCRIPTION = "This project enables PWM on the GPIO pins you request of a Raspberry Pi."
HOMEPAGE = "https://github.com/sarfata/pi-blaster/"
SECTION = "devel/libs"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://README.md;beginline=212;endline=239;md5=a012868ef5f83b9f257af253d7cb07a3"
SRC_URI = "git://github.com/sarfata/pi-blaster \
file://remove-initscript-lsb-dependency.patch \
"
S = "${WORKDIR}/git"
inherit update-rc.d autotools
INITSCRIPT_PACKAGES = "${PN}"
INITSCRIPT_NAME_${PN} = "${PN}.boot.sh"
INITSCRIPT_PARAMS_${PN} = "defaults 15 85"
COMPATIBLE_MACHINE = "raspberrypi"
PACKAGE_ARCH = "${MACHINE_ARCH}"

View File

@@ -1,3 +0,0 @@
require pi-blaster.inc
SRCREV = "9f45eb23a8a3b2d1c08d08a6d68f206fe91ecf4c"

View File

@@ -0,0 +1,16 @@
We already have setuptools python module so we will use that and not the
one provided in this package.
Upstream-Status: Inappropriate [embedded specific]
Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
Index: RPi.GPIO-0.2.0/setup.py
===================================================================
--- RPi.GPIO-0.2.0.orig/setup.py 2012-05-24 13:17:31.000000000 +0300
+++ RPi.GPIO-0.2.0/setup.py 2012-08-22 00:56:59.049001018 +0300
@@ -1,6 +1,4 @@
#!/usr/bin/env python
-import distribute_setup
-distribute_setup.use_setuptools()
from setuptools import setup, find_packages
import platform

View File

@@ -2,20 +2,20 @@ DESCRIPTION = "A module to control Raspberry Pi GPIO channels"
HOMEPAGE = "http://code.google.com/p/raspberry-gpio-python/"
SECTION = "devel/python"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENCE.txt;md5=9b95630a648966b142f1a0dcea001cb7"
LIC_FILES_CHKSUM = "file://LICENCE.txt;md5=ee5754ae9d5f8061d6d4ccd9c9fe0061"
SRCNAME = "RPi.GPIO"
PR = "r0"
SRC_URI = "\
http://pypi.python.org/packages/source/R/RPi.GPIO/${SRCNAME}-${PV}.tar.gz \
file://0001-Remove-nested-functions.patch \
file://don-t-install-setuptools.patch \
"
SRC_URI[md5sum] = "9db86fd5f3bae872de9dbb068ee0b096"
SRC_URI[sha256sum] = "82acff0ef6bbe3cdf6f4dbdd73d96add5294bb94baf7f51c1d901861af3c2392"
S = "${WORKDIR}/${SRCNAME}-${PV}"
inherit distutils
inherit setuptools
COMPATIBLE_MACHINE = "raspberrypi"
SRC_URI[md5sum] = "0fc4bfa6aabc856b0b75252a40ac75cc"
SRC_URI[sha256sum] = "fcfd97dc9687dde76b13b9d12c122e71b13e2ba09a62913d7b8d9ddbb3e8cabf"

View File

@@ -1,33 +0,0 @@
From c3aa4af56652b403e304ea5f321acfe289e42922 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 30 Jan 2016 16:07:14 -0800
Subject: [PATCH] include asm/ioctl.h for ioctl() define
also fixes errors e.g.
../../RTIMULib/RTIMUHal.cpp:208:29: error: '_IOC_SIZEBITS' was not
declared in this scope
return ioctl(m_SPI, SPI_IOC_MESSAGE(1), &wrIOC);
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Upstream-Status: Submitted
RTIMULib/RTIMUHal.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/RTIMULib/RTIMUHal.cpp b/RTIMULib/RTIMUHal.cpp
index f9c3d15..d968326 100644
--- a/RTIMULib/RTIMUHal.cpp
+++ b/RTIMULib/RTIMUHal.cpp
@@ -29,6 +29,7 @@
#if !defined(WIN32) && !defined(__APPLE__)
#include <linux/spi/spidev.h>
+#include <asm/ioctl.h>
RTIMUHal::RTIMUHal()
{
--
2.7.0

View File

@@ -1,15 +0,0 @@
DESCRIPTION = "RTIMULib is a C++ and Python library that makes it easy to use 9-dof and \
10-dof IMUs with embedded Linux systems"
HOMEPAGE = "https://github.com/RPi-Distro/RTIMULib/"
SECTION = "devel/python"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://../../LICENSE;md5=96cdecb41125f498958e09b72faf318e"
SRC_URI = "git://github.com/RPi-Distro/RTIMULib.git;protocol=http;branch=master \
file://0001-include-asm-ioctl.h-for-ioctl-define.patch;patchdir=../.. \
"
SRCREV = "b949681af69b45f0f7f4bb53b6770037b5b02178"
S = "${WORKDIR}/git/Linux/python/"
inherit setuptools

View File

@@ -1,28 +0,0 @@
SUMMARY = "Python module to control the Raspberry Pi Sense HAT used in the Astro Pi mission"
HOMEPAGE = "https://github.com/RPi-Distro/python-sense-hat"
SECTION = "devel/python"
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://LICENCE.txt;md5=d80fe312e1ff5fbd97369b093bf21cda"
SRCNAME = "sense-hat"
SRC_URI = "https://pypi.python.org/packages/source/s/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
SRC_URI[md5sum] = "71217f15ea963040f06e2f50722186ca"
SRC_URI[sha256sum] = "c6c76707c0ea514e4b0f1f96f1b5b79755875891aae037df7434b6aad7b9dbca"
S = "${WORKDIR}/${SRCNAME}-${PV}"
inherit setuptools
DEPENDS += " \
jpeg \
zlib \
freetype \
"
RDEPENDS_${PN} += " \
python-numpy \
python-rtimu \
python-imaging \
"

View File

@@ -1,294 +0,0 @@
From 23d7ab77865f8b17042f5cd4c6720cca475e0eb5 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 13 Jan 2016 14:27:10 -0800
Subject: [PATCH] Remove nested functions
nested functions are not supported on llvm/clang compiler, replacing
them helps make code portable and be compilable with non-gcc compilers
additionally fix the diagnostic messages clang reported
source/c_gpio.c:130:18: warning: comparison of distinct pointer types
('volatile uint32_t *' (aka 'volatile unsigned int *') an
d 'void *') [-Wcompare-distinct-pointer-types]
if (gpio_map < MAP_FAILED)
~~~~~~~~ ^ ~~~~~~~~~~
source/c_gpio.c:89:13: warning: variable 'peri_base' is used
uninitialized whenever 'if' condition is false [-Wsometimes-uninit
ialized]
if (fread(buf, 1, sizeof buf, fp) == sizeof buf) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
source/c_gpio.c:116:17: note: uninitialized use occurs here
gpio_base = peri_base + GPIO_BASE_OFFSET;
^~~~~~~~~
source/c_gpio.c:89:9: note: remove the 'if' if its condition is always
true
if (fread(buf, 1, sizeof buf, fp) == sizeof buf) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
source/c_gpio.c:64:23: note: initialize the variable 'peri_base' to
silence this warning
uint32_t peri_base;
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Upstream-Status: Submitted
source/c_gpio.c | 6 +--
source/py_gpio.c | 135 ++++++++++++++++++++++++++++---------------------------
2 files changed, 71 insertions(+), 70 deletions(-)
diff --git a/source/c_gpio.c b/source/c_gpio.c
index c96a2b0..b69880f 100644
--- a/source/c_gpio.c
+++ b/source/c_gpio.c
@@ -61,7 +61,7 @@ int setup(void)
{
int mem_fd;
uint8_t *gpio_mem;
- uint32_t peri_base;
+ uint32_t peri_base = 0;
uint32_t gpio_base;
unsigned char buf[4];
FILE *fp;
@@ -73,7 +73,7 @@ int setup(void)
if ((mem_fd = open("/dev/gpiomem", O_RDWR|O_SYNC)) > 0)
{
gpio_map = (uint32_t *)mmap(NULL, BLOCK_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, mem_fd, 0);
- if ((uint32_t)gpio_map < 0) {
+ if (gpio_map == MAP_FAILED) {
return SETUP_MMAP_FAIL;
} else {
return SETUP_OK;
@@ -127,7 +127,7 @@ int setup(void)
gpio_map = (uint32_t *)mmap( (void *)gpio_mem, BLOCK_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, mem_fd, gpio_base);
- if ((uint32_t)gpio_map < 0)
+ if (gpio_map == MAP_FAILED)
return SETUP_MMAP_FAIL;
return SETUP_OK;
diff --git a/source/py_gpio.c b/source/py_gpio.c
index d54cc7f..007bad5 100644
--- a/source/py_gpio.c
+++ b/source/py_gpio.c
@@ -69,6 +69,20 @@ static int mmap_gpio_mem(void)
return 0;
}
}
+static inline int cleanup_one(unsigned int gpio)
+{
+ // clean up any /sys/class exports
+ event_cleanup(gpio);
+
+ // set everything back to input
+ if (gpio_direction[gpio] != -1) {
+ setup_gpio(gpio, INPUT, PUD_OFF);
+ gpio_direction[gpio] = -1;
+ return 1;
+ }
+ return 0;
+}
+
// python function cleanup(channel=None)
static PyObject *py_cleanup(PyObject *self, PyObject *args, PyObject *kwargs)
@@ -83,19 +97,6 @@ static PyObject *py_cleanup(PyObject *self, PyObject *args, PyObject *kwargs)
PyObject *tempobj;
static char *kwlist[] = {"channel", NULL};
- void cleanup_one(void)
- {
- // clean up any /sys/class exports
- event_cleanup(gpio);
-
- // set everything back to input
- if (gpio_direction[gpio] != -1) {
- setup_gpio(gpio, INPUT, PUD_OFF);
- gpio_direction[gpio] = -1;
- found = 1;
- }
- }
-
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O", kwlist, &chanlist))
return NULL;
@@ -140,7 +141,7 @@ static PyObject *py_cleanup(PyObject *self, PyObject *args, PyObject *kwargs)
} else if (channel != -666) { // channel was an int indicating single channel
if (get_gpio_number(channel, &gpio))
return NULL;
- cleanup_one();
+ found = cleanup_one(gpio);
} else { // channel was a list/tuple
for (i=0; i<chancount; i++) {
if (chanlist) {
@@ -169,7 +170,7 @@ static PyObject *py_cleanup(PyObject *self, PyObject *args, PyObject *kwargs)
if (get_gpio_number(channel, &gpio))
return NULL;
- cleanup_one();
+ found = cleanup_one(gpio);
}
}
}
@@ -182,6 +183,37 @@ static PyObject *py_cleanup(PyObject *self, PyObject *args, PyObject *kwargs)
Py_RETURN_NONE;
}
+static inline int setup_one(unsigned int *gpio, int channel, int pud, int direction, int initial) {
+ if (get_gpio_number(channel, gpio))
+ return 0;
+
+ int func = gpio_function(*gpio);
+ if (gpio_warnings && // warnings enabled and
+ ((func != 0 && func != 1) || // (already one of the alt functions or
+ (gpio_direction[*gpio] == -1 && func == 1))) // already an output not set from this program)
+ {
+ PyErr_WarnEx(NULL, "This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.", 1);
+ }
+
+ // warn about pull/up down on i2c channels
+ if (gpio_warnings) {
+ if (rpiinfo.p1_revision == 0) { // compute module - do nothing
+ } else if ((rpiinfo.p1_revision == 1 && (*gpio == 0 || *gpio == 1)) ||
+ (*gpio == 2 || *gpio == 3)) {
+ if (pud == PUD_UP || pud == PUD_DOWN)
+ PyErr_WarnEx(NULL, "A physical pull up resistor is fitted on this channel!", 1);
+ }
+ }
+
+ if (direction == OUTPUT && (initial == LOW || initial == HIGH)) {
+ output_gpio(*gpio, initial);
+ }
+ setup_gpio(*gpio, direction, pud);
+ gpio_direction[*gpio] = direction;
+ return 1;
+}
+
+
// python function setup(channel(s), direction, pull_up_down=PUD_OFF, initial=None)
static PyObject *py_setup_channel(PyObject *self, PyObject *args, PyObject *kwargs)
{
@@ -195,37 +227,6 @@ static PyObject *py_setup_channel(PyObject *self, PyObject *args, PyObject *kwar
int pud = PUD_OFF + PY_PUD_CONST_OFFSET;
int initial = -1;
static char *kwlist[] = {"channel", "direction", "pull_up_down", "initial", NULL};
- int func;
-
- int setup_one(void) {
- if (get_gpio_number(channel, &gpio))
- return 0;
-
- func = gpio_function(gpio);
- if (gpio_warnings && // warnings enabled and
- ((func != 0 && func != 1) || // (already one of the alt functions or
- (gpio_direction[gpio] == -1 && func == 1))) // already an output not set from this program)
- {
- PyErr_WarnEx(NULL, "This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.", 1);
- }
-
- // warn about pull/up down on i2c channels
- if (gpio_warnings) {
- if (rpiinfo.p1_revision == 0) { // compute module - do nothing
- } else if ((rpiinfo.p1_revision == 1 && (gpio == 0 || gpio == 1)) ||
- (gpio == 2 || gpio == 3)) {
- if (pud == PUD_UP || pud == PUD_DOWN)
- PyErr_WarnEx(NULL, "A physical pull up resistor is fitted on this channel!", 1);
- }
- }
-
- if (direction == OUTPUT && (initial == LOW || initial == HIGH)) {
- output_gpio(gpio, initial);
- }
- setup_gpio(gpio, direction, pud);
- gpio_direction[gpio] = direction;
- return 1;
- }
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Oi|ii", kwlist, &chanlist, &direction, &pud, &initial))
return NULL;
@@ -290,7 +291,7 @@ static PyObject *py_setup_channel(PyObject *self, PyObject *args, PyObject *kwar
} else if (chantuple) {
chancount = PyTuple_Size(chantuple);
} else {
- if (!setup_one())
+ if (!setup_one(&gpio, channel, pud, direction, initial))
return NULL;
Py_RETURN_NONE;
}
@@ -320,12 +321,29 @@ static PyObject *py_setup_channel(PyObject *self, PyObject *args, PyObject *kwar
return NULL;
}
- if (!setup_one())
+ if (!setup_one(&gpio, channel, pud, direction, initial))
return NULL;
}
Py_RETURN_NONE;
}
+static inline int output_val(unsigned int *gpio, int channel, int value) {
+ if (get_gpio_number(channel, gpio))
+ return 0;
+
+ if (gpio_direction[*gpio] != OUTPUT)
+ {
+ PyErr_SetString(PyExc_RuntimeError, "The GPIO channel has not been set up as an OUTPUT");
+ return 0;
+ }
+
+ if (check_gpio_priv())
+ return 0;
+
+ output_gpio(*gpio, value);
+ return 1;
+}
+
// python function output(channel(s), value(s))
static PyObject *py_output_gpio(PyObject *self, PyObject *args)
@@ -342,23 +360,6 @@ static PyObject *py_output_gpio(PyObject *self, PyObject *args)
int chancount = -1;
int valuecount = -1;
- int output(void) {
- if (get_gpio_number(channel, &gpio))
- return 0;
-
- if (gpio_direction[gpio] != OUTPUT)
- {
- PyErr_SetString(PyExc_RuntimeError, "The GPIO channel has not been set up as an OUTPUT");
- return 0;
- }
-
- if (check_gpio_priv())
- return 0;
-
- output_gpio(gpio, value);
- return 1;
- }
-
if (!PyArg_ParseTuple(args, "OO", &chanlist, &valuelist))
return NULL;
@@ -416,7 +417,7 @@ static PyObject *py_output_gpio(PyObject *self, PyObject *args)
}
if (chancount == -1) {
- if (!output())
+ if (!output_val(&gpio, channel, value))
return NULL;
Py_RETURN_NONE;
}
@@ -472,7 +473,7 @@ static PyObject *py_output_gpio(PyObject *self, PyObject *args)
return NULL;
}
}
- if (!output())
+ if (!output_val(&gpio, channel, value))
return NULL;
}
--
2.7.0

View File

@@ -1,30 +0,0 @@
From c86bfacc98d58244f532626954ed00d84ecfa82d Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 30 Jan 2016 17:12:37 -0800
Subject: [PATCH] include sys/types.h explicitly for getting caddr_t definition
Helps fixing build on musl where sys/types.h is not included indirectly
as happening on glibc
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Upstream-Status: Submitted
source/c_gpio/c_gpio.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/source/c_gpio/c_gpio.c b/source/c_gpio/c_gpio.c
index 25a04ca..70df632 100644
--- a/source/c_gpio/c_gpio.c
+++ b/source/c_gpio/c_gpio.c
@@ -29,6 +29,7 @@
#include <stdint.h>
#include <stdlib.h>
#include <fcntl.h>
+#include <sys/types.h>
#include <sys/mman.h>
#include "c_gpio.h"
--
2.7.0

View File

@@ -1,25 +0,0 @@
DESCRIPTION = "Advanced GPIO for the Raspberry Pi. Extends RPi.GPIO with PWM, \
GPIO interrups, TCP socket interrupts, command line tools and more"
HOMEPAGE = "https://github.com/metachris/RPIO"
SECTION = "devel/python"
LICENSE = "LGPLv3+"
LIC_FILES_CHKSUM = "file://README.rst;beginline=41;endline=53;md5=d5d95d7486a4d98c999675c23196b25a"
SRCNAME = "RPIO"
SRC_URI = "http://pypi.python.org/packages/source/R/RPIO/${SRCNAME}-${PV}.tar.gz \
file://0001-include-sys-types.h-explicitly-for-getting-caddr_t-d.patch \
"
S = "${WORKDIR}/${SRCNAME}-${PV}"
inherit setuptools
COMPATIBLE_MACHINE = "raspberrypi"
RDEPENDS_${PN} = "\
python-logging \
python-threading \
"
SRC_URI[md5sum] = "cefc45422833dcafcd59b78dffc540f4"
SRC_URI[sha256sum] = "b89f75dec9de354681209ebfaedfe22b7c178aacd91a604a7bd6d92024e4cf7e"

View File

@@ -1,413 +0,0 @@
From ca25788e2563bad0d554deb9f4300d1e7d062825 Mon Sep 17 00:00:00 2001
From: Aurelian Zanoschi <aurelian17@gmail.com>
Date: Mon, 31 Jul 2017 20:25:15 +0300
Subject: [PATCH] Add initial cross compile support
---
devLib/Makefile | 54 +++++++++++++++++++++++++--------------------
examples/Gertboard/Makefile | 22 +++++++++++-------
examples/Makefile | 22 +++++++++++-------
examples/PiFace/Makefile | 22 +++++++++++-------
examples/PiGlow/Makefile | 4 ++--
examples/q2w/Makefile | 4 ++--
gpio/Makefile | 29 ++++++++++++------------
wiringPi/Makefile | 52 ++++++++++++++++++++++++-------------------
8 files changed, 120 insertions(+), 89 deletions(-)
diff --git a/devLib/Makefile b/devLib/Makefile
index cf665d6..040c03a 100644
--- a/devLib/Makefile
+++ b/devLib/Makefile
@@ -31,15 +31,19 @@ ifneq ($V,1)
Q ?= @
endif
-STATIC=libwiringPiDev.a
-DYNAMIC=libwiringPiDev.so.$(VERSION)
+INCLUDE_DIR?=$(DESTDIR)$(PREFIX)/include
+LIB_DIR?=$(DESTDIR)$(PREFIX)/lib
-#DEBUG = -g -O0
-DEBUG = -O2
-CC = gcc
-INCLUDE = -I.
-DEFS = -D_GNU_SOURCE
-CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC
+BASE_NAME=libwiringPiDev
+STATIC=$(BASE_NAME).a
+DYNAMIC=$(BASE_NAME).so.$(VERSION)
+
+#DEBUG ?= -g -O0
+DEBUG ?= -O2
+CC ?= gcc
+INCLUDE ?= -I.
+DEFS ?= -D_GNU_SOURCE
+CFLAGS ?= $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC
LIBS =
@@ -68,16 +72,16 @@ $(STATIC): $(OBJ)
$(DYNAMIC): $(OBJ)
$Q echo "[Link (Dynamic)]"
- $Q $(CC) -shared -Wl,-soname,libwiringPiDev.so$(WIRINGPI_SONAME_SUFFIX) -o libwiringPiDev.so.$(VERSION) -lpthread $(OBJ)
+ $Q $(CC) -shared $(LDFLAGS) -Wl,-soname,$(BASE_NAME).so.$(DYN_VERS_MAJ) -o $(BASE_NAME).so -lpthread $(OBJ)
.c.o:
$Q echo [Compile] $<
- $Q $(CC) -c $(CFLAGS) $< -o $@
+ $Q $(CC) -c $(CFLAGS) -fPIC $< -o $@
.PHONY: clean
clean:
$Q echo "[Clean]"
- $Q rm -f $(OBJ) $(OBJ_I2C) *~ core tags Makefile.bak libwiringPiDev.*
+ $Q rm -f $(OBJ) $(OBJ_I2C) *~ core tags Makefile.bak $(BASE_NAME).so* $(BASE_NAME).a
.PHONY: tags
tags: $(SRC)
@@ -88,22 +92,22 @@ tags: $(SRC)
.PHONY: install
install: $(DYNAMIC)
$Q echo "[Install Headers]"
- $Q install -m 0755 -d $(DESTDIR)$(PREFIX)/include
- $Q install -m 0644 $(HEADERS) $(DESTDIR)$(PREFIX)/include
+ $Q install -m 0755 -d $(INCLUDE_DIR)
+ $Q install -m 0644 $(HEADERS) $(INCLUDE_DIR)
$Q echo "[Install Dynamic Lib]"
- $Q install -m 0755 -d $(DESTDIR)$(PREFIX)/lib
- $Q install -m 0755 libwiringPiDev.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so.$(VERSION)
- $Q ln -sf $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so.$(VERSION) $(DESTDIR)/lib/libwiringPiDev.so
- $Q $(LDCONFIG)
+ $Q install -m 0755 -d $(LIB_DIR)
+ $Q install -m 0755 $(BASE_NAME).so $(LIB_DIR)/$(DYNAMIC)
+ $Q ln -sf $(DYNAMIC) $(LIB_DIR)/$(BASE_NAME).so
+ $Q ln -sf $(DYNAMIC) $(LIB_DIR)/$(BASE_NAME).so.$(DYN_VERS_MAJ)
.PHONY: install-static
install-static: $(STATIC)
$Q echo "[Install Headers]"
- $Q install -m 0755 -d $(DESTDIR)$(PREFIX)/include
- $Q install -m 0644 $(HEADERS) $(DESTDIR)$(PREFIX)/include
+ $Q install -m 0755 -d $(INCLUDE_DIR)
+ $Q install -m 0644 $(HEADERS) $(INCLUDE_DIR)
$Q echo "[Install Static Lib]"
- $Q install -m 0755 -d $(DESTDIR)$(PREFIX)/lib
- $Q install -m 0755 libwiringPiDev.a $(DESTDIR)$(PREFIX)/lib
+ $Q install -m 0755 -d $(LIB_DIR)
+ $Q install -m 0755 $(STATIC) $(LIB_DIR)
.PHONY: install-deb
install-deb: $(DYNAMIC)
@@ -118,9 +122,11 @@ install-deb: $(DYNAMIC)
.PHONY: uninstall
uninstall:
$Q echo "[UnInstall]"
- $Q cd $(DESTDIR)$(PREFIX)/include/ && rm -f $(HEADERS)
- $Q cd $(DESTDIR)$(PREFIX)/lib/ && rm -f libwiringPiDev.*
- $Q $(LDCONFIG)
+ $Q cd $(INCLUDE_DIR) && rm -f $(HEADERS)
+ $Q rm -f $(LIB_DIR)/$(STATIC)
+ $Q rm -f $(LIB_DIR)/$(DYNAMIC)
+ $Q rm -f $(LIB_DIR)/$(BASE_NAME).so
+ $Q rm -f $(LIB_DIR)/$(BASE_NAME).so.$(DYN_VERS_MAJ)
.PHONY: depend
diff --git a/examples/Gertboard/Makefile b/examples/Gertboard/Makefile
index 1939ad6..98d1415 100644
--- a/examples/Gertboard/Makefile
+++ b/examples/Gertboard/Makefile
@@ -9,14 +9,20 @@ ifneq ($V,1)
Q ?= @
endif
-#DEBUG = -g -O0
-DEBUG = -O3
-CC = gcc
-INCLUDE = -I/usr/local/include
-CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
-
-LDFLAGS = -L/usr/local/lib
-LDLIBS = -lwiringPi -lwiringPiDev -lpthread -lm
+DESTDIR?=/usr
+PREFIX?=/local
+
+INCLUDE_DIR?=$(DESTDIR)$(PREFIX)/include
+LIB_DIR?=$(DESTDIR)$(PREFIX)/lib
+
+#DEBUG ?= -g -O0
+DEBUG ?= -O3
+CC ?= gcc
+INCLUDE ?= -I$(INCLUDE_DIR)
+CFLAGS ?= $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
+
+LDFLAGS ?= -L$(LIB_DIR)
+LDLIBS ?= -lwiringPi -lwiringPiDev -lpthread -lm
# Should not alter anything below this line
###############################################################################
diff --git a/examples/Makefile b/examples/Makefile
index 6d87885..8623816 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -26,14 +26,20 @@ ifneq ($V,1)
Q ?= @
endif
-#DEBUG = -g -O0
-DEBUG = -O3
-CC = gcc
-INCLUDE = -I/usr/local/include
-CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
-
-LDFLAGS = -L/usr/local/lib
-LDLIBS = -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt
+DESTDIR?=/usr
+PREFIX?=/local
+
+INCLUDE_DIR?=$(DESTDIR)$(PREFIX)/include
+LIB_DIR?=$(DESTDIR)$(PREFIX)/lib
+
+#DEBUG ?= -g -O0
+DEBUG ?= -O3
+CC ?= gcc
+INCLUDE ?= -I$(INCLUDE_DIR)
+CFLAGS ?= $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
+
+LDFLAGS ?= -L$(LIB_DIR)
+LDLIBS ?= -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt
# Should not alter anything below this line
###############################################################################
diff --git a/examples/PiFace/Makefile b/examples/PiFace/Makefile
index f937c14..ad030b3 100644
--- a/examples/PiFace/Makefile
+++ b/examples/PiFace/Makefile
@@ -26,14 +26,20 @@ ifneq ($V,1)
Q ?= @
endif
-#DEBUG = -g -O0
-DEBUG = -O3
-CC = gcc
-INCLUDE = -I/usr/local/include
-CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
-
-LDFLAGS = -L/usr/local/lib
-LDLIBS = -lwiringPi -lwiringPiDev -lpthread -lm
+DESTDIR?=/usr
+PREFIX?=/local
+
+INCLUDE_DIR?=$(DESTDIR)$(PREFIX)/include
+LIB_DIR?=$(DESTDIR)$(PREFIX)/lib
+
+#DEBUG ?= -g -O0
+DEBUG ?= -O3
+CC ?= gcc
+INCLUDE ?= -I$(INCLUDE_DIR)
+CFLAGS ?= $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
+
+LDFLAGS ?= -L$(LIB_DIR)
+LDLIBS ?= -lwiringPi -lwiringPiDev -lpthread -lm
# Should not alter anything below this line
###############################################################################
diff --git a/examples/PiGlow/Makefile b/examples/PiGlow/Makefile
index f182db7..d1ea74f 100644
--- a/examples/PiGlow/Makefile
+++ b/examples/PiGlow/Makefile
@@ -29,10 +29,10 @@ endif
#DEBUG = -g -O0
DEBUG = -O3
CC = gcc
-INCLUDE = -I/usr/local/include
+INCLUDE = -I../wiringPi -I../wiringPiDev
CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
-LDFLAGS = -L/usr/local/lib
+LDFLAGS = -L../wiringPi -L../wiringPiDev
LDLIBS = -lwiringPi -lwiringPiDev -lpthread -lm
# Should not alter anything below this line
diff --git a/examples/q2w/Makefile b/examples/q2w/Makefile
index 8f773bf..14aa6e4 100644
--- a/examples/q2w/Makefile
+++ b/examples/q2w/Makefile
@@ -29,10 +29,10 @@ endif
#DEBUG = -g -O0
DEBUG = -O3
CC = gcc
-INCLUDE = -I/usr/local/include
+INCLUDE = -I../wiringPi -I../devLib
CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
-LDFLAGS = -L/usr/local/lib
+LDFLAGS = -L../wiringPi -L../devLib
LDLIBS = -lwiringPi -lwiringPiDev -lpthread -lm
###############################################################################
diff --git a/gpio/Makefile b/gpio/Makefile
index f41a005..22753ee 100644
--- a/gpio/Makefile
+++ b/gpio/Makefile
@@ -30,13 +30,17 @@ ifneq ($V,1)
Q ?= @
endif
-#DEBUG = -g -O0
-DEBUG = -O2
-CC = gcc
-INCLUDE = -I$(DESTDIR)$(PREFIX)/include
-CFLAGS = $(DEBUG) -Wall -Wextra $(INCLUDE) -Winline -pipe
+INCLUDE_DIR?=$(DESTDIR)$(PREFIX)/include
+LIB_DIR?=$(DESTDIR)$(PREFIX)/lib
+BIN_DIR?=$(DESTDIR)$(PREFIX)/bin
-LDFLAGS = -L$(DESTDIR)$(PREFIX)/lib
+#DEBUG ?= -g -O0
+DEBUG ?= -O2
+CC ?= gcc
+INCLUDE ?= -I$(INCLUDE_DIR)
+CFLAGS ?= $(DEBUG) -Wall -Wextra $(INCLUDE) -Winline -pipe
+
+LDFLAGS ?= -L$(LIB_DIR)
LIBS = -lwiringPi -lwiringPiDev -lpthread -lrt -lm -lcrypt
# May not need to alter anything below this line
@@ -72,13 +76,10 @@ tags: $(SRC)
.PHONY: install
install: gpio
$Q echo "[Install]"
- $Q cp gpio $(DESTDIR)$(PREFIX)/bin
-ifneq ($(WIRINGPI_SUID),0)
- $Q chown root.root $(DESTDIR)$(PREFIX)/bin/gpio
- $Q chmod 4755 $(DESTDIR)$(PREFIX)/bin/gpio
-endif
- $Q mkdir -p $(DESTDIR)$(PREFIX)/man/man1
- $Q cp gpio.1 $(DESTDIR)$(PREFIX)/man/man1
+ $Q install -d $(BIN_DIR)
+ $Q install -m 4755 -o root -g root gpio $(BIN_DIR)
+ $Q install -d $(DESTDIR)$(PREFIX)/share/man/man1
+ $Q install -m 644 -o root -g root gpio.1 $(DESTDIR)$(PREFIX)/share/man/man1
.PHONY: install-deb
install-deb: gpio
@@ -91,7 +92,7 @@ install-deb: gpio
.PHONY: uninstall
uninstall:
$Q echo "[UnInstall]"
- $Q rm -f $(DESTDIR)$(PREFIX)/bin/gpio
+ $Q rm -f $(BIN_DIR)/gpio
$Q rm -f $(DESTDIR)$(PREFIX)/man/man1/gpio.1
.PHONY: depend
diff --git a/wiringPi/Makefile b/wiringPi/Makefile
index e1868b9..750d290 100644
--- a/wiringPi/Makefile
+++ b/wiringPi/Makefile
@@ -25,21 +25,25 @@ VERSION=$(shell cat ../VERSION)
DESTDIR?=/usr
PREFIX?=/local
+INCLUDE_DIR?=$(DESTDIR)$(PREFIX)/include
+LIB_DIR?=$(DESTDIR)$(PREFIX)/lib
+
LDCONFIG?=ldconfig
ifneq ($V,1)
Q ?= @
endif
-STATIC=libwiringPi.a
-DYNAMIC=libwiringPi.so.$(VERSION)
+BASE_NAME=libwiringPi
+STATIC=$(BASE_NAME).a
+DYNAMIC=$(BASE_NAME).so.$(VERSION)
-#DEBUG = -g -O0
-DEBUG = -O2
-CC = gcc
-INCLUDE = -I.
+#DEBUG ?= -g -O0
+DEBUG ?= -O2
+CC ?= gcc
+INCLUDE ?= -I.
DEFS = -D_GNU_SOURCE
-CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Wextra -Winline $(INCLUDE) -pipe -fPIC
+CFLAGS = $(DEBUG) $(DEFS) $(INCLUDE) -Wformat=2 -Wall -Wextra -Winline -pipe -fPIC
LIBS = -lm -lpthread -lrt -lcrypt
@@ -78,17 +82,17 @@ $(STATIC): $(OBJ)
$(DYNAMIC): $(OBJ)
$Q echo "[Link (Dynamic)]"
- $Q $(CC) -shared -Wl,-soname,libwiringPi.so$(WIRINGPI_SONAME_SUFFIX) -o libwiringPi.so.$(VERSION) $(LIBS) $(OBJ)
+ $Q $(CC) $(LDFLAGS) -shared -Wl,-soname,$(BASE_NAME).so.$(DYN_VERS_MAJ) -o $(BASE_NAME).so $(OBJ) $(LIBS)
.c.o:
$Q echo [Compile] $<
- $Q $(CC) -c $(CFLAGS) $< -o $@
+ $Q $(CC) $(CFLAGS) $(LIBS) -c $< -o $@
.PHONY: clean
clean:
$Q echo "[Clean]"
- $Q rm -f $(OBJ) $(OBJ_I2C) *~ core tags Makefile.bak libwiringPi.*
+ $Q rm -f $(OBJ) $(OBJ_I2C) *~ core tags Makefile.bak $(BASE_NAME).so* $(BASE_NAME).a
.PHONY: tags
tags: $(SRC)
@@ -99,22 +103,22 @@ tags: $(SRC)
.PHONY: install
install: $(DYNAMIC)
$Q echo "[Install Headers]"
- $Q install -m 0755 -d $(DESTDIR)$(PREFIX)/include
- $Q install -m 0644 $(HEADERS) $(DESTDIR)$(PREFIX)/include
+ $Q install -m 0755 -d $(INCLUDE_DIR)
+ $Q install -m 0644 $(HEADERS) $(INCLUDE_DIR)
$Q echo "[Install Dynamic Lib]"
- $Q install -m 0755 -d $(DESTDIR)$(PREFIX)/lib
- $Q install -m 0755 libwiringPi.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPi.so.$(VERSION)
- $Q ln -sf $(DESTDIR)$(PREFIX)/lib/libwiringPi.so.$(VERSION) $(DESTDIR)/lib/libwiringPi.so
- $Q $(LDCONFIG)
+ $Q install -m 0755 -d $(LIB_DIR)
+ $Q install -m 0755 $(BASE_NAME).so $(LIB_DIR)/$(DYNAMIC)
+ $Q ln -sf $(DYNAMIC) $(LIB_DIR)/$(BASE_NAME).so
+ $Q ln -sf $(DYNAMIC) $(LIB_DIR)/$(BASE_NAME).so.$(DYN_VERS_MAJ)
.PHONY: install-static
install-static: $(STATIC)
$Q echo "[Install Headers]"
- $Q install -m 0755 -d $(DESTDIR)$(PREFIX)/include
- $Q install -m 0644 $(HEADERS) $(DESTDIR)$(PREFIX)/include
+ $Q install -m 0755 -d $(INCLUDE_DIR)
+ $Q install -m 0644 $(HEADERS) $(INCLUDE_DIR)
$Q echo "[Install Static Lib]"
- $Q install -m 0755 -d $(DESTDIR)$(PREFIX)/lib
- $Q install -m 0755 libwiringPi.a $(DESTDIR)$(PREFIX)/lib
+ $Q install -m 0755 -d $(LIB_DIR)
+ $Q install -m 0755 $(STATIC) $(LIB_DIR)
.PHONY: install-deb
install-deb: $(DYNAMIC)
@@ -129,9 +133,11 @@ install-deb: $(DYNAMIC)
.PHONY: uninstall
uninstall:
$Q echo "[UnInstall]"
- $Q cd $(DESTDIR)$(PREFIX)/include/ && rm -f $(HEADERS)
- $Q cd $(DESTDIR)$(PREFIX)/lib/ && rm -f libwiringPi.*
- $Q $(LDCONFIG)
+ $Q cd $(INCLUDE_DIR) && rm -f $(HEADERS)
+ $Q rm -f $(LIB_DIR)/$(STATIC)
+ $Q rm -f $(LIB_DIR)/$(DYNAMIC)
+ $Q rm -f $(LIB_DIR)/$(BASE_NAME).so
+ $Q rm -f $(LIB_DIR)/$(BASE_NAME).so.$(DYN_VERS_MAJ)
.PHONY: depend
--
2.7.4

View File

@@ -1,33 +0,0 @@
DESCRIPTION = "A library to control Raspberry Pi GPIO channels"
HOMEPAGE = "https://projects.drogon.net/raspberry-pi/wiringpi/"
SECTION = "devel/libs"
LICENSE = "LGPLv3+"
LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=e6a600fd5e1d9cbde2d983680233ad02"
# tag 2.44
SRCREV = "96344ff7125182989f98d3be8d111952a8f74e15"
S = "${WORKDIR}/git"
SRC_URI = "git://git.drogon.net/wiringPi \
file://0001-Add-initial-cross-compile-support.patch \
"
COMPATIBLE_MACHINE = "raspberrypi"
CFLAGS_prepend = "-I${S}/wiringPi -I${S}/devLib "
EXTRA_OEMAKE += "'INCLUDE_DIR=${D}${includedir}' 'LIB_DIR=${D}${libdir}'"
EXTRA_OEMAKE += "'DESTDIR=${D}/usr' 'PREFIX=""'"
do_compile() {
oe_runmake -C devLib
oe_runmake -C wiringPi
oe_runmake -C gpio 'LDFLAGS=${LDFLAGS} -L${S}/wiringPi -L${S}/devLib'
}
do_install() {
oe_runmake -C devLib install
oe_runmake -C wiringPi install
oe_runmake -C gpio install
}

View File

@@ -0,0 +1,37 @@
DESCRIPTION = "Scripts to support a first run wizard on the Raspberry Pi."
LICENSE = "GPLV2"
LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
DEPENDS = "zenity dbus"
RDEPENDS = "slim sudo zenity dbus"
COMPATIBLE_MACHINE = "raspberrypi"
PR = "r1"
SRC_URI = " \
file://LICENSE \
file://first-run-wizard.sh \
file://rpi_startup.sh \
file://rc.firstrun \
"
inherit update-rc.d
INITSCRIPT_NAME = "rpi-run-init"
INITSCRIPT_PARAMS = "start 29 2 3 4 5 . stop 29 2 3 4 5 ."
do_install() {
install -d ${D}${prefix}/rpi/scripts/
install -m 0755 ${WORKDIR}/first-run-wizard.sh ${D}${prefix}/rpi/scripts/
install -m 0755 ${WORKDIR}/rpi_startup.sh ${D}${prefix}/rpi/scripts/
install -d ${D}${sysconfdir}/init.d/
install -m 0755 ${WORKDIR}/rc.firstrun ${D}${sysconfdir}/init.d/rpi-run-init
install -d ${D}${sysconfdir}/rpi/
}
PACKAGE_ARCH = "${MACHINE_ARCH}"
FILES_${PN} += "${prefix} ${sysconfdir}"

View File

@@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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; either version 2 of the License, or
(at your option) any later version.
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.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

View File

@@ -0,0 +1,213 @@
#!/bin/sh
# Initially based on the scripts by JohnX/Mer Project - http://wiki.maemo.org/Mer/
# Reworked for the OpenPandora - John Willis/Michael Mrozek
# Quickly 'hacked' for the Raspberry Pi to provide a simple 1st boot wizard.
# You can start the wizard from the shell using 'xinit ./first-boot-init.sh'
export LANG=en_GB.UTF-8
export GTK2_RC_FILES=/usr/share/themes/Xfce/gtk-2.0/gtkrc
# Ensure there is a wheel group for sudoers to be put into.
# TODO: Do this somewhere better.
groupadd wheel
# Default error message (should a user hit cancel, validation fail etc.).
ERROR_WINDOW='zenity --title="Error" --error --text="Sorry! Please try again." --timeout 6'
RESET_ROOT="yes"
DISPLAY=:0 xset s off
# Greet the user.
if zenity --question --title="Pandoras Box has been opened." --text="Welcome!\n\nPandora's Box has been opened.\n\nThis wizard will help you setting up your new OpenPandora handheld before the first use.\n\nYou will be asked a few simple questions to personalise and configure your device.\n\nDo you want to set up your unit now or shut the unit down and do it later?" --ok-label="Start now" --cancel-label="Shutdown" ; then
# ----
# Reset ROOT's password to something random
# (I know the image build sets the password to something pusdo-random)
# (ok, urandom is not 100% secure but it's good enough for our needs)
if [ $RESET_ROOT == "yes" ]; then
rootpwd=$(cat /dev/urandom|tr -dc "a-zA-Z0-9-_\$\?"|fold -w 30|head -n 1)
passwd "root" <<EOF
$rootpwd
$rootpwd
EOF
rootpwd=""
fi
# ----
# Setup swap partition if the user has placed an SD with a swap partition on it.
swap_part=$(sfdisk -l /dev/mmcblk? | grep swap | cut -d" " -f1)
if [ x$swap_part != x ] ; then
use_swap=$(zenity --title="Enable swap?" --text "Swap partition found on SD card. Would you like to use it?\n\nWarning: This SD must remain in the system to use the swap." --list --radiolist --column " " --column "Answer" TRUE "Use swap on $swap_part" FALSE "Do not use swap")
if [ "$use_swap" = "Use swap on $swap_part" ] ; then
swapon $swap_part
echo "$swap_part none swap sw 0 0" >> /etc/fstab
fi
fi
# ----
# Setup the full name and username.
while ! name=$(zenity --title="Please enter your full name" --entry --text "Please enter your full name.") || [ "x$name" = "x" ] ; do
zenity --title="Error" --error --text="Please try again." --timeout 6
done
username_guess=$(echo "$name" | cut -d" " -f1 | tr A-Z a-z)
while ! username=$(zenity --title="Enter your username" --entry --text "Please choose a short username.\n\nIt should be all lowercase and contain only letters and numbers." --entry-text "$username_guess") || [ "x$username" = "x" ] ; do
zenity --title="Error" --error --text="Please try again." --timeout 6
done
while ! useradd -c "$name,,," -G adm,audio,video,netdev,wheel,plugdev,users "$username" ; do
username=$(zenity --title="Please check username" --entry --text "Please ensure that your username consists of only\nletters and numbers and is not already in use on the system." --entry-text "$username")
done
# ----
# Setup the users password.
password=""
while [ x$password = x ] ; do
password1=$(zenity --title=Password --entry --text="Please choose a new password." --hide-text)
password2=$(zenity --title=Confirm --entry --text="Confirm your new password." --hide-text)
if [ $password1 != $password2 ] ; then
zenity --title="Error" --error --text="The passwords do not match.\n\nPlease try again." --timeout 6
else
if [ x$password1 = x ] ; then
zenity --title="Error" --error --text="Password cannot be blank!\n\nPlease try again." --timeout 6
else
password=$password1
fi
fi
done
passwd "$username" <<EOF
$password
$password
EOF
# ----
# Pick a name for the OpenPandora.
while ! hostname=$(zenity --title="Name your Pandora" --entry --text "Please choose a name for your OpenPandora.\n\nIt should only contain letters, numbers and dashes, no spaces." --entry-text "$username-openpandora") || [ "x$hostname" = "x" ]; do
zenity --title="Error" --error --text="Please try again."
done
echo $hostname > /etc/hostname
hostname =$(sed 's/ /_/g' /etc/hostname)
echo $hostname > /etc/hostname
echo "127.0.0.1 localhost.localdomain localhost $hostname" > /etc/hosts
hostname -F /etc/hostname
# Set the correct user for Autologin and enable / disable it.
if zenity --question --title="Autologin" --text="Do you wish to automatically login at startup?\n\nSecurity warning: This skips the password check on startup" --ok-label="Yes" --cancel-label="No"; then
# echo "PREFERED_USER=$username" > /etc/default/autologin
sed -i "s/.*default_user.*/default_user $username/g" /etc/slim.conf
sed -i 's/.*auto_login.*/auto_login yes/g' /etc/slim.conf
else
if zenity --question --title="User" --text="Do you wish to have your username automatically populated in the login screen?\n\nNote: This is ideal if you're the only user of the OpenPandora but wish to disable autologin and use a password." --ok-label="Yes" --cancel-label="No"; then
sed -i "s/.*default_user.*/default_user $username/g" /etc/slim.conf
sed -i 's/.*auto_login.*/auto_login no/g' /etc/slim.conf
else
sed -i "s/.*default_user.*/default_user/g" /etc/slim.conf
sed -i 's/.*auto_login.*/auto_login no/g' /etc/slim.conf
fi
fi
# ----
# Select the default interface and setup SLiM to pass that as a sesion to ~./.xinitrc
selection=""
while [ x$selection = x ]; do
selection=$(cat /etc/pandora/conf/gui.conf | awk -F\; '{print $1 "\n" $2 }' | zenity --width=500 --height=300 --title="Select the Default GUI" --list --column "Name" --column "Description" --text "Please select the Default GUI" )
if [ x$selection = x ]; then
zenity --title="Error" --error --text="Please select a GUI." --timeout=6
fi
done
echo $selection
gui=$(grep $selection /etc/pandora/conf/gui.conf | awk -F\; '{print $3}')
stopcommand=$(grep $selection /etc/pandora/conf/gui.conf | awk -F\; '{print $4}')
echo $gui
if [ $gui ]; then
sed -i "s/.*DEFAULT_SESSION=.*/DEFAULT_SESSION=$gui/g" /home/$username/.xinitrc
echo $selection selected as default interface
zenity --info --title="Selected session" --text "You selected $selection as default setting. You can always change your default GUI later." --timeout 6
else
sed -i 's/.*DEFAULT_SESSION=.*/DEFAULT_SESSION=startxfce4/g' /home/$username/.xinitrc
fi
# ----
# Set the timezone and date/time
while ! area=$(zenity --list --title "Select your time zone" --text="Please select your area" --column="Select your area" --print-column=1 "Africa" "America" "Asia" "Australia" "Europe" "Pacific" --width=500 --height=260) || [ "x$area" = "x" ] ; do
zenity --title="Error" --error --text="Please select your area." --timeout=6
done
while ! timezone=$(ls -1 /usr/share/zoneinfo/$area | zenity ---width=500 --height=200 --title="Select your closest location" --list --column "Closest Location" --text "Please select the location closest to you") || [ "x$timezone" = "x" ] ; do
zenity --title="Error" --error --text="Please select your location." --timeout=6
done
echo $timezone
rm /etc/localtime && ln -s /usr/share/zoneinfo/$area/$timezone /etc/localtime
# Make sure we clean up any leading zeros in the day (as Zenity freaks out)
date_d=`date +%d | sed 's/^0//'`
date_m=`date +%m | sed 's/^0//'`
date_y=`date +%Y`
while ! date=$(zenity --calendar --text="Please select the current date" --title "Please select the current date" --day=$date_d --month=$date_m --year=$date_y --date-format="%Y%m%d" --width=500) || [ "x$date" = "x" ] ; do
zenity --title="Error" --error --text="Please select the date." --timeout 6
done
echo $date
time_h=`date +%H`
time_m=`date +%M`
while ! time=$(zenity --title="Enter actual time" --entry --text "Please enter the time in 24hour format (HH:MM):" --entry-text "$time_h:$time_m") || [ "x$time" = "x" ] ; do
zenity --title="Error" --error --text="Please input the time." --timeout 6
done
while ! date -d $time ; do
time=$(zenity --title="Enter actual time" --entry --text "Please enter the time in 24hour format (HH:MM):" --entry-text "$time_h:$time_m")
done
date +%Y%m%d -s $date
date +%H:%M -s $time
# ----
# Finsh up and boot the system.
zenity --info --title="Finished" --text "This concludes the First Boot Wizard.\n\nYour chosen interface will start in a few seconds\n\nThankyou for buying the OpenPandora. Enjoy using the device!" --timeout 6
# ----
# Write the control file so this script is not run on next boot
# (hackish I know but I want the flexability to drop a new script in later esp. in the early firmwares).
touch /etc/rpi/first-boot
# Make the control file writeable by all to allow the user to delete to rerun the wizard on next boot.
chmod 0666 /etc/rpi/first-boot
# ----
else
poweroff
fi

View File

@@ -0,0 +1,73 @@
#!/bin/sh
### BEGIN INIT INFO
# Provides: rpiruninit
# Required-Start: #adjust
# Required-Stop: #adjust
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
DESC="Raspberry Pi Startup Script Deamon"
NAME="rpiruninit"
PID=`pidof -o %PPID -x rpi_startup.sh`
OPRUNINIT='/usr/rpi/scripts/rpi_startup.sh'
d_stop() {
if [ $PID ]
then
kill $PID
else
echo "$DESC: $NAME not running."
fi
}
d_start() {
if [ $PID ]
then
echo "$DESC: $NAME already running."
else
$OPRUNINIT
fi
}
d_reload() {
if [ $PID ]
then
kill -HUP $PID
else
echo "$DESC: $NAME not running."
fi
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
d_stop
echo "."
;;
reload)
echo -n "Reloading $DESC: $NAME"
d_reload
echo "."
;;
restart|force-reload)
echo -n "Restarting $DESC: $NAME"
d_stop
sleep 1
d_start
echo "."
;;
*)
echo "Usage: $0 {start|stop|restart|reload|force-reload}" >&2
exit 1
;;
esac
exit 0

View File

@@ -0,0 +1,6 @@
#!/bin/sh
OP_CHECKFILE='/etc/rpi/first-boot'
OP_FIRSTRUN='xinit /usr/rpi/scripts/first-run-wizard.sh'
[ -f $OP_CHECKFILE ] && echo -e "\nOP_STARTUP: $OP_CHECKFILE exists, not first boot." || $OP_FIRSTRUN

View File

@@ -1,2 +0,0 @@
EGLINFO_DEVICE_rpi = "raspberrypi"
COMPATIBLE_HOST_rpi = "${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', 'null', '"(.*)"', d)}"

View File

@@ -1,2 +0,0 @@
EGLINFO_DEVICE_rpi = "${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', 'generic', 'raspberrypi', d)}"
ASNEEDED = ""

View File

@@ -1 +0,0 @@
PACKAGECONFIG_append_rpi = " gbm"

View File

@@ -1,3 +0,0 @@
PACKAGECONFIG_append_rpi = " gallium"
GALLIUMDRIVERS_rpi = "vc4"
DRIDRIVERS_rpi = ""

View File

@@ -1,208 +0,0 @@
From e45bc677368d0f8d42720aad242f33f6e2687fb1 Mon Sep 17 00:00:00 2001
From: Dom Cobley <dc4@broadcom.com>
Date: Tue, 9 Jul 2013 09:26:26 -0400
Subject: [PATCH 01/15] Allow applications to set next resource handle
This patch adds provisions in userland to
let apps callers set the next rendereing dispmanx resource.
It's useful for implementing, say, a buffer carousel.
---
interface/khronos/common/khrn_client_rpc.h | 2 ++
interface/khronos/common/khrn_int_ids.h | 2 ++
interface/khronos/egl/egl_client.c | 30 +++++++++++++++++++++++++++---
interface/khronos/egl/egl_client_surface.c | 24 +++++++++++++++++++++++-
interface/khronos/egl/egl_client_surface.h | 3 ++-
interface/khronos/egl/egl_int_impl.h | 5 +++--
6 files changed, 59 insertions(+), 7 deletions(-)
diff --git a/interface/khronos/common/khrn_client_rpc.h b/interface/khronos/common/khrn_client_rpc.h
index dc4351d..10ea060 100644
--- a/interface/khronos/common/khrn_client_rpc.h
+++ b/interface/khronos/common/khrn_client_rpc.h
@@ -685,6 +685,7 @@ static INLINE void rpc_call12_out_ctrl(CLIENT_THREAD_STATE_T *thread,uint32_t id
static INLINE void rpc_call13_out_ctrl(CLIENT_THREAD_STATE_T *thread,uint32_t id, uint32_t p0, uint32_t p1, uint32_t p2, uint32_t p3, uint32_t p4, uint32_t p5, uint32_t p6, uint32_t p7, uint32_t p8, uint32_t p9, uint32_t p10, uint32_t p11, void *out) { rpc_begin(thread); RPC_CALL(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); rpc_recv(thread, out, NULL, (RPC_RECV_FLAG_T)(RPC_RECV_FLAG_CTRL | RPC_RECV_FLAG_LEN)); rpc_end(thread); }
static INLINE void rpc_call14_out_ctrl(CLIENT_THREAD_STATE_T *thread,uint32_t id, uint32_t p0, uint32_t p1, uint32_t p2, uint32_t p3, uint32_t p4, uint32_t p5, uint32_t p6, uint32_t p7, uint32_t p8, uint32_t p9, uint32_t p10, uint32_t p11, uint32_t p12, void *out) { rpc_begin(thread); RPC_CALL(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); rpc_recv(thread, out, NULL, (RPC_RECV_FLAG_T)(RPC_RECV_FLAG_CTRL | RPC_RECV_FLAG_LEN)); rpc_end(thread); }
static INLINE void rpc_call15_out_ctrl(CLIENT_THREAD_STATE_T *thread,uint32_t id, uint32_t p0, uint32_t p1, uint32_t p2, uint32_t p3, uint32_t p4, uint32_t p5, uint32_t p6, uint32_t p7, uint32_t p8, uint32_t p9, uint32_t p10, uint32_t p11, uint32_t p12, uint32_t p13, void *out) { rpc_begin(thread); RPC_CALL(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13); rpc_recv(thread, out, NULL, (RPC_RECV_FLAG_T)(RPC_RECV_FLAG_CTRL | RPC_RECV_FLAG_LEN)); rpc_end(thread); }
+static INLINE void rpc_call16_out_ctrl(CLIENT_THREAD_STATE_T *thread,uint32_t id, uint32_t p0, uint32_t p1, uint32_t p2, uint32_t p3, uint32_t p4, uint32_t p5, uint32_t p6, uint32_t p7, uint32_t p8, uint32_t p9, uint32_t p10, uint32_t p11, uint32_t p12, uint32_t p13, uint32_t p14, void *out) { rpc_begin(thread); RPC_CALL(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14); rpc_recv(thread, out, NULL, (RPC_RECV_FLAG_T)(RPC_RECV_FLAG_CTRL | RPC_RECV_FLAG_LEN)); rpc_end(thread); }
#endif
#define RPC_CALL1_OUT_CTRL(fn, thread, id, out) rpc_call1_out_ctrl(thread, id, out)
@@ -702,6 +703,7 @@ static INLINE void rpc_call15_out_ctrl(CLIENT_THREAD_STATE_T *thread,uint32_t id
#define RPC_CALL13_OUT_CTRL(fn, thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, out) rpc_call13_out_ctrl(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, out)
#define RPC_CALL14_OUT_CTRL(fn, thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, out) rpc_call14_out_ctrl(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, out)
#define RPC_CALL15_OUT_CTRL(fn, thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, out) rpc_call15_out_ctrl(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, out)
+#define RPC_CALL16_OUT_CTRL(fn, thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, out) rpc_call16_out_ctrl(thread, id, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, out)
# if !defined(__SYMBIAN32__) //use functions defined in khrpc.cpp
static INLINE uint32_t rpc_call1_out_ctrl_res(CLIENT_THREAD_STATE_T *thread,uint32_t id, void *out) { uint32_t res; rpc_begin(thread); RPC_CALL(thread, id); res = rpc_recv(thread, out, NULL, (RPC_RECV_FLAG_T)(RPC_RECV_FLAG_RES | RPC_RECV_FLAG_CTRL | RPC_RECV_FLAG_LEN)); rpc_end(thread); return res; }
diff --git a/interface/khronos/common/khrn_int_ids.h b/interface/khronos/common/khrn_int_ids.h
index 8378f4a..ec961e0 100644
--- a/interface/khronos/common/khrn_int_ids.h
+++ b/interface/khronos/common/khrn_int_ids.h
@@ -367,6 +367,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define EGLINTCREATESURFACE_ID 0x4000
+#define EGLINTCREATESURFACE_ID_V2 0x4100
#define EGLINTCREATEGLES11_ID 0x4001
#define EGLINTCREATEGLES20_ID 0x4002
#define EGLINTCREATEVG_ID 0x4003
@@ -377,6 +378,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define EGLINTMAKECURRENT_ID 0x4008
#define EGLINTFLUSHANDWAIT_ID 0x4009
#define EGLINTSWAPBUFFERS_ID 0x400a
+#define EGLINTSWAPBUFFERS_ID_V2 0x410a
#define EGLINTSELECTMIPMAP_ID 0x400b
#define EGLINTFLUSH_ID 0x400c
#define EGLINTGETCOLORDATA_ID 0x400d
diff --git a/interface/khronos/egl/egl_client.c b/interface/khronos/egl/egl_client.c
index 9d617c8..b8bb374 100644
--- a/interface/khronos/egl/egl_client.c
+++ b/interface/khronos/egl/egl_client.c
@@ -162,6 +162,17 @@ static void egl_current_release(CLIENT_PROCESS_STATE_T *process, EGL_CURRENT_T *
void egl_gl_flush_callback(bool wait);
void egl_vg_flush_callback(bool wait);
+#include "interface/vmcs_host/vc_dispmanx_types.h"
+/**HACKHACK - give us the ability to inject a DispmanX
+ * resource handle into the CreateWindowSurface and
+ * SwapBuffers calls */
+static DISPMANX_RESOURCE_HANDLE_T next_resource_handle;
+
+EGLAPI EGLBoolean EGLAPIENTRY eglSetNextResourceHandle(DISPMANX_RESOURCE_HANDLE_T handle)
+{
+ next_resource_handle = handle;
+}
+
/*
TODO: do an RPC call to make sure the Khronos vll is loaded (and that it stays loaded until eglTerminate)
Also affects global image (and possibly others?)
@@ -644,7 +655,8 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig c
false,
EGL_NO_TEXTURE,
EGL_NO_TEXTURE,
- 0, 0);
+ 0, 0,
+ next_resource_handle);
if (surface) {
if (khrn_pointer_map_insert(&process->surfaces, process->next_surface, surface)) {
@@ -889,7 +901,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig
mipmap_texture,
texture_format,
texture_target,
- 0, 0);
+ 0, 0, 0);
if (surface) {
if (khrn_pointer_map_insert(&process->surfaces, process->next_surface, surface)) {
@@ -1031,7 +1043,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig c
false,
EGL_NO_TEXTURE,
EGL_NO_TEXTURE,
- pixmap, ((server_handle[0] == 0) && (server_handle[1] == (uint32_t)(-1))) ? NULL : server_handle);
+ pixmap, ((server_handle[0] == 0) && (server_handle[1] == (uint32_t)(-1))) ? NULL : server_handle, 0);
if (surface) {
if (khrn_pointer_map_insert(&process->surfaces, process->next_surface, surface)) {
@@ -2303,6 +2315,18 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
vcos_log_trace("eglSwapBuffers server call");
+ if (next_resource_handle)
+ RPC_CALL7(eglIntSwapBuffers_impl,
+ thread,
+ EGLINTSWAPBUFFERS_ID_V2,
+ RPC_UINT(surface->serverbuffer),
+ RPC_UINT(surface->width),
+ RPC_UINT(surface->height),
+ RPC_UINT(surface->internal_handle),
+ RPC_UINT(surface->swap_behavior == EGL_BUFFER_PRESERVED ? 1 : 0),
+ RPC_UINT(khrn_platform_get_window_position(surface->win)),
+ RPC_INT(next_resource_handle));
+ else
RPC_CALL6(eglIntSwapBuffers_impl,
thread,
EGLINTSWAPBUFFERS_ID,
diff --git a/interface/khronos/egl/egl_client_surface.c b/interface/khronos/egl/egl_client_surface.c
index 6846dfa..128325e 100644
--- a/interface/khronos/egl/egl_client_surface.c
+++ b/interface/khronos/egl/egl_client_surface.c
@@ -314,7 +314,8 @@ EGL_SURFACE_T *egl_surface_create(
EGLenum texture_format,
EGLenum texture_target,
EGLNativePixmapType pixmap,
- const uint32_t *pixmap_server_handle)
+ const uint32_t *pixmap_server_handle,
+ DISPMANX_RESOURCE_HANDLE_T next_resource_handle)
{
KHRN_IMAGE_FORMAT_T color;
KHRN_IMAGE_FORMAT_T depth;
@@ -473,6 +474,27 @@ EGL_SURFACE_T *egl_surface_create(
#endif
uint32_t results[3];
+ if (next_resource_handle)
+ RPC_CALL16_OUT_CTRL(eglIntCreateSurface_impl,
+ thread,
+ EGLINTCREATESURFACE_ID_V2,
+ RPC_UINT(serverwin),
+ RPC_UINT(buffers),
+ RPC_UINT(width),
+ RPC_UINT(height),
+ RPC_UINT(color),
+ RPC_UINT(depth),
+ RPC_UINT(mask),
+ RPC_UINT(multi),
+ RPC_UINT(largest_pbuffer),
+ RPC_UINT(mipmap_texture),
+ RPC_UINT(config_depth_bits),
+ RPC_UINT(config_stencil_bits),
+ RPC_UINT(sem_name),
+ RPC_UINT(type),
+ RPC_INT(next_resource_handle),
+ results);
+ else
RPC_CALL15_OUT_CTRL(eglIntCreateSurface_impl,
thread,
EGLINTCREATESURFACE_ID,
diff --git a/interface/khronos/egl/egl_client_surface.h b/interface/khronos/egl/egl_client_surface.h
index c99d44c..b5bf70a 100644
--- a/interface/khronos/egl/egl_client_surface.h
+++ b/interface/khronos/egl/egl_client_surface.h
@@ -322,7 +322,8 @@ extern EGL_SURFACE_T *egl_surface_create(
EGLenum texture_format,
EGLenum texture_target,
EGLNativePixmapType pixmap,
- const uint32_t *pixmap_server_handle);
+ const uint32_t *pixmap_server_handle,
+ DISPMANX_RESOURCE_HANDLE_T next_resource_handle);
extern EGL_SURFACE_T *egl_surface_from_vg_image(
VGImage vg_handle,
EGLSurface name,
diff --git a/interface/khronos/egl/egl_int_impl.h b/interface/khronos/egl/egl_int_impl.h
index 8a5734c..51b3580 100644
--- a/interface/khronos/egl/egl_int_impl.h
+++ b/interface/khronos/egl/egl_int_impl.h
@@ -56,7 +56,8 @@ FN(int, eglIntCreateSurface_impl, (
uint32_t config_stencil_bits,
uint32_t sem,
uint32_t type,
- uint32_t *results))
+ uint32_t *results,
+ DISPMANX_RESOURCE_HANDLE_T next_resource_handle))
FN(int, eglIntCreatePbufferFromVGImage_impl, (
VGImage vg_handle,
@@ -110,7 +111,7 @@ FN(void, eglIntMakeCurrent_impl, (uint32_t pid_0, uint32_t pid_1, uint32_t glver
FN(int, eglIntFlushAndWait_impl, (uint32_t flushgl, uint32_t flushvg))
FN(void, eglIntFlush_impl, (uint32_t flushgl, uint32_t flushvg))
-FN(void, eglIntSwapBuffers_impl, (EGL_SURFACE_ID_T s, uint32_t width, uint32_t height, uint32_t handle, uint32_t preserve, uint32_t position))
+FN(void, eglIntSwapBuffers_impl, (EGL_SURFACE_ID_T s, uint32_t width, uint32_t height, uint32_t handle, uint32_t preserve, uint32_t position, DISPMANX_RESOURCE_HANDLE_T new_back_buffer))
FN(void, eglIntSelectMipmap_impl, (EGL_SURFACE_ID_T s, int level))
FN(void, eglIntGetColorData_impl, (EGL_SURFACE_ID_T s, KHRN_IMAGE_FORMAT_T format, uint32_t width, uint32_t height, int32_t stride, uint32_t y_offset, void *data))
--
2.15.0

File diff suppressed because one or more lines are too long

View File

@@ -1,28 +0,0 @@
From cae4ff834eef23c8f23126ba4d630db395f13aee Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 10 Aug 2015 02:38:27 -0700
Subject: [PATCH 04/15] wayland-egl: Add bcm_host to dependencies
It uses headers like vcos_platform_types.h but does not
depend on module which should add the required include paths
lets add the dependency on bcm_host module which should do it
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
interface/khronos/wayland-egl/wayland-egl.pc.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/interface/khronos/wayland-egl/wayland-egl.pc.in b/interface/khronos/wayland-egl/wayland-egl.pc.in
index 8bafc15..fd259c9 100644
--- a/interface/khronos/wayland-egl/wayland-egl.pc.in
+++ b/interface/khronos/wayland-egl/wayland-egl.pc.in
@@ -6,5 +6,6 @@ includedir=${prefix}/include
Name: wayland-egl
Description: VideoCore wayland-egl library
Version: @PROJECT_APIVER@
+Requires: bcm_host
Libs: -L${libdir} -lwayland-egl
Cflags: -I${includedir}
--
2.15.0

View File

@@ -1,29 +0,0 @@
From 8ee4f6eedb81e9bfe0e603a21606c52f9501e609 Mon Sep 17 00:00:00 2001
From: "Yann E. MORIN" <yann.morin.1998@free.fr>
Date: Sat, 24 Jan 2015 22:07:19 +0100
Subject: [PATCH 05/15] interface: remove faulty assert() to make weston happy
at runtime
This was removed after a discussion on IRC with the weston guys
('daniels' on irc.freenode.net/#wayland).
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
interface/vmcs_host/vc_vchi_dispmanx.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/interface/vmcs_host/vc_vchi_dispmanx.c b/interface/vmcs_host/vc_vchi_dispmanx.c
index eab146e..29e0dee 100755
--- a/interface/vmcs_host/vc_vchi_dispmanx.c
+++ b/interface/vmcs_host/vc_vchi_dispmanx.c
@@ -1306,7 +1306,6 @@ static void *dispmanx_notify_func( void *arg ) {
// Decrement the use count - the corresponding "use" is in vc_dispmanx_update_submit.
vchi_service_release(dispmanx_client.notify_handle[0]);
if (dispmanx_client.update_callback ) {
- vcos_assert( dispmanx_client.pending_update_handle == handle);
dispmanx_client.update_callback(handle, dispmanx_client.update_callback_param);
}
} else {
--
2.15.0

View File

@@ -1,33 +0,0 @@
From 789b0b0c04b741c21dd573b78eded970721d14c2 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 6 Feb 2016 11:10:47 -0800
Subject: [PATCH 06/15] zero-out wl buffers in egl_surface_free
origins from buildroot
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
interface/khronos/egl/egl_client_surface.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/interface/khronos/egl/egl_client_surface.c b/interface/khronos/egl/egl_client_surface.c
index 42350bf..1f923d9 100644
--- a/interface/khronos/egl/egl_client_surface.c
+++ b/interface/khronos/egl/egl_client_surface.c
@@ -690,11 +690,13 @@ void egl_surface_free(EGL_SURFACE_T *surface)
if (surface->back_wl_buffer) {
wl_buffer_destroy(surface->back_wl_buffer->wl_buffer);
free(surface->back_wl_buffer);
+ surface->back_wl_buffer = 0;
}
if (surface->front_wl_buffer) {
wl_buffer_destroy(surface->front_wl_buffer->wl_buffer);
free(surface->front_wl_buffer);
+ surface->front_wl_buffer = 0;
}
#endif
}
--
2.15.0

View File

@@ -1,34 +0,0 @@
From 762dd3156775f167ff0dfd44322dbb19a85822a7 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 6 Feb 2016 11:11:41 -0800
Subject: [PATCH 07/15] initialize front back wayland buffers
origins from metrological wayland support
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
interface/khronos/egl/egl_client_surface.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/interface/khronos/egl/egl_client_surface.c b/interface/khronos/egl/egl_client_surface.c
index 1f923d9..9a9582c 100644
--- a/interface/khronos/egl/egl_client_surface.c
+++ b/interface/khronos/egl/egl_client_surface.c
@@ -401,11 +401,14 @@ EGL_SURFACE_T *egl_surface_create(
#ifdef BUILD_WAYLAND
if (type == WINDOW && wl_display) {
surface->wl_egl_window = (struct wl_egl_window*)win;
+ surface->front_wl_buffer = NULL;
surface->back_wl_buffer = allocate_wl_buffer(
surface->wl_egl_window, color);
resource = surface->back_wl_buffer->resource;
} else {
surface->wl_egl_window = NULL;
+ surface->front_wl_buffer = NULL;
+ surface->back_wl_buffer = NULL;
resource = DISPMANX_NO_HANDLE;
}
#endif
--
2.15.0

View File

@@ -1,27 +0,0 @@
From f8929adbf95ad3d44491cf6fc8a84a686b71193e Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 6 Feb 2016 11:09:18 -0800
Subject: [PATCH 08/15] Remove RPC_FLUSH
Origins from buildroot
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
interface/khronos/ext/gl_oes_egl_image_client.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/interface/khronos/ext/gl_oes_egl_image_client.c b/interface/khronos/ext/gl_oes_egl_image_client.c
index f9b7287..b04ffef 100644
--- a/interface/khronos/ext/gl_oes_egl_image_client.c
+++ b/interface/khronos/ext/gl_oes_egl_image_client.c
@@ -107,7 +107,6 @@ GL_API void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageO
GLEGLIMAGETARGETTEXTURE2DOES_ID,
RPC_ENUM(target),
RPC_EGLID(image));
- RPC_FLUSH(thread);
#if EGL_BRCM_global_image
}
#endif
--
2.15.0

View File

@@ -1,78 +0,0 @@
From f53e028f33f261f85883c9168977dd5486e9b47c Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 6 Feb 2016 13:12:47 -0800
Subject: [PATCH 09/15] fix cmake dependency race
Fixes errors like
/a/builder/mnt/build-oe/tmp-glibc/work/raspberrypi2-oe-linux-gnueabi/userland/git-r5/git/interface/vmcs_host/vc_vchi_dispmanx.h:72:66:
fatal error: interface/vmcs_host/wayland-dispmanx-server-protocol.h: No
such file or directory
compilation terminated.
interface/khronos/CMakeFiles/EGL_static.dir/build.make:773: recipe for
target 'interface/khronos/CMakeFiles/EGL_static.dir/ext/egl_wayland.c.o'
failed
make[2]: ***
[interface/khronos/CMakeFiles/EGL_static.dir/ext/egl_wayland.c.o] Error 1
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
interface/vcos/pthreads/CMakeLists.txt | 8 ++++++++
interface/vmcs_host/CMakeLists.txt | 8 --------
interface/vmcs_host/vc_vchi_dispmanx.h | 2 +-
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/interface/vcos/pthreads/CMakeLists.txt b/interface/vcos/pthreads/CMakeLists.txt
index 1d81ca3..d6cd415 100644
--- a/interface/vcos/pthreads/CMakeLists.txt
+++ b/interface/vcos/pthreads/CMakeLists.txt
@@ -33,6 +33,14 @@ set (SOURCES
../generic/vcos_generic_blockpool.c
)
+if (BUILD_WAYLAND)
+wayland_add_protocol_server(
+ SOURCES
+ ../../../interface/wayland/dispmanx.xml
+ dispmanx
+)
+endif ()
+
if (VCOS_PTHREADS_BUILD_SHARED)
add_library (vcos SHARED ${SOURCES})
target_link_libraries (vcos pthread dl rt)
diff --git a/interface/vmcs_host/CMakeLists.txt b/interface/vmcs_host/CMakeLists.txt
index 6718215..c415176 100755
--- a/interface/vmcs_host/CMakeLists.txt
+++ b/interface/vmcs_host/CMakeLists.txt
@@ -17,14 +17,6 @@ set(VCHOSTIF_SOURCE
# ${VMCS_TARGET}/vmcs_main.c
# vc_vchi_haud.c
-if (BUILD_WAYLAND)
-wayland_add_protocol_server(
- VCHOSTIF_SOURCE
- ../../interface/wayland/dispmanx.xml
- dispmanx
-)
-endif ()
-
add_library(vchostif ${VCHOSTIF_SOURCE})
#add_library(bufman vc_vchi_bufman.c )
diff --git a/interface/vmcs_host/vc_vchi_dispmanx.h b/interface/vmcs_host/vc_vchi_dispmanx.h
index f0bae30..8c44c58 100644
--- a/interface/vmcs_host/vc_vchi_dispmanx.h
+++ b/interface/vmcs_host/vc_vchi_dispmanx.h
@@ -69,7 +69,7 @@ typedef struct {
#ifdef BUILD_WAYLAND
/* XXX: This should be in a private header that can be included from EGL and vc_* */
#include <wayland-server.h>
-#include "interface/vmcs_host/wayland-dispmanx-server-protocol.h"
+#include "interface/vcos/pthreads/wayland-dispmanx-server-protocol.h"
struct wl_dispmanx_server_buffer {
struct wl_resource *resource;
struct wl_dispmanx *dispmanx;
--
2.15.0

View File

@@ -1,60 +0,0 @@
From 6559a57c66c5f55571a1aa29cf14d9130a9ef2c9 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 29 Mar 2016 20:38:30 -0700
Subject: [PATCH 10/15] Fix for framerate with nested composition
frame rate appears irregular and lower than expected when using nested composition.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
interface/khronos/egl/egl_client.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/interface/khronos/egl/egl_client.c b/interface/khronos/egl/egl_client.c
index 03fe67b..13a110c 100644
--- a/interface/khronos/egl/egl_client.c
+++ b/interface/khronos/egl/egl_client.c
@@ -2342,6 +2342,9 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
surface->back_wl_buffer = buffer;
}
+ glFlush();
+ glFinish();
+
RPC_CALL7(eglIntSwapBuffers_impl,
thread,
EGLINTSWAPBUFFERS_ID_V2,
@@ -2353,6 +2356,8 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
RPC_UINT(khrn_platform_get_window_position(surface->win)),
RPC_INT(surface->back_wl_buffer->resource));
+ RPC_FLUSH(thread);
+
surface->front_wl_buffer->in_use = 1;
wl_surface_attach(wl_egl_window->wl_surface,
surface->front_wl_buffer->wl_buffer,
@@ -2360,11 +2365,13 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
wl_surface_damage(wl_egl_window->wl_surface, 0, 0,
surface->width, surface->height);
wl_surface_commit(wl_egl_window->wl_surface);
+ wl_display_flush(wl_display);
while(ret != -1 && surface->back_wl_buffer->in_use)
ret = wl_display_dispatch_queue(wl_display, process->wl_queue);
} else
#endif
+ {
RPC_CALL6(eglIntSwapBuffers_impl,
thread,
EGLINTSWAPBUFFERS_ID,
@@ -2376,6 +2383,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
RPC_UINT(khrn_platform_get_window_position(surface->win)));
RPC_FLUSH(thread);
+ }
#ifdef ANDROID
CLIENT_UNLOCK();
--
2.15.0

View File

@@ -1,28 +0,0 @@
From 3e396f0b514f3acf90c02f5d55b3816028367a55 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 2 Apr 2016 10:37:24 -0700
Subject: [PATCH 11/15] build shared library for vchostif
Fixes #149
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
interface/vmcs_host/CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/interface/vmcs_host/CMakeLists.txt b/interface/vmcs_host/CMakeLists.txt
index c415176..d0cca1a 100755
--- a/interface/vmcs_host/CMakeLists.txt
+++ b/interface/vmcs_host/CMakeLists.txt
@@ -17,7 +17,7 @@ set(VCHOSTIF_SOURCE
# ${VMCS_TARGET}/vmcs_main.c
# vc_vchi_haud.c
-add_library(vchostif ${VCHOSTIF_SOURCE})
+add_library(vchostif SHARED ${VCHOSTIF_SOURCE})
#add_library(bufman vc_vchi_bufman.c )
--
2.15.0

View File

@@ -1,92 +0,0 @@
From f5b2263c8d65e307cb085414e08118cbbe00a94c Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 2 Apr 2016 10:54:59 -0700
Subject: [PATCH 12/15] implement buffer wrapping interface for dispmanx
Courtesy: Zan Dobersek
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
interface/khronos/ext/egl_wayland.c | 42 +++++++++++++++++++++++++++++++++++++
interface/wayland/dispmanx.xml | 10 +++++++++
2 files changed, 52 insertions(+)
diff --git a/interface/khronos/ext/egl_wayland.c b/interface/khronos/ext/egl_wayland.c
index 5730743..9ef89cd 100644
--- a/interface/khronos/ext/egl_wayland.c
+++ b/interface/khronos/ext/egl_wayland.c
@@ -133,8 +133,50 @@ dispmanx_create_buffer(struct wl_client *client, struct wl_resource *resource,
buffer->handle);
}
+static void
+dispmanx_wrap_buffer(struct wl_client *client, struct wl_resource *resource,
+ uint32_t id, uint32_t handle, int32_t width, int32_t height,
+ uint32_t stride, uint32_t buffer_height, uint32_t format)
+{
+ struct wl_dispmanx_server_buffer *buffer;
+ VC_IMAGE_TYPE_T vc_format = get_vc_format(format);
+ uint32_t dummy;
+
+ if(vc_format == VC_IMAGE_MIN) {
+ wl_resource_post_error(resource,
+ WL_DISPMANX_ERROR_INVALID_FORMAT,
+ "invalid format");
+ return;
+ }
+
+ buffer = calloc(1, sizeof *buffer);
+ if (buffer == NULL) {
+ wl_resource_post_no_memory(resource);
+ return;
+ }
+
+ buffer->handle = handle;
+ buffer->width = width;
+ buffer->height = height;
+ buffer->format = format;
+
+ buffer->resource = wl_resource_create(resource->client, &wl_buffer_interface,
+ 1, id);
+ if (!buffer->resource) {
+ wl_resource_post_no_memory(resource);
+ vc_dispmanx_resource_delete(buffer->handle);
+ free(buffer);
+ return;
+ }
+
+ wl_resource_set_implementation(buffer->resource,
+ (void (**)(void)) &dispmanx_buffer_interface,
+ buffer, destroy_buffer);
+}
+
static const struct wl_dispmanx_interface dispmanx_interface = {
dispmanx_create_buffer,
+ dispmanx_wrap_buffer,
};
static void
diff --git a/interface/wayland/dispmanx.xml b/interface/wayland/dispmanx.xml
index c18626d..11ed1ef 100644
--- a/interface/wayland/dispmanx.xml
+++ b/interface/wayland/dispmanx.xml
@@ -118,6 +118,16 @@
<arg name="buffer" type="object" interface="wl_buffer"/>
<arg name="handle" type="uint"/>
</event>
+
+ <request name="wrap_buffer">
+ <arg name="id" type="new_id" interface="wl_buffer"/>
+ <arg name="handle" type="uint"/>
+ <arg name="width" type="int"/>
+ <arg name="height" type="int"/>
+ <arg name="stride" type="uint"/>
+ <arg name="buffer_height" type="uint"/>
+ <arg name="format" type="uint"/>
+ </request>
</interface>
</protocol>
--
2.15.0

View File

@@ -1,90 +0,0 @@
From 10ba55489002c2ccdf96d221301ec059c4574811 Mon Sep 17 00:00:00 2001
From: Jeff Wannamaker <jeff_wannamaker@cable.comcast.com>
Date: Thu, 19 Jan 2017 18:56:07 +0000
Subject: [PATCH 13/15] Implement triple buffering for wayland
Change from double to triple buffering for wayland.
This enables higher frame rates without tearing artifacts
by allowing both the glFinish and the buffer release
interlock to operate without pushing the frame period
to two vertical intervals
Signed-off-by: Jeff Wannamaker <jeff_wannamaker@cable.comcast.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
interface/khronos/egl/egl_client.c | 3 ++-
interface/khronos/egl/egl_client_surface.c | 8 ++++++++
interface/khronos/egl/egl_client_surface.h | 11 +++++++++++
3 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/interface/khronos/egl/egl_client.c b/interface/khronos/egl/egl_client.c
index 13a110c..0380274 100644
--- a/interface/khronos/egl/egl_client.c
+++ b/interface/khronos/egl/egl_client.c
@@ -2323,7 +2323,8 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
buffer_temp = surface->front_wl_buffer;
surface->front_wl_buffer = surface->back_wl_buffer;
- surface->back_wl_buffer = buffer_temp;
+ surface->back_wl_buffer = surface->middle_wl_buffer;
+ surface->middle_wl_buffer = buffer_temp;
configid = egl_config_to_id(surface->config);
color = egl_config_get_color_format(configid);
diff --git a/interface/khronos/egl/egl_client_surface.c b/interface/khronos/egl/egl_client_surface.c
index 9a9582c..10b3b04 100644
--- a/interface/khronos/egl/egl_client_surface.c
+++ b/interface/khronos/egl/egl_client_surface.c
@@ -402,12 +402,14 @@ EGL_SURFACE_T *egl_surface_create(
if (type == WINDOW && wl_display) {
surface->wl_egl_window = (struct wl_egl_window*)win;
surface->front_wl_buffer = NULL;
+ surface->middle_wl_buffer = NULL;
surface->back_wl_buffer = allocate_wl_buffer(
surface->wl_egl_window, color);
resource = surface->back_wl_buffer->resource;
} else {
surface->wl_egl_window = NULL;
surface->front_wl_buffer = NULL;
+ surface->middle_wl_buffer = NULL;
surface->back_wl_buffer = NULL;
resource = DISPMANX_NO_HANDLE;
}
@@ -696,6 +698,12 @@ void egl_surface_free(EGL_SURFACE_T *surface)
surface->back_wl_buffer = 0;
}
+ if (surface->middle_wl_buffer) {
+ wl_buffer_destroy(surface->middle_wl_buffer->wl_buffer);
+ free(surface->middle_wl_buffer);
+ surface->middle_wl_buffer = 0;
+ }
+
if (surface->front_wl_buffer) {
wl_buffer_destroy(surface->front_wl_buffer->wl_buffer);
free(surface->front_wl_buffer);
diff --git a/interface/khronos/egl/egl_client_surface.h b/interface/khronos/egl/egl_client_surface.h
index e328b77..58a3184 100644
--- a/interface/khronos/egl/egl_client_surface.h
+++ b/interface/khronos/egl/egl_client_surface.h
@@ -312,6 +312,17 @@ typedef struct {
*/
struct wl_dispmanx_client_buffer *front_wl_buffer;
+ /*
+ middle_wl_buffer
+
+ Validity:
+ type == WINDOW
+
+ Invariant:
+ client-side information about the wl_buffer in the middle
+ */
+ struct wl_dispmanx_client_buffer *middle_wl_buffer;
+
/*
back_wl_buffer
--
2.15.0

View File

@@ -1,30 +0,0 @@
From d750c738b5c23bba24531cb713292e4ab3f2ec56 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 10 May 2017 06:39:34 +0000
Subject: [PATCH 14/15] GLES2/gl2ext.h: Define GL_R8_EXT and GL_RG8_EXT
weston code uses these defines
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
interface/khronos/include/GLES2/gl2ext.h | 3 +++
1 file changed, 3 insertions(+)
diff --git a/interface/khronos/include/GLES2/gl2ext.h b/interface/khronos/include/GLES2/gl2ext.h
index 4eacf7f..283e3e1 100644
--- a/interface/khronos/include/GLES2/gl2ext.h
+++ b/interface/khronos/include/GLES2/gl2ext.h
@@ -327,6 +327,9 @@ typedef void* GLeglImageOES;
#define GL_RGBX_BRCM 0x80EE
#endif
+#define GL_R8_EXT 0x8229
+#define GL_RG8_EXT 0x822B
+
/* GL_EXT_texture_type_2_10_10_10_REV */
#ifndef GL_EXT_texture_type_2_10_10_10_REV
#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368
--
2.15.0

Some files were not shown because too many files have changed in this diff Show More