* Compat-wireless release for 2012-12-31 is baked
From: Compat-wireless cronjob account @ 2012-12-31 21:14 UTC (permalink / raw)
To: backports
git fetch github (/var/opt/compat/compat-wireless-2.6)
Nothing new to pack.
HEAD is now at 91cd77f compat-drivers: refresh patches
git fetch github (/var/opt/compat/compat)
Nothing new to pack.
HEAD is now at 681f758 compat: export platform_device_register_data()
git fetch (/var/opt/compat/linux-next)
Nothing new to pack.
HEAD is now at 3979da7 Add linux-next specific files for 20121224
/var/opt/compat//compat-ksrc/lib/modules does not exist
Failed...
compat-drivers code metrics
1270452 - Total upstream lines of code being pulled
network
----------------------------------------
3076 - backport code changes
2581 - backport code additions
495 - backport code deletions
14599 - backport from compat module
17675 - total backport code
1.3912 - % of code consists of backport work
drm
----------------------------------------
436 - backport code changes
293 - backport code additions
143 - backport code deletions
14599 - backport from compat module
15035 - total backport code
1.1834 - % of code consists of backport work
Base tree: linux-next.git
Base tree version: next-20121224
compat.git: compat-2012-12-24
compat-drivers release: compat-drivers-2012-12-24
Code metrics archive: http://bit.ly/H6BTF7
^ permalink raw reply
* Re: [PATCH] prctl: fix validation of an address
From: Serge E. Hallyn @ 2012-12-31 21:12 UTC (permalink / raw)
To: Cyrill Gorcunov
Cc: Eric Paris, Andrew Vagin, Andrey Vagin, linux-kernel,
Andrew Morton, Kees Cook, Serge Hallyn, Eric W. Biederman,
James Morris
In-Reply-To: <20121231151356.GA11118@moon>
Quoting Cyrill Gorcunov (gorcunov@openvz.org):
> > The kernel makes the decision on what is valid via security_mmap_addr().
> > Assuming there are no security fears of an untrusted application
> > tricking some priviledged application to set up these maps the answer is
> > just calling security_mmap_addr() instead of doing if(addr <
> > mmap_min_addr) return -EINVAL;
>
> If only I've not missed something obvious, the check for security_mmap_addr() here
> instead of poking the mmap_min_addr looks more correct for me. Andrew?
That sounds right to me as well.
-serge
^ permalink raw reply
* Re: [PATCH v2] input: vt8500: Add power button keypad driver
From: Tony Prisk @ 2012-12-31 21:11 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: linux-kernel, linux-arm-kernel, vt8500-wm8505-linux-kernel,
linux-input
In-Reply-To: <20121231203713.GC20317@core.coreip.homeip.net>
On Mon, 2012-12-31 at 12:37 -0800, Dmitry Torokhov wrote:
> Hi Tony,
>
> On Mon, Dec 31, 2012 at 03:04:59PM +1300, Tony Prisk wrote:
> > This patch adds support for the Power Button keypad found on
> > Wondermedia netbooks/tablets.
> >
> > Signed-off-by: Tony Prisk <linux@prisktech.co.nz>
> > ---
> > v2:
> > Remove devicetree binding for keycode
> > Add dependency on OF in Kconfig
> > Move static variables in a struct
> > Remove redundant inline modifier from kpad_power_timeout()
> > Remove unneccessary checks against power_button_pressed. Drop variable.
> > Cleanup the fail path code and add a .remove function.
> > Change the button behaviour so that a key-released event is only generated once
> > the key is released, not after timeout.
> > *Changes tested on WM8650 tablet.
>
>
> Thank you for making the requested changes, unfortunately there is some
> more...
It's never unfortunate to get it right :)
>
> >
> > + status = readl(data->pmc_base + 0x14);
> > + if (status & BIT(14)) {
> > + /* Button isn't release so check again in 50ms */
> > + mod_timer(&data->timer, jiffies + msecs_to_jiffies(50));
>
> I do not think you need to do this: your ISR does "mod_timer" which
> means that the timer expiration gets extended every time there is
> interrupt, so as long as the button is pressed the timer will not run.
> So I'd just report the button as released here and be done with it.
Will fix.
> > +
> > + np = of_find_compatible_node(NULL, NULL, "via,vt8500-pmc");
> > + if (!np) {
> > + dev_err(&pdev->dev, "pmc node not found\n");
> > + return -EINVAL;
> > + }
>
> Hmm, why are we looking up another device? What is it is not there yet?
> Can we have all resources contained in this device DT description?
This driver uses registers in the power management controller. It didn't
seem right to declare the memory space for this device as well as the PM
controller, but I don't think there is any reason why it couldn't - just
seemed a bit backward to me.
> > + data->pmc_base = of_iomap(np, 0);
> > + if (!data->pmc_base) {
> > + dev_err(&pdev->dev, "unable to map pmc memory\n");
> > + return -ENOMEM;
> > + }
> > +
> > + np = pdev->dev.of_node;
> > + if (!np) {
> > + dev_err(&pdev->dev, "devicenode not found\n");
>
> Your error handling is still incomplete, you need to unmap the memory
> you just mapped above.
Will do.
>
> I happened to peek at other vt8500 drivers and the lack of proper error
> handling and absence of remove() methods is a common theme among them.
Will put this on my list of things to look into. Thanks for pointing it
out.
>
> > +
> > + data->kpad_power->evbit[0] = BIT_MASK(EV_KEY);
> > + set_bit(data->keycode, data->kpad_power->keybit);
>
> Make it:
>
> input_set_capability(data->kpad_power, EV_KEY, data->keycode);
OK.
>
> > +
> > + data->kpad_power->name = "wmt_power_keypad";
> > + data->kpad_power->phys = "wmt_power_keypad";
>
> You can have more "human" name in name field, you do not have to have
> underscores. Also if you want to use phys it is common to have it in
> form of "<parent device>/input0" so something like "vt8500-pmic/input0".
Thanks.
>
> > + data->kpad_power->keycode = &data->keycode;
> > + data->kpad_power->keycodesize = sizeof(unsigned int);
> > + data->kpad_power->keycodemax = 1;
> > +
> > + err = input_register_device(data->kpad_power);
> > + if (err < 0) {
> > + dev_err(&pdev->dev, "failed to register input device\n");
> > + goto cleanup_input;
> > + }
> > +
>
> I'd recommend registering input device after you request irq as it
> simplifies error path (it is OK for ISR to use allocated but not
> registered input device).
Sounds good.
>
> > +
> > +static int vt8500_pwr_kpad_remove(struct platform_device *pdev)
> > +
> > +{
> > + struct kpad_pwr_data *data = platform_get_drvdata(pdev);
> > +
> > + free_irq(data->irq, data);
> > + del_timer(&data->timer);
>
> This should be del_timer_sync().
OK.
>
> > + input_unregister_device(data->kpad_power);
> > + input_free_device(data->kpad_power);
>
> input_free_device() after input_unregister_device() will result in
> double-free. The rule is use input_free_device() if device has not been
> registered, otherwise use input_unregister_device().
That seems a little unintuitive given the functions seemed to be paired.
Will fix. Thanks.
>
> You also need to unmap the mapped region.
Will do.
Regards
Tony P
^ permalink raw reply
* [PATCH v2] input: vt8500: Add power button keypad driver
From: Tony Prisk @ 2012-12-31 21:11 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20121231203713.GC20317@core.coreip.homeip.net>
On Mon, 2012-12-31 at 12:37 -0800, Dmitry Torokhov wrote:
> Hi Tony,
>
> On Mon, Dec 31, 2012 at 03:04:59PM +1300, Tony Prisk wrote:
> > This patch adds support for the Power Button keypad found on
> > Wondermedia netbooks/tablets.
> >
> > Signed-off-by: Tony Prisk <linux@prisktech.co.nz>
> > ---
> > v2:
> > Remove devicetree binding for keycode
> > Add dependency on OF in Kconfig
> > Move static variables in a struct
> > Remove redundant inline modifier from kpad_power_timeout()
> > Remove unneccessary checks against power_button_pressed. Drop variable.
> > Cleanup the fail path code and add a .remove function.
> > Change the button behaviour so that a key-released event is only generated once
> > the key is released, not after timeout.
> > *Changes tested on WM8650 tablet.
>
>
> Thank you for making the requested changes, unfortunately there is some
> more...
It's never unfortunate to get it right :)
>
> >
> > + status = readl(data->pmc_base + 0x14);
> > + if (status & BIT(14)) {
> > + /* Button isn't release so check again in 50ms */
> > + mod_timer(&data->timer, jiffies + msecs_to_jiffies(50));
>
> I do not think you need to do this: your ISR does "mod_timer" which
> means that the timer expiration gets extended every time there is
> interrupt, so as long as the button is pressed the timer will not run.
> So I'd just report the button as released here and be done with it.
Will fix.
> > +
> > + np = of_find_compatible_node(NULL, NULL, "via,vt8500-pmc");
> > + if (!np) {
> > + dev_err(&pdev->dev, "pmc node not found\n");
> > + return -EINVAL;
> > + }
>
> Hmm, why are we looking up another device? What is it is not there yet?
> Can we have all resources contained in this device DT description?
This driver uses registers in the power management controller. It didn't
seem right to declare the memory space for this device as well as the PM
controller, but I don't think there is any reason why it couldn't - just
seemed a bit backward to me.
> > + data->pmc_base = of_iomap(np, 0);
> > + if (!data->pmc_base) {
> > + dev_err(&pdev->dev, "unable to map pmc memory\n");
> > + return -ENOMEM;
> > + }
> > +
> > + np = pdev->dev.of_node;
> > + if (!np) {
> > + dev_err(&pdev->dev, "devicenode not found\n");
>
> Your error handling is still incomplete, you need to unmap the memory
> you just mapped above.
Will do.
>
> I happened to peek at other vt8500 drivers and the lack of proper error
> handling and absence of remove() methods is a common theme among them.
Will put this on my list of things to look into. Thanks for pointing it
out.
>
> > +
> > + data->kpad_power->evbit[0] = BIT_MASK(EV_KEY);
> > + set_bit(data->keycode, data->kpad_power->keybit);
>
> Make it:
>
> input_set_capability(data->kpad_power, EV_KEY, data->keycode);
OK.
>
> > +
> > + data->kpad_power->name = "wmt_power_keypad";
> > + data->kpad_power->phys = "wmt_power_keypad";
>
> You can have more "human" name in name field, you do not have to have
> underscores. Also if you want to use phys it is common to have it in
> form of "<parent device>/input0" so something like "vt8500-pmic/input0".
Thanks.
>
> > + data->kpad_power->keycode = &data->keycode;
> > + data->kpad_power->keycodesize = sizeof(unsigned int);
> > + data->kpad_power->keycodemax = 1;
> > +
> > + err = input_register_device(data->kpad_power);
> > + if (err < 0) {
> > + dev_err(&pdev->dev, "failed to register input device\n");
> > + goto cleanup_input;
> > + }
> > +
>
> I'd recommend registering input device after you request irq as it
> simplifies error path (it is OK for ISR to use allocated but not
> registered input device).
Sounds good.
>
> > +
> > +static int vt8500_pwr_kpad_remove(struct platform_device *pdev)
> > +
> > +{
> > + struct kpad_pwr_data *data = platform_get_drvdata(pdev);
> > +
> > + free_irq(data->irq, data);
> > + del_timer(&data->timer);
>
> This should be del_timer_sync().
OK.
>
> > + input_unregister_device(data->kpad_power);
> > + input_free_device(data->kpad_power);
>
> input_free_device() after input_unregister_device() will result in
> double-free. The rule is use input_free_device() if device has not been
> registered, otherwise use input_unregister_device().
That seems a little unintuitive given the functions seemed to be paired.
Will fix. Thanks.
>
> You also need to unmap the mapped region.
Will do.
Regards
Tony P
^ permalink raw reply
* backlight_register_device can oops if name is null ?
From: devendra.aaru @ 2012-12-31 21:04 UTC (permalink / raw)
To: linux-fbdev
Hello,
while reading through the backlight_register_device function, there
seems to be a problem if the new object name is null, the pr_debug
print goes and dereferences a null pointer causing an oops,
the print should be removed or the check must be placed to ensure that
name is not null,
any ideas?
^ permalink raw reply
* [PATCH Resend] ARM: pxa27x: fix ac97 controller warm reset code
From: Mike Dunn @ 2012-12-31 21:04 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <50E1613B.9040403@compulab.co.il>
On 12/31/2012 01:56 AM, Igor Grinberg wrote:
> On 12/28/12 23:06, Mike Dunn wrote:
[..]
>>
>> static unsigned long ac97_reset_config[] = {
>> - GPIO113_GPIO,
>> + MFP_CFG_OUT(GPIO113, AF0, DRIVE_HIGH),
>> GPIO113_AC97_nRESET,
>> - GPIO95_GPIO,
>> + MFP_CFG_OUT(GPIO95, AF0, DRIVE_HIGH),
>
> It was always discouraged to code the above directly.
Had a funny feeling about that when I coded it... I should have heeded the
feeling instead of being hasty.
> How about one of the below:
> 1)
> GPIO113_GPIO | MFP_PULL_HIGH,
> GPIO95_GPIO | MFP_PULL_HIGH,
>
> or
>
> 2) introduce something like:
> GPIO113_AC97_nRESET_GPIO_HIGH
> GPIO95_AC97_nRESET_GPIO_HIGH
> in the mfp-pxa27x.h file and use them in the structure above.
OK, will implement your suggestion and resubmit. To me, your first option seems
clearer to the casual reader.
Thanks Igor,
Mike
^ permalink raw reply
* Re: [Qemu-devel] [PATCH 1/2] linux-user: Add setsockopt(SO_ATTACH_FILTER)
From: Peter Maydell @ 2012-12-31 20:56 UTC (permalink / raw)
To: Laurent Vivier; +Cc: Riku Voipio, qemu-devel
In-Reply-To: <1356982680-12436-2-git-send-email-laurent@vivier.eu>
On 31 December 2012 19:37, Laurent Vivier <laurent@vivier.eu> wrote:
> This is needed to be able to run dhclient.
>
> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
> ---
> linux-user/syscall.c | 34 +++++++++++++++++++++++++++++++++-
> linux-user/syscall_defs.h | 12 ++++++++++++
> 2 files changed, 45 insertions(+), 1 deletion(-)
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index e99adab..000b640 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -98,6 +98,7 @@ int __clone2(int (*fn)(void *), void *child_stack_base,
> #include <linux/fb.h>
> #include <linux/vt.h>
> #include <linux/dm-ioctl.h>
> +#include <linux/filter.h>
> #include "linux_loop.h"
> #include "cpu-uname.h"
>
> @@ -1491,6 +1492,38 @@ static abi_long do_setsockopt(int sockfd, int level, int optname,
> break;
> case TARGET_SOL_SOCKET:
> switch (optname) {
> + case TARGET_SO_ATTACH_FILTER: {
This brace should go on a line of its own (lined up with the 'c' in case) IMHO.
> + struct target_sock_fprog *tfprog;
> + struct target_sock_filter *tfilter;
> + struct sock_fprog fprog;
> + struct sock_filter *filter;
> + int i;
> +
> + if (optlen != sizeof(*tfprog))
> + return -TARGET_EINVAL;
QEMU style requires braces on this if. You can use checkpatch.pl
to catch this kind of thing.
> + if (!lock_user_struct(VERIFY_READ, tfprog, optval_addr, 0))
> + return -TARGET_EFAULT;
> + if (!lock_user_struct(VERIFY_READ, tfilter,
> + tswapal(tfprog->filter), 0))
> + return -TARGET_EFAULT;
This will fail to unlock tfprog in the failure case.
> +
> + fprog.len = tswap16(tfprog->len);
> + filter = alloca(fprog.len * sizeof(*filter));
Not sure an unconstrained-size alloca based on data from
the guest binary is a fantastic idea (though we no doubt
do something similar for some other syscalls).
> + for (i = 0; i < fprog.len; i ++) {
> + filter[i].code = tswap16(tfilter[i].code);
> + filter[i].jt = tfilter[i].jt;
> + filter[i].jf = tfilter[i].jf;
> + filter[i].k = tswap32(tfilter[i].k);
> + }
> + fprog.filter = filter;
> +
> + ret = get_errno(setsockopt(sockfd, SOL_SOCKET,
> + SO_ATTACH_FILTER, &fprog, sizeof(fprog)));
> +
> + unlock_user_struct(tfilter, tfprog->filter, 1);
> + unlock_user_struct(tfprog, optval_addr, 1);
> + return ret;
> + }
> /* Options with 'int' argument. */
> case TARGET_SO_DEBUG:
> optname = SO_DEBUG;
> @@ -1548,7 +1581,6 @@ static abi_long do_setsockopt(int sockfd, int level, int optname,
> case TARGET_SO_SNDTIMEO:
> optname = SO_SNDTIMEO;
> break;
> - break;
Nice catch, but this is an unrelated change that should go in its own patch.
> default:
> goto unimplemented;
> }
-- PMM
^ permalink raw reply
* [Qemu-devel] [Bug 1094950] [NEW] crash at qemu_iohandler_poll (iohandler.c:124) on macos 10.8.2
From: Christopher Mason @ 2012-12-31 20:46 UTC (permalink / raw)
To: qemu-devel
In-Reply-To: <20121231204645.26308.5533.malonedeb@soybean.canonical.com>
Public bug reported:
I'm seeing consistent hangs / crashes on MacOS 10.8.2 with 1.3.0. I've
tried both gcc-4.2 and clang. I've tried a half a dozen different
images/kernels.
I configured qemu like this:
./configure --disable-sdl --disable-kvm --enable-cocoa --cc=gcc-4.2
--host-cc=gcc-4.2 --enable-debug --extra-cflags=-g --extra-
ldflags=-g
And ran it like this:
qemu-system-arm -nographic -M versatilepb -kernel
vmlinuz-2.6.32-5-versatile -initrd initrd.img-2.6.32-5-versatile -hda
debian_squeeze_armel_standard.qcow2 -append "root=/dev/sda1
console=ttyAMA0"
With images, kernel, and initrd described here:
http://psellos.com/2012/08/2012.08.qemu-arm-osx.html
And I get:
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x000000010142f2d0
0x000000010142f2d0 in ?? ()
(gdb) bt
#0 0x000000010142f2d0 in ?? ()
#1 0x000000010016e209 in qemu_iohandler_poll (readfds=0x10097ca00, writefds=0x10097ca80, xfds=0x10097cb00, ret=4) at iohandler.c:124
#2 0x0000000100172acf in main_loop_wait (nonblocking=0) at main-loop.c:418
#3 0x0000000100207bbf in main_loop () at vl.c:1765
#4 0x000000010020e7b0 in qemu_main (argc=12, argv=0x7fff5fbff360, envp=0x7fff5fbff3c8) at vl.c:3992
#5 0x00000001001d6013 in main (argc=12, argv=0x7fff5fbff360) at ui/cocoa.m:884
(gdb) frame 1
#1 0x000000010016e209 in qemu_iohandler_poll (readfds=0x10097ca00, writefds=0x10097ca80, xfds=0x10097cb00, ret=4) at iohandler.c:124
124 ioh->fd_read(ioh->opaque);
Current language: auto; currently c
(gdb) p ioh
$1 = (IOHandlerRecord *) 0x10142f110
(gdb) p *ioh
$2 = {
fd_read_poll = 0,
fd_read = 0x10017212b <sigfd_handler>,
fd_write = 0,
opaque = 0x3,
next = {
le_next = 0x0,
le_prev = 0x105d00bc0
},
fd = 3,
deleted = false
}
** Affects: qemu
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1094950
Title:
crash at qemu_iohandler_poll (iohandler.c:124) on macos 10.8.2
Status in QEMU:
New
Bug description:
I'm seeing consistent hangs / crashes on MacOS 10.8.2 with 1.3.0.
I've tried both gcc-4.2 and clang. I've tried a half a dozen
different images/kernels.
I configured qemu like this:
./configure --disable-sdl --disable-kvm --enable-cocoa --cc=gcc-4.2
--host-cc=gcc-4.2 --enable-debug --extra-cflags=-g --extra-
ldflags=-g
And ran it like this:
qemu-system-arm -nographic -M versatilepb -kernel
vmlinuz-2.6.32-5-versatile -initrd initrd.img-2.6.32-5-versatile -hda
debian_squeeze_armel_standard.qcow2 -append "root=/dev/sda1
console=ttyAMA0"
With images, kernel, and initrd described here:
http://psellos.com/2012/08/2012.08.qemu-arm-osx.html
And I get:
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x000000010142f2d0
0x000000010142f2d0 in ?? ()
(gdb) bt
#0 0x000000010142f2d0 in ?? ()
#1 0x000000010016e209 in qemu_iohandler_poll (readfds=0x10097ca00, writefds=0x10097ca80, xfds=0x10097cb00, ret=4) at iohandler.c:124
#2 0x0000000100172acf in main_loop_wait (nonblocking=0) at main-loop.c:418
#3 0x0000000100207bbf in main_loop () at vl.c:1765
#4 0x000000010020e7b0 in qemu_main (argc=12, argv=0x7fff5fbff360, envp=0x7fff5fbff3c8) at vl.c:3992
#5 0x00000001001d6013 in main (argc=12, argv=0x7fff5fbff360) at ui/cocoa.m:884
(gdb) frame 1
#1 0x000000010016e209 in qemu_iohandler_poll (readfds=0x10097ca00, writefds=0x10097ca80, xfds=0x10097cb00, ret=4) at iohandler.c:124
124 ioh->fd_read(ioh->opaque);
Current language: auto; currently c
(gdb) p ioh
$1 = (IOHandlerRecord *) 0x10142f110
(gdb) p *ioh
$2 = {
fd_read_poll = 0,
fd_read = 0x10017212b <sigfd_handler>,
fd_write = 0,
opaque = 0x3,
next = {
le_next = 0x0,
le_prev = 0x105d00bc0
},
fd = 3,
deleted = false
}
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1094950/+subscriptions
^ permalink raw reply
* [PATCH] Access control in Xen privcmd_ioctl_mmap
From: Tamas Lengyel @ 2012-12-31 20:44 UTC (permalink / raw)
To: konrad.wilk, jeremy; +Cc: Daniel De Graaf, xen-devel, linux-kernel
In the privcmd Linux driver two checks in the functions
privcmd_ioctl_mmap and privcmd_ioctl_mmap_batch are not needed as they
are trying to enforce hypervisor-level access control. They should be
removed as they break secondary control domains when performing dom0
disaggregation. Xen itself provides adequate security controls around
these hypercalls and these checks prevent those controls from
functioning as intended.
The patch applies to the stable Linux 3.7.1 kernel.
Signed-off-by: Tamas K Lengyel <tamas.lengyel@zentific.com>
Cc: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Cc: xen-devel@lists.xensource.com
Cc: linux-kernel@vger.kernel.org
---
drivers/xen/privcmd.c | 6 ------
1 files changed, 0 insertions(+), 6 deletions(-)
diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
index 71f5c45..adaa260 100644
--- a/drivers/xen/privcmd.c
+++ b/drivers/xen/privcmd.c
@@ -196,9 +196,6 @@ static long privcmd_ioctl_mmap(void __user *udata)
LIST_HEAD(pagelist);
struct mmap_mfn_state state;
- if (!xen_initial_domain())
- return -EPERM;
-
if (copy_from_user(&mmapcmd, udata, sizeof(mmapcmd)))
return -EFAULT;
@@ -316,9 +313,6 @@ static long privcmd_ioctl_mmap_batch(void __user
*udata, int version)
int *err_array = NULL;
struct mmap_batch_state state;
- if (!xen_initial_domain())
- return -EPERM;
-
switch (version) {
case 1:
if (copy_from_user(&m, udata, sizeof(struct privcmd_mmapbatch)))
^ permalink raw reply related
* Re: [PATCH] [media] blackfin Kconfig: select is evil; use, instead depends on
From: Mauro Carvalho Chehab @ 2012-12-31 20:41 UTC (permalink / raw)
To: Scott Jiang; +Cc: Linux Media Mailing List
In-Reply-To: <CAHG8p1A2VS8iHsb3PxhVh_CV9bXoob6BXcRNUwLudTgkhPY1Pw@mail.gmail.com>
Em Mon, 31 Dec 2012 17:41:25 +0800
Scott Jiang <scott.jiang.linux@gmail.com> escreveu:
> 2012/12/28 Mauro Carvalho Chehab <mchehab@redhat.com>:
> > Select is evil as it has issues with dependencies. Better to convert
> > it to use depends on.
> >
> > That fixes a breakage with out-of-tree compilation of the media
> > tree.
> >
> > Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
> > ---
> > drivers/media/platform/blackfin/Kconfig | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/media/platform/blackfin/Kconfig b/drivers/media/platform/blackfin/Kconfig
> > index 519990e..cc23997 100644
> > --- a/drivers/media/platform/blackfin/Kconfig
> > +++ b/drivers/media/platform/blackfin/Kconfig
> > @@ -2,7 +2,6 @@ config VIDEO_BLACKFIN_CAPTURE
> > tristate "Blackfin Video Capture Driver"
> > depends on VIDEO_V4L2 && BLACKFIN && I2C
> > select VIDEOBUF2_DMA_CONTIG
> > - select VIDEO_BLACKFIN_PPI
> > help
> > V4L2 bridge driver for Blackfin video capture device.
> > Choose PPI or EPPI as its interface.
> > @@ -12,3 +11,5 @@ config VIDEO_BLACKFIN_CAPTURE
> >
> > config VIDEO_BLACKFIN_PPI
> > tristate
> > + depends on VIDEO_BLACKFIN_CAPTURE
> > + default VIDEO_BLACKFIN_CAPTURE
> > --
>
> There are other drivers select this module.
>
> config VIDEO_BLACKFIN_DISPLAY
> tristate "Blackfin Video Display Driver"
> depends on VIDEO_V4L2 && BLACKFIN && I2C
> select VIDEOBUF2_DMA_CONTIG
> select VIDEO_BLACKFIN_PPI
>
> So should I move all other drivers to the depend on list?
Hmm... I didn't notice.
Yes, using depends on generally better, as it warrants that all
dependencies are properly parsed.
>
> Scott
--
Cheers,
Mauro
^ permalink raw reply
* [Qemu-devel] qemu-ga command listing
From: Eric Blake @ 2012-12-31 20:41 UTC (permalink / raw)
To: qemu-devel@nongnu.org
[-- Attachment #1: Type: text/plain, Size: 326 bytes --]
Is there a guest-agent command for querying the list of available
commands for a given guest agent? If not, should there be? In other
words, I'm looking for the counterpart to QMP {"execute":"query-commands"}.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 619 bytes --]
^ permalink raw reply
* [PATCH v2] input: vt8500: Add power button keypad driver
From: Dmitry Torokhov @ 2012-12-31 20:37 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1356919499-9654-1-git-send-email-linux@prisktech.co.nz>
Hi Tony,
On Mon, Dec 31, 2012 at 03:04:59PM +1300, Tony Prisk wrote:
> This patch adds support for the Power Button keypad found on
> Wondermedia netbooks/tablets.
>
> Signed-off-by: Tony Prisk <linux@prisktech.co.nz>
> ---
> v2:
> Remove devicetree binding for keycode
> Add dependency on OF in Kconfig
> Move static variables in a struct
> Remove redundant inline modifier from kpad_power_timeout()
> Remove unneccessary checks against power_button_pressed. Drop variable.
> Cleanup the fail path code and add a .remove function.
> Change the button behaviour so that a key-released event is only generated once
> the key is released, not after timeout.
> *Changes tested on WM8650 tablet.
Thank you for making the requested changes, unfortunately there is some
more...
>
> .../bindings/input/vt8500-power-keypad.txt | 15 ++
> drivers/input/keyboard/Kconfig | 10 +
> drivers/input/keyboard/Makefile | 1 +
> drivers/input/keyboard/wmt_power_keypad.c | 198 ++++++++++++++++++++
> 4 files changed, 224 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/input/vt8500-power-keypad.txt
> create mode 100644 drivers/input/keyboard/wmt_power_keypad.c
>
> diff --git a/Documentation/devicetree/bindings/input/vt8500-power-keypad.txt b/Documentation/devicetree/bindings/input/vt8500-power-keypad.txt
> new file mode 100644
> index 0000000..63f170b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/input/vt8500-power-keypad.txt
> @@ -0,0 +1,15 @@
> +* Wondermedia Power Keypad device tree bindings
> +
> +Wondermedia SoCs have a single irq-driven power button attached to
> +the power management controller.
> +
> +Required SoC Specific Properties:
> +- compatible: should be one of the following
> + - "wm,power-keypad": For all Wondermedia 8xxx-series SoCs.
> +- interrupts: should be the power management controller wakeup interrupt.
> +
> +Example:
> + powerkey: pwrkey at 0 {
> + compatible = "wm,power-keypad";
> + interrupts = <22>;
> + };
> diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig
> index 5a240c6..bb1e04f 100644
> --- a/drivers/input/keyboard/Kconfig
> +++ b/drivers/input/keyboard/Kconfig
> @@ -595,6 +595,16 @@ config KEYBOARD_TWL4030
> To compile this driver as a module, choose M here: the
> module will be called twl4030_keypad.
>
> +config KEYBOARD_WMT_POWER_KEYPAD
> + tristate "Wondermedia Power keypad support"
> + depends on (OF && ARCH_VT8500)
> + help
> + Say Y here to enable support for the power button keypad
> + on Wondermedia 8xxx-series SoCs.
> +
> + To compile this driver as a module, choose M here: the
> + module will be called wmt_power_keypad.
> +
> config KEYBOARD_XTKBD
> tristate "XT keyboard"
> select SERIO
> diff --git a/drivers/input/keyboard/Makefile b/drivers/input/keyboard/Makefile
> index 44e7600..eea31af 100644
> --- a/drivers/input/keyboard/Makefile
> +++ b/drivers/input/keyboard/Makefile
> @@ -52,5 +52,6 @@ obj-$(CONFIG_KEYBOARD_TC3589X) += tc3589x-keypad.o
> obj-$(CONFIG_KEYBOARD_TEGRA) += tegra-kbc.o
> obj-$(CONFIG_KEYBOARD_TNETV107X) += tnetv107x-keypad.o
> obj-$(CONFIG_KEYBOARD_TWL4030) += twl4030_keypad.o
> +obj-$(CONFIG_KEYBOARD_WMT_POWER_KEYPAD) += wmt_power_keypad.o
> obj-$(CONFIG_KEYBOARD_XTKBD) += xtkbd.o
> obj-$(CONFIG_KEYBOARD_W90P910) += w90p910_keypad.o
> diff --git a/drivers/input/keyboard/wmt_power_keypad.c b/drivers/input/keyboard/wmt_power_keypad.c
> new file mode 100644
> index 0000000..f3b24d8
> --- /dev/null
> +++ b/drivers/input/keyboard/wmt_power_keypad.c
> @@ -0,0 +1,198 @@
> +/* Wondermedia Power Keypad
> + *
> + * Copyright (C) 2012 Tony Prisk <linux@prisktech.co.nz>
> + *
> + * This software is licensed under the terms of the GNU General Public
> + * License version 2, as published by the Free Software Foundation, and
> + * may be copied, distributed, and modified under those terms.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + */
> +
> +#include <linux/module.h>
> +#include <linux/err.h>
> +#include <linux/io.h>
> +#include <linux/input.h>
> +#include <linux/interrupt.h>
> +#include <linux/platform_device.h>
> +#include <linux/bitops.h>
> +#include <linux/of.h>
> +#include <linux/of_address.h>
> +#include <linux/of_irq.h>
> +#include <linux/of_device.h>
> +
> +struct kpad_pwr_data {
> + struct input_dev *kpad_power;
> + void __iomem *pmc_base;
> + int irq;
> + struct timer_list timer;
> + spinlock_t lock;
> + unsigned int keycode;
> +};
> +
> +static void kpad_power_timeout(unsigned long fcontext)
> +{
> + struct kpad_pwr_data *data = (struct kpad_pwr_data *)fcontext;
> + u32 status;
> + unsigned long flags;
> +
> + spin_lock_irqsave(&data->lock, flags);
> +
> + status = readl(data->pmc_base + 0x14);
> + if (status & BIT(14)) {
> + /* Button isn't release so check again in 50ms */
> + mod_timer(&data->timer, jiffies + msecs_to_jiffies(50));
I do not think you need to do this: your ISR does "mod_timer" which
means that the timer expiration gets extended every time there is
interrupt, so as long as the button is pressed the timer will not run.
So I'd just report the button as released here and be done with it.
> + } else {
> + /* Send a button released message */
> + input_report_key(data->kpad_power, data->keycode, 0);
> + input_sync(data->kpad_power);
> + }
> +
> + spin_unlock_irqrestore(&data->lock, flags);
> +}
> +
> +static irqreturn_t kpad_power_isr(int irq_num, void *priv)
> +{
> + struct kpad_pwr_data *data = priv;
> + u32 status;
> + unsigned long flags;
> +
> + spin_lock_irqsave(&data->lock, flags);
> +
> + status = readl(data->pmc_base + 0x14);
> + writel(status, data->pmc_base + 0x14);
> +
> + if (status & BIT(14)) {
> + input_report_key(data->kpad_power, data->keycode, 1);
> + input_sync(data->kpad_power);
> + mod_timer(&data->timer, jiffies + msecs_to_jiffies(250));
> + }
> +
> + spin_unlock_irqrestore(&data->lock, flags);
> +
> + return IRQ_HANDLED;
> +}
> +
> +static int vt8500_pwr_kpad_probe(struct platform_device *pdev)
> +{
> + struct device_node *np;
> + struct kpad_pwr_data *data;
> + u32 status;
> + int err;
> +
> + np = of_find_compatible_node(NULL, NULL, "via,vt8500-pmc");
> + if (!np) {
> + dev_err(&pdev->dev, "pmc node not found\n");
> + return -EINVAL;
> + }
Hmm, why are we looking up another device? What is it is not there yet?
Can we have all resources contained in this device DT description?
> +
> + data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
> + if (!data) {
> + dev_err(&pdev->dev, "unable to allocate private data\n");
> + return -ENOMEM;
> + }
> +
> + data->keycode = KEY_POWER;
> + spin_lock_init(&data->lock);
> +
> + data->pmc_base = of_iomap(np, 0);
> + if (!data->pmc_base) {
> + dev_err(&pdev->dev, "unable to map pmc memory\n");
> + return -ENOMEM;
> + }
> +
> + np = pdev->dev.of_node;
> + if (!np) {
> + dev_err(&pdev->dev, "devicenode not found\n");
Your error handling is still incomplete, you need to unmap the memory
you just mapped above.
I happened to peek at other vt8500 drivers and the lack of proper error
handling and absence of remove() methods is a common theme among them.
> + return -ENODEV;
> + }
> +
> + /* set power button to soft-power */
> + status = readl(data->pmc_base + 0x54);
> + writel(status | 1, data->pmc_base + 0x54);
> +
> + /* clear any pending interrupts */
> + status = readl(data->pmc_base + 0x14);
> + writel(status, data->pmc_base + 0x14);
> +
> + data->kpad_power = input_allocate_device();
> + if (!data->kpad_power) {
> + dev_err(&pdev->dev, "failed to allocate input device\n");
> + return -ENOMEM;
> + }
> +
> + data->kpad_power->evbit[0] = BIT_MASK(EV_KEY);
> + set_bit(data->keycode, data->kpad_power->keybit);
Make it:
input_set_capability(data->kpad_power, EV_KEY, data->keycode);
> +
> + data->kpad_power->name = "wmt_power_keypad";
> + data->kpad_power->phys = "wmt_power_keypad";
You can have more "human" name in name field, you do not have to have
underscores. Also if you want to use phys it is common to have it in
form of "<parent device>/input0" so something like "vt8500-pmic/input0".
> + data->kpad_power->keycode = &data->keycode;
> + data->kpad_power->keycodesize = sizeof(unsigned int);
> + data->kpad_power->keycodemax = 1;
> +
> + err = input_register_device(data->kpad_power);
> + if (err < 0) {
> + dev_err(&pdev->dev, "failed to register input device\n");
> + goto cleanup_input;
> + }
> +
I'd recommend registering input device after you request irq as it
simplifies error path (it is OK for ISR to use allocated but not
registered input device).
> + setup_timer(&data->timer, kpad_power_timeout, (unsigned long)data);
> +
> + data->irq = irq_of_parse_and_map(np, 0);
> + err = request_irq(data->irq, &kpad_power_isr, 0, "pwrbtn", data);
> + if (err < 0) {
> + dev_err(&pdev->dev, "failed to request irq\n");
> + goto cleanup_irq;
> + }
> +
> + platform_set_drvdata(pdev, data);
> +
> + return 0;
> +
> +cleanup_irq:
> + del_timer(&data->timer);
> +cleanup_input:
> + input_free_device(data->kpad_power);
> +
> + return err;
> +}
> +
> +static int vt8500_pwr_kpad_remove(struct platform_device *pdev)
> +
> +{
> + struct kpad_pwr_data *data = platform_get_drvdata(pdev);
> +
> + free_irq(data->irq, data);
> + del_timer(&data->timer);
This should be del_timer_sync().
> + input_unregister_device(data->kpad_power);
> + input_free_device(data->kpad_power);
input_free_device() after input_unregister_device() will result in
double-free. The rule is use input_free_device() if device has not been
registered, otherwise use input_unregister_device().
You also need to unmap the mapped region.
> +
> + return 0;
> +}
> +
> +
> +static struct of_device_id vt8500_pwr_kpad_dt_ids[] = {
> + { .compatible = "wm,power-keypad" },
> + { /* Sentinel */ },
> +};
> +
> +static struct platform_driver vt8500_pwr_kpad_driver = {
> + .probe = vt8500_pwr_kpad_probe,
> + .remove = vt8500_pwr_kpad_remove,
> + .driver = {
> + .name = "wmt-power-keypad",
> + .owner = THIS_MODULE,
> + .of_match_table = vt8500_pwr_kpad_dt_ids,
> + },
> +};
> +
> +module_platform_driver(vt8500_pwr_kpad_driver);
> +
> +MODULE_DESCRIPTION("Wondermedia Power Keypad Driver");
> +MODULE_AUTHOR("Tony Prisk <linux@prisktech.co.nz>");
> +MODULE_LICENSE("GPL v2");
> +MODULE_DEVICE_TABLE(of, vt8500_pwr_kpad_dt_ids);
> --
> 1.7.9.5
>
Thanks.
--
Dmitry
^ permalink raw reply
* Re: [PATCH v2] input: vt8500: Add power button keypad driver
From: Dmitry Torokhov @ 2012-12-31 20:37 UTC (permalink / raw)
To: Tony Prisk
Cc: linux-kernel, linux-arm-kernel, vt8500-wm8505-linux-kernel,
linux-input
In-Reply-To: <1356919499-9654-1-git-send-email-linux@prisktech.co.nz>
Hi Tony,
On Mon, Dec 31, 2012 at 03:04:59PM +1300, Tony Prisk wrote:
> This patch adds support for the Power Button keypad found on
> Wondermedia netbooks/tablets.
>
> Signed-off-by: Tony Prisk <linux@prisktech.co.nz>
> ---
> v2:
> Remove devicetree binding for keycode
> Add dependency on OF in Kconfig
> Move static variables in a struct
> Remove redundant inline modifier from kpad_power_timeout()
> Remove unneccessary checks against power_button_pressed. Drop variable.
> Cleanup the fail path code and add a .remove function.
> Change the button behaviour so that a key-released event is only generated once
> the key is released, not after timeout.
> *Changes tested on WM8650 tablet.
Thank you for making the requested changes, unfortunately there is some
more...
>
> .../bindings/input/vt8500-power-keypad.txt | 15 ++
> drivers/input/keyboard/Kconfig | 10 +
> drivers/input/keyboard/Makefile | 1 +
> drivers/input/keyboard/wmt_power_keypad.c | 198 ++++++++++++++++++++
> 4 files changed, 224 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/input/vt8500-power-keypad.txt
> create mode 100644 drivers/input/keyboard/wmt_power_keypad.c
>
> diff --git a/Documentation/devicetree/bindings/input/vt8500-power-keypad.txt b/Documentation/devicetree/bindings/input/vt8500-power-keypad.txt
> new file mode 100644
> index 0000000..63f170b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/input/vt8500-power-keypad.txt
> @@ -0,0 +1,15 @@
> +* Wondermedia Power Keypad device tree bindings
> +
> +Wondermedia SoCs have a single irq-driven power button attached to
> +the power management controller.
> +
> +Required SoC Specific Properties:
> +- compatible: should be one of the following
> + - "wm,power-keypad": For all Wondermedia 8xxx-series SoCs.
> +- interrupts: should be the power management controller wakeup interrupt.
> +
> +Example:
> + powerkey: pwrkey@0 {
> + compatible = "wm,power-keypad";
> + interrupts = <22>;
> + };
> diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig
> index 5a240c6..bb1e04f 100644
> --- a/drivers/input/keyboard/Kconfig
> +++ b/drivers/input/keyboard/Kconfig
> @@ -595,6 +595,16 @@ config KEYBOARD_TWL4030
> To compile this driver as a module, choose M here: the
> module will be called twl4030_keypad.
>
> +config KEYBOARD_WMT_POWER_KEYPAD
> + tristate "Wondermedia Power keypad support"
> + depends on (OF && ARCH_VT8500)
> + help
> + Say Y here to enable support for the power button keypad
> + on Wondermedia 8xxx-series SoCs.
> +
> + To compile this driver as a module, choose M here: the
> + module will be called wmt_power_keypad.
> +
> config KEYBOARD_XTKBD
> tristate "XT keyboard"
> select SERIO
> diff --git a/drivers/input/keyboard/Makefile b/drivers/input/keyboard/Makefile
> index 44e7600..eea31af 100644
> --- a/drivers/input/keyboard/Makefile
> +++ b/drivers/input/keyboard/Makefile
> @@ -52,5 +52,6 @@ obj-$(CONFIG_KEYBOARD_TC3589X) += tc3589x-keypad.o
> obj-$(CONFIG_KEYBOARD_TEGRA) += tegra-kbc.o
> obj-$(CONFIG_KEYBOARD_TNETV107X) += tnetv107x-keypad.o
> obj-$(CONFIG_KEYBOARD_TWL4030) += twl4030_keypad.o
> +obj-$(CONFIG_KEYBOARD_WMT_POWER_KEYPAD) += wmt_power_keypad.o
> obj-$(CONFIG_KEYBOARD_XTKBD) += xtkbd.o
> obj-$(CONFIG_KEYBOARD_W90P910) += w90p910_keypad.o
> diff --git a/drivers/input/keyboard/wmt_power_keypad.c b/drivers/input/keyboard/wmt_power_keypad.c
> new file mode 100644
> index 0000000..f3b24d8
> --- /dev/null
> +++ b/drivers/input/keyboard/wmt_power_keypad.c
> @@ -0,0 +1,198 @@
> +/* Wondermedia Power Keypad
> + *
> + * Copyright (C) 2012 Tony Prisk <linux@prisktech.co.nz>
> + *
> + * This software is licensed under the terms of the GNU General Public
> + * License version 2, as published by the Free Software Foundation, and
> + * may be copied, distributed, and modified under those terms.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + */
> +
> +#include <linux/module.h>
> +#include <linux/err.h>
> +#include <linux/io.h>
> +#include <linux/input.h>
> +#include <linux/interrupt.h>
> +#include <linux/platform_device.h>
> +#include <linux/bitops.h>
> +#include <linux/of.h>
> +#include <linux/of_address.h>
> +#include <linux/of_irq.h>
> +#include <linux/of_device.h>
> +
> +struct kpad_pwr_data {
> + struct input_dev *kpad_power;
> + void __iomem *pmc_base;
> + int irq;
> + struct timer_list timer;
> + spinlock_t lock;
> + unsigned int keycode;
> +};
> +
> +static void kpad_power_timeout(unsigned long fcontext)
> +{
> + struct kpad_pwr_data *data = (struct kpad_pwr_data *)fcontext;
> + u32 status;
> + unsigned long flags;
> +
> + spin_lock_irqsave(&data->lock, flags);
> +
> + status = readl(data->pmc_base + 0x14);
> + if (status & BIT(14)) {
> + /* Button isn't release so check again in 50ms */
> + mod_timer(&data->timer, jiffies + msecs_to_jiffies(50));
I do not think you need to do this: your ISR does "mod_timer" which
means that the timer expiration gets extended every time there is
interrupt, so as long as the button is pressed the timer will not run.
So I'd just report the button as released here and be done with it.
> + } else {
> + /* Send a button released message */
> + input_report_key(data->kpad_power, data->keycode, 0);
> + input_sync(data->kpad_power);
> + }
> +
> + spin_unlock_irqrestore(&data->lock, flags);
> +}
> +
> +static irqreturn_t kpad_power_isr(int irq_num, void *priv)
> +{
> + struct kpad_pwr_data *data = priv;
> + u32 status;
> + unsigned long flags;
> +
> + spin_lock_irqsave(&data->lock, flags);
> +
> + status = readl(data->pmc_base + 0x14);
> + writel(status, data->pmc_base + 0x14);
> +
> + if (status & BIT(14)) {
> + input_report_key(data->kpad_power, data->keycode, 1);
> + input_sync(data->kpad_power);
> + mod_timer(&data->timer, jiffies + msecs_to_jiffies(250));
> + }
> +
> + spin_unlock_irqrestore(&data->lock, flags);
> +
> + return IRQ_HANDLED;
> +}
> +
> +static int vt8500_pwr_kpad_probe(struct platform_device *pdev)
> +{
> + struct device_node *np;
> + struct kpad_pwr_data *data;
> + u32 status;
> + int err;
> +
> + np = of_find_compatible_node(NULL, NULL, "via,vt8500-pmc");
> + if (!np) {
> + dev_err(&pdev->dev, "pmc node not found\n");
> + return -EINVAL;
> + }
Hmm, why are we looking up another device? What is it is not there yet?
Can we have all resources contained in this device DT description?
> +
> + data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
> + if (!data) {
> + dev_err(&pdev->dev, "unable to allocate private data\n");
> + return -ENOMEM;
> + }
> +
> + data->keycode = KEY_POWER;
> + spin_lock_init(&data->lock);
> +
> + data->pmc_base = of_iomap(np, 0);
> + if (!data->pmc_base) {
> + dev_err(&pdev->dev, "unable to map pmc memory\n");
> + return -ENOMEM;
> + }
> +
> + np = pdev->dev.of_node;
> + if (!np) {
> + dev_err(&pdev->dev, "devicenode not found\n");
Your error handling is still incomplete, you need to unmap the memory
you just mapped above.
I happened to peek at other vt8500 drivers and the lack of proper error
handling and absence of remove() methods is a common theme among them.
> + return -ENODEV;
> + }
> +
> + /* set power button to soft-power */
> + status = readl(data->pmc_base + 0x54);
> + writel(status | 1, data->pmc_base + 0x54);
> +
> + /* clear any pending interrupts */
> + status = readl(data->pmc_base + 0x14);
> + writel(status, data->pmc_base + 0x14);
> +
> + data->kpad_power = input_allocate_device();
> + if (!data->kpad_power) {
> + dev_err(&pdev->dev, "failed to allocate input device\n");
> + return -ENOMEM;
> + }
> +
> + data->kpad_power->evbit[0] = BIT_MASK(EV_KEY);
> + set_bit(data->keycode, data->kpad_power->keybit);
Make it:
input_set_capability(data->kpad_power, EV_KEY, data->keycode);
> +
> + data->kpad_power->name = "wmt_power_keypad";
> + data->kpad_power->phys = "wmt_power_keypad";
You can have more "human" name in name field, you do not have to have
underscores. Also if you want to use phys it is common to have it in
form of "<parent device>/input0" so something like "vt8500-pmic/input0".
> + data->kpad_power->keycode = &data->keycode;
> + data->kpad_power->keycodesize = sizeof(unsigned int);
> + data->kpad_power->keycodemax = 1;
> +
> + err = input_register_device(data->kpad_power);
> + if (err < 0) {
> + dev_err(&pdev->dev, "failed to register input device\n");
> + goto cleanup_input;
> + }
> +
I'd recommend registering input device after you request irq as it
simplifies error path (it is OK for ISR to use allocated but not
registered input device).
> + setup_timer(&data->timer, kpad_power_timeout, (unsigned long)data);
> +
> + data->irq = irq_of_parse_and_map(np, 0);
> + err = request_irq(data->irq, &kpad_power_isr, 0, "pwrbtn", data);
> + if (err < 0) {
> + dev_err(&pdev->dev, "failed to request irq\n");
> + goto cleanup_irq;
> + }
> +
> + platform_set_drvdata(pdev, data);
> +
> + return 0;
> +
> +cleanup_irq:
> + del_timer(&data->timer);
> +cleanup_input:
> + input_free_device(data->kpad_power);
> +
> + return err;
> +}
> +
> +static int vt8500_pwr_kpad_remove(struct platform_device *pdev)
> +
> +{
> + struct kpad_pwr_data *data = platform_get_drvdata(pdev);
> +
> + free_irq(data->irq, data);
> + del_timer(&data->timer);
This should be del_timer_sync().
> + input_unregister_device(data->kpad_power);
> + input_free_device(data->kpad_power);
input_free_device() after input_unregister_device() will result in
double-free. The rule is use input_free_device() if device has not been
registered, otherwise use input_unregister_device().
You also need to unmap the mapped region.
> +
> + return 0;
> +}
> +
> +
> +static struct of_device_id vt8500_pwr_kpad_dt_ids[] = {
> + { .compatible = "wm,power-keypad" },
> + { /* Sentinel */ },
> +};
> +
> +static struct platform_driver vt8500_pwr_kpad_driver = {
> + .probe = vt8500_pwr_kpad_probe,
> + .remove = vt8500_pwr_kpad_remove,
> + .driver = {
> + .name = "wmt-power-keypad",
> + .owner = THIS_MODULE,
> + .of_match_table = vt8500_pwr_kpad_dt_ids,
> + },
> +};
> +
> +module_platform_driver(vt8500_pwr_kpad_driver);
> +
> +MODULE_DESCRIPTION("Wondermedia Power Keypad Driver");
> +MODULE_AUTHOR("Tony Prisk <linux@prisktech.co.nz>");
> +MODULE_LICENSE("GPL v2");
> +MODULE_DEVICE_TABLE(of, vt8500_pwr_kpad_dt_ids);
> --
> 1.7.9.5
>
Thanks.
--
Dmitry
^ permalink raw reply
* Re: [PATCH 1/3] Input: imx_keypad - Add device tree support
From: Dmitry Torokhov @ 2012-12-31 20:22 UTC (permalink / raw)
To: Liu Ying
Cc: Liu Ying, grant.likely, rob.herring, rob, linux, shawn.guo,
s.hauer, linus.walleij, cjb, broonie, linux-arm-kernel,
linux-input, linux-doc
In-Reply-To: <CA+8Hj81b898ctejvUTiOk-syy=wuVAb4S2Sch7_vX3QmCUmh3g@mail.gmail.com>
On Mon, Dec 31, 2012 at 02:36:54PM +0800, Liu Ying wrote:
> Hi, Dmitry,
>
> Thanks for reviewing this patch.
>
> 2012/12/31 Dmitry Torokhov <dmitry.torokhov@gmail.com>:
> > Hi Liu,
> >
> > On Sun, Dec 30, 2012 at 09:09:04PM +0800, Liu Ying wrote:
> >> This patch adds device tree support for imx keypad driver.
> >> 1) Basic device tree binding support.
> >> 2) Since the probe function needs keymap and keymap size
> >> information, we get them from device tree if it is
> >> supported, otherwise, we fall back to legacy platform data.
> >> 3) Support to configure keypad pins via pinctrl system.
> >>
> >> Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
> >> ---
> >> .../devicetree/bindings/input/imx-keypad.txt | 54 +++++++++++++
> >> drivers/input/keyboard/imx_keypad.c | 80 ++++++++++++++++++--
> >> 2 files changed, 127 insertions(+), 7 deletions(-)
> >> create mode 100644 Documentation/devicetree/bindings/input/imx-keypad.txt
> >>
> >> diff --git a/Documentation/devicetree/bindings/input/imx-keypad.txt b/Documentation/devicetree/bindings/input/imx-keypad.txt
> >> new file mode 100644
> >> index 0000000..1c6e16d
> >> --- /dev/null
> >> +++ b/Documentation/devicetree/bindings/input/imx-keypad.txt
> >> @@ -0,0 +1,54 @@
> >> +* Freescale i.MX Keypad Port(KPP) device tree bindings
> >> +
> >> +The KPP is designed to interface with a keypad matrix with 2-point contact
> >> +or 3-point contact keys. The KPP is designed to simplify the software task
> >> +of scanning a keypad matrix. The KPP is capable of detecting, debouncing,
> >> +and decoding one or multiple keys pressed simultaneously on a keypad.
> >> +
> >> +Required SoC Specific Properties:
> >> +- compatible: Should be "fsl,imx-kpp".
> >> +
> >> +- reg: Physical base address of the KPP and length of memory mapped
> >> + region.
> >> +
> >> +- interrupts: The KPP interrupt number to the CPU(s).
> >> +
> >> +- clocks: The clock provided by the SoC to the KPP. Some SoCs use ipg clock,
> >> +others use dummy clock(The clock for the KPP is provided by the SoCs
> >> +automatically).
> >> +
> >> +Required Board Specific Properties:
> >> +- pinctrl-names: The definition can be found at
> >> +pinctrl/pinctrl-bindings.txt.
> >> +
> >> +- pinctrl-0: The definition can be found at
> >> +pinctrl/pinctrl-bindings.txt.
> >> +
> >> +- linux,keymap: The definition can be found at
> >> +bindings/input/matrix-keymap.txt.
> >> +
> >> +Example:
> >> +kpp: kpp@73f94000 {
> >> + compatible = "fsl,imx-kpp";
> >> + reg = <0x73f94000 0x4000>;
> >> + interrupts = <60>;
> >> + clocks = <&clks 0>;
> >> + pinctrl-names = "default";
> >> + pinctrl-0 = <&pinctrl_kpp_1>;
> >> + linux,keymap = <0x00000067 /* KEY_UP */
> >> + 0x0001006c /* KEY_DOWN */
> >> + 0x00020072 /* KEY_VOLUMEDOWN */
> >> + 0x00030066 /* KEY_HOME */
> >> + 0x0100006a /* KEY_RIGHT */
> >> + 0x01010069 /* KEY_LEFT */
> >> + 0x0102001c /* KEY_ENTER */
> >> + 0x01030073 /* KEY_VOLUMEUP */
> >> + 0x02000040 /* KEY_F6 */
> >> + 0x02010042 /* KEY_F8 */
> >> + 0x02020043 /* KEY_F9 */
> >> + 0x02030044 /* KEY_F10 */
> >> + 0x0300003b /* KEY_F1 */
> >> + 0x0301003c /* KEY_F2 */
> >> + 0x0302003d /* KEY_F3 */
> >> + 0x03030074>; /* KEY_POWER */
> >> +};
> >> diff --git a/drivers/input/keyboard/imx_keypad.c b/drivers/input/keyboard/imx_keypad.c
> >> index 6d150e3..e4f5c6a 100644
> >> --- a/drivers/input/keyboard/imx_keypad.c
> >> +++ b/drivers/input/keyboard/imx_keypad.c
> >> @@ -20,6 +20,8 @@
> >> #include <linux/jiffies.h>
> >> #include <linux/kernel.h>
> >> #include <linux/module.h>
> >> +#include <linux/of.h>
> >> +#include <linux/pinctrl/consumer.h>
> >> #include <linux/platform_device.h>
> >> #include <linux/slab.h>
> >> #include <linux/timer.h>
> >> @@ -414,17 +416,76 @@ open_err:
> >> return -EIO;
> >> }
> >>
> >> +static struct of_device_id imx_keypad_of_match[] = {
> >> + { .compatible = "fsl,imx-kpp", },
> >> + { /* sentinel */ }
> >> +};
> >> +MODULE_DEVICE_TABLE(of, imx_keypad_of_match);
> >> +
> >> +#ifdef CONFIG_OF
> >> +static int imx_keypad_parse_dt(struct platform_device *pdev,
> >> + uint32_t *keymap, int *keymap_size)
> >> +{
> >> + struct device_node *np = pdev->dev.of_node;
> >> + struct device *dev = &pdev->dev;
> >> + unsigned int proplen, i;
> >> + const __be32 *prop;
> >> +
> >> + if (!np)
> >> + return -ENODEV;
> >> +
> >> + prop = of_get_property(np, "linux,keymap", &proplen);
> >> + if (!prop) {
> >> + dev_err(dev, "OF: linux,keymap property not defined in %s\n",
> >> + np->full_name);
> >> + return -ENOENT;
> >> + }
> >> +
> >> + if (proplen % sizeof(u32)) {
> >> + dev_err(dev, "OF: Malformed keycode property in %s\n",
> >> + np->full_name);
> >> + return -EINVAL;
> >> + }
> >> +
> >> + *keymap_size = proplen / sizeof(u32);
> >> + if (*keymap_size > MAX_MATRIX_KEY_NUM) {
> >> + dev_err(dev, "OF: linux,keymap size overflow\n");
> >> + return -EINVAL;
> >> + }
> >> +
> >> + for (i = 0; i < *keymap_size; i++)
> >> + keymap[i] = be32_to_cpup(prop + i);
> >
> > All of this is implemented in matrix_keypad_build_keymap(), there is no
> > need to do it again here.
> The probe function of this driver needs the keymap information to set
> keypad->rows_en_mask and keypad->cols_en_mask so that they can be used
> later. I plan to change to parse the array keypad->keycodes[], which
> is set by matrix_keypad_build_keymap(), to get the row/col mask. Do
> you think this is acceptable?
Yes, I believe this should be fine.
Thanks.
--
Dmitry
^ permalink raw reply
* [PATCH 1/3] Input: imx_keypad - Add device tree support
From: Dmitry Torokhov @ 2012-12-31 20:22 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <CA+8Hj81b898ctejvUTiOk-syy=wuVAb4S2Sch7_vX3QmCUmh3g@mail.gmail.com>
On Mon, Dec 31, 2012 at 02:36:54PM +0800, Liu Ying wrote:
> Hi, Dmitry,
>
> Thanks for reviewing this patch.
>
> 2012/12/31 Dmitry Torokhov <dmitry.torokhov@gmail.com>:
> > Hi Liu,
> >
> > On Sun, Dec 30, 2012 at 09:09:04PM +0800, Liu Ying wrote:
> >> This patch adds device tree support for imx keypad driver.
> >> 1) Basic device tree binding support.
> >> 2) Since the probe function needs keymap and keymap size
> >> information, we get them from device tree if it is
> >> supported, otherwise, we fall back to legacy platform data.
> >> 3) Support to configure keypad pins via pinctrl system.
> >>
> >> Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
> >> ---
> >> .../devicetree/bindings/input/imx-keypad.txt | 54 +++++++++++++
> >> drivers/input/keyboard/imx_keypad.c | 80 ++++++++++++++++++--
> >> 2 files changed, 127 insertions(+), 7 deletions(-)
> >> create mode 100644 Documentation/devicetree/bindings/input/imx-keypad.txt
> >>
> >> diff --git a/Documentation/devicetree/bindings/input/imx-keypad.txt b/Documentation/devicetree/bindings/input/imx-keypad.txt
> >> new file mode 100644
> >> index 0000000..1c6e16d
> >> --- /dev/null
> >> +++ b/Documentation/devicetree/bindings/input/imx-keypad.txt
> >> @@ -0,0 +1,54 @@
> >> +* Freescale i.MX Keypad Port(KPP) device tree bindings
> >> +
> >> +The KPP is designed to interface with a keypad matrix with 2-point contact
> >> +or 3-point contact keys. The KPP is designed to simplify the software task
> >> +of scanning a keypad matrix. The KPP is capable of detecting, debouncing,
> >> +and decoding one or multiple keys pressed simultaneously on a keypad.
> >> +
> >> +Required SoC Specific Properties:
> >> +- compatible: Should be "fsl,imx-kpp".
> >> +
> >> +- reg: Physical base address of the KPP and length of memory mapped
> >> + region.
> >> +
> >> +- interrupts: The KPP interrupt number to the CPU(s).
> >> +
> >> +- clocks: The clock provided by the SoC to the KPP. Some SoCs use ipg clock,
> >> +others use dummy clock(The clock for the KPP is provided by the SoCs
> >> +automatically).
> >> +
> >> +Required Board Specific Properties:
> >> +- pinctrl-names: The definition can be found at
> >> +pinctrl/pinctrl-bindings.txt.
> >> +
> >> +- pinctrl-0: The definition can be found at
> >> +pinctrl/pinctrl-bindings.txt.
> >> +
> >> +- linux,keymap: The definition can be found at
> >> +bindings/input/matrix-keymap.txt.
> >> +
> >> +Example:
> >> +kpp: kpp at 73f94000 {
> >> + compatible = "fsl,imx-kpp";
> >> + reg = <0x73f94000 0x4000>;
> >> + interrupts = <60>;
> >> + clocks = <&clks 0>;
> >> + pinctrl-names = "default";
> >> + pinctrl-0 = <&pinctrl_kpp_1>;
> >> + linux,keymap = <0x00000067 /* KEY_UP */
> >> + 0x0001006c /* KEY_DOWN */
> >> + 0x00020072 /* KEY_VOLUMEDOWN */
> >> + 0x00030066 /* KEY_HOME */
> >> + 0x0100006a /* KEY_RIGHT */
> >> + 0x01010069 /* KEY_LEFT */
> >> + 0x0102001c /* KEY_ENTER */
> >> + 0x01030073 /* KEY_VOLUMEUP */
> >> + 0x02000040 /* KEY_F6 */
> >> + 0x02010042 /* KEY_F8 */
> >> + 0x02020043 /* KEY_F9 */
> >> + 0x02030044 /* KEY_F10 */
> >> + 0x0300003b /* KEY_F1 */
> >> + 0x0301003c /* KEY_F2 */
> >> + 0x0302003d /* KEY_F3 */
> >> + 0x03030074>; /* KEY_POWER */
> >> +};
> >> diff --git a/drivers/input/keyboard/imx_keypad.c b/drivers/input/keyboard/imx_keypad.c
> >> index 6d150e3..e4f5c6a 100644
> >> --- a/drivers/input/keyboard/imx_keypad.c
> >> +++ b/drivers/input/keyboard/imx_keypad.c
> >> @@ -20,6 +20,8 @@
> >> #include <linux/jiffies.h>
> >> #include <linux/kernel.h>
> >> #include <linux/module.h>
> >> +#include <linux/of.h>
> >> +#include <linux/pinctrl/consumer.h>
> >> #include <linux/platform_device.h>
> >> #include <linux/slab.h>
> >> #include <linux/timer.h>
> >> @@ -414,17 +416,76 @@ open_err:
> >> return -EIO;
> >> }
> >>
> >> +static struct of_device_id imx_keypad_of_match[] = {
> >> + { .compatible = "fsl,imx-kpp", },
> >> + { /* sentinel */ }
> >> +};
> >> +MODULE_DEVICE_TABLE(of, imx_keypad_of_match);
> >> +
> >> +#ifdef CONFIG_OF
> >> +static int imx_keypad_parse_dt(struct platform_device *pdev,
> >> + uint32_t *keymap, int *keymap_size)
> >> +{
> >> + struct device_node *np = pdev->dev.of_node;
> >> + struct device *dev = &pdev->dev;
> >> + unsigned int proplen, i;
> >> + const __be32 *prop;
> >> +
> >> + if (!np)
> >> + return -ENODEV;
> >> +
> >> + prop = of_get_property(np, "linux,keymap", &proplen);
> >> + if (!prop) {
> >> + dev_err(dev, "OF: linux,keymap property not defined in %s\n",
> >> + np->full_name);
> >> + return -ENOENT;
> >> + }
> >> +
> >> + if (proplen % sizeof(u32)) {
> >> + dev_err(dev, "OF: Malformed keycode property in %s\n",
> >> + np->full_name);
> >> + return -EINVAL;
> >> + }
> >> +
> >> + *keymap_size = proplen / sizeof(u32);
> >> + if (*keymap_size > MAX_MATRIX_KEY_NUM) {
> >> + dev_err(dev, "OF: linux,keymap size overflow\n");
> >> + return -EINVAL;
> >> + }
> >> +
> >> + for (i = 0; i < *keymap_size; i++)
> >> + keymap[i] = be32_to_cpup(prop + i);
> >
> > All of this is implemented in matrix_keypad_build_keymap(), there is no
> > need to do it again here.
> The probe function of this driver needs the keymap information to set
> keypad->rows_en_mask and keypad->cols_en_mask so that they can be used
> later. I plan to change to parse the array keypad->keycodes[], which
> is set by matrix_keypad_build_keymap(), to get the row/col mask. Do
> you think this is acceptable?
Yes, I believe this should be fine.
Thanks.
--
Dmitry
^ permalink raw reply
* Re: [PATCH 1/1] Input: samsung-keypad: Add support for pinctrl
From: Dmitry Torokhov @ 2012-12-31 20:20 UTC (permalink / raw)
To: Sachin Kamat; +Cc: linux-input, kgene.kim, patches, Linus Walleij
In-Reply-To: <CAK9yfHy3j5R+OmVcDP_oByjz7yrGR4Bs9+u92Y9u3mjTY0jcdQ@mail.gmail.com>
Hi Sachin,
On Mon, Dec 31, 2012 at 09:15:38AM +0530, Sachin Kamat wrote:
> Hi Dmitry,
>
> On 7 December 2012 00:59, Linus Walleij <linus.walleij@linaro.org> wrote:
> > On Thu, Dec 6, 2012 at 11:18 AM, Sachin Kamat <sachin.kamat@linaro.org> wrote:
> >
> >> Added support for pin configuration using pinctrl subsystem
> >> to the Samsung keypad driver.
> >>
> >> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
> >
> > So we've tried to add some pinctrl default fetchers into the input drivers
> > and Dmitry don't like sprinking calls like that all over the drivers so
> > we're trying to come up with some other scheme.
> >
> > I sent one patch that tried to pick the pinctrl handles by using
> > notifiers but it doesn't work basically due to probe deferral.
> >
> > So next approach will be to try and modify the device core to
> > fetch default pinctrl states.
> >
> > You might try to lobby Dmitry to accepting this in the meantime,
> > as a stepping stone. (I'm OK with it, Acked-by).
>
> What is your opinion about this patch? Can you please accept this
> until we have some common scheme to handle this.
I'd rather we wait for the device core patch to get in (I believe Greg
KH was basically OK with it so 3.9 is the current target) and you
carried this patch locally for now.
Thanks.
--
Dmitry
^ permalink raw reply
* [Qemu-devel] Using QEMU guest agent to run programs from guest path
From: Erlon Cruz @ 2012-12-31 20:14 UTC (permalink / raw)
To: mdroth; +Cc: qemu-devel, lcapitulino
[-- Attachment #1: Type: text/plain, Size: 575 bytes --]
Hi,
I needed to run an external program in a guest machine. Once this must be
triggered by the host, I first thought in qemu-ga.
Is that possible? In QEMU help page and in the code I couldn't find such
capability.
So Im thinking In to implement a new GA QMP command that can run generic
programs in the guest. It would be receive/return something like this:
{"execute":"execvp",
"arguments":{"command":"/bin/ls","cmdargs":"-la","timeout":20}}
{"return": {"status": "0", "stdout": "aGVsbG8gd29ybGQhCg==", "stderr": ""}}
Any thoughts/ideas about this?
Kind Regards,
Erlon
[-- Attachment #2: Type: text/html, Size: 926 bytes --]
^ permalink raw reply
* Re: cannot make this Asus my cinema-u3100miniplusv2 work under linux
From: Antti Palosaari @ 2012-12-31 20:09 UTC (permalink / raw)
To: Renato Gallo; +Cc: linux-media
In-Reply-To: <3093cb24f3c05ac9cf62810fc918fca2@unixproducts.com>
No! You will need a real antenna, not amplifier(?) like that. One of the
best and easily available antennas in EU are Televes DAT75 and few Triax
models. Compare DAT75 and your antenna, DAT75 is 19dB and your is 30dB,
guess which one is still 1000x better.
You will not likely need that heavy antenna like DAT75 as you still have
a signal. Some 10-20 euros 1m long Yagi is enough.
regards
Antti
On 12/18/2012 12:32 AM, Renato Gallo wrote:
> is there any kind of filter so that i can filter out the noise and then
> amplify the signal ?
>
> Il 17/12/2012 22:45 Luca Olivetti ha scritto:
>> Al 17/12/12 20:57, En/na Renato Gallo ha escrit:
>>
>>> can i amplify the signal to improve reception ?
>>
>> an amplifier will amplify the noise as well as the signal (i.e., an
>> amplifier is only useful to compensate for the losses in the cable,
>> not to improve the signal).
>>
>>> why with the bowl is better ?
>>
>> http://en.wikipedia.org/wiki/Monopole_antenna
>>
>> The bowl acts as a ground plane
>>
>> Bye
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
http://palosaari.fi/
^ permalink raw reply
* [Qemu-devel] [PATCH] linux-user: improve print_fcntl()
From: Laurent Vivier @ 2012-12-31 20:00 UTC (permalink / raw)
To: qemu-devel; +Cc: Riku Voipio, Laurent Vivier
From: Laurent Vivier <Laurent@Vivier.EU>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---
linux-user/strace.c | 97 +++++++++++++++++++++++++++++++++++++++++----------
1 file changed, 79 insertions(+), 18 deletions(-)
diff --git a/linux-user/strace.c b/linux-user/strace.c
index 6ec90e8..039fee8 100644
--- a/linux-user/strace.c
+++ b/linux-user/strace.c
@@ -462,18 +462,6 @@ UNUSED static struct flags mmap_flags[] = {
FLAG_END,
};
-UNUSED static struct flags fcntl_flags[] = {
- FLAG_TARGET(F_DUPFD),
- FLAG_TARGET(F_GETFD),
- FLAG_TARGET(F_SETFD),
- FLAG_TARGET(F_GETFL),
- FLAG_TARGET(F_SETFL),
- FLAG_TARGET(F_GETLK),
- FLAG_TARGET(F_SETLK),
- FLAG_TARGET(F_SETLKW),
- FLAG_END,
-};
-
UNUSED static struct flags clone_flags[] = {
FLAG_GENERIC(CLONE_VM),
FLAG_GENERIC(CLONE_FS),
@@ -867,12 +855,85 @@ print_fcntl(const struct syscallname *name,
{
print_syscall_prologue(name);
print_raw_param("%d", arg0, 0);
- print_flags(fcntl_flags, arg1, 0);
- /*
- * TODO: check flags and print following argument only
- * when needed.
- */
- print_pointer(arg2, 1);
+ switch(arg1) {
+ case TARGET_F_DUPFD:
+ gemu_log("F_DUPFD,");
+ print_raw_param(TARGET_ABI_FMT_ld, arg2, 1);
+ break;
+ case TARGET_F_GETFD:
+ gemu_log("F_GETFD");
+ break;
+ case TARGET_F_SETFD:
+ gemu_log("F_SETFD,");
+ print_raw_param(TARGET_ABI_FMT_ld, arg2, 1);
+ break;
+ case TARGET_F_GETFL:
+ gemu_log("F_GETFL");
+ break;
+ case TARGET_F_SETFL:
+ gemu_log("F_SETFL,");
+ print_open_flags(arg2, 1);
+ break;
+ case TARGET_F_GETLK:
+ gemu_log("F_GETLK,");
+ print_pointer(arg2, 1);
+ break;
+ case TARGET_F_SETLK:
+ gemu_log("F_SETLK,");
+ print_pointer(arg2, 1);
+ break;
+ case TARGET_F_SETLKW:
+ gemu_log("F_SETLKW,");
+ print_pointer(arg2, 1);
+ break;
+ case TARGET_F_GETOWN:
+ gemu_log("F_GETOWN");
+ break;
+ case TARGET_F_SETOWN:
+ gemu_log("F_SETOWN,");
+ print_raw_param(TARGET_ABI_FMT_ld, arg2, 0);
+ break;
+ case TARGET_F_GETSIG:
+ gemu_log("F_GETSIG");
+ break;
+ case TARGET_F_SETSIG:
+ gemu_log("F_SETSIG,");
+ print_raw_param(TARGET_ABI_FMT_ld, arg2, 0);
+ break;
+#if TARGET_ABI_BITS == 32
+ case TARGET_F_GETLK64:
+ gemu_log("F_GETLK64,");
+ print_pointer(arg2, 1);
+ break;
+ case TARGET_F_SETLK64:
+ gemu_log("F_SETLK64,");
+ print_pointer(arg2, 1);
+ break;
+ case TARGET_F_SETLKW64:
+ gemu_log("F_SETLKW64,");
+ print_pointer(arg2, 1);
+ break;
+#endif
+ case TARGET_F_SETLEASE:
+ gemu_log("F_SETLEASE,");
+ print_raw_param(TARGET_ABI_FMT_ld, arg2, 0);
+ break;
+ case TARGET_F_GETLEASE:
+ gemu_log("F_GETLEASE");
+ break;
+ case TARGET_F_DUPFD_CLOEXEC:
+ gemu_log("F_DUPFD_CLOEXEC,");
+ print_raw_param(TARGET_ABI_FMT_ld, arg2, 1);
+ break;
+ case TARGET_F_NOTIFY:
+ gemu_log("F_NOTIFY,");
+ print_raw_param(TARGET_ABI_FMT_ld, arg2, 0);
+ break;
+ default:
+ print_raw_param(TARGET_ABI_FMT_ld, arg1, 0);
+ print_pointer(arg2, 1);
+ break;
+ }
print_syscall_epilogue(name);
}
#define print_fcntl64 print_fcntl
--
1.7.10.4
^ permalink raw reply related
* Re: [PATCH] [media] Add common binding documentation for video interfaces
From: Sylwester Nawrocki @ 2012-12-31 19:51 UTC (permalink / raw)
To: Stephen Warren, grant.likely
Cc: g.liakhovetski, linux-media, rob.herring, nicolas.thery, s.hauer,
laurent.pinchart, hverkuil, devicetree-discuss, linux-doc,
Sylwester Nawrocki
In-Reply-To: <50D0A475.7010800@wwwdotorg.org>
On 12/18/2012 06:14 PM, Stephen Warren wrote:
> On 12/15/2012 02:13 PM, Sylwester Nawrocki wrote:
>> From: Guennadi Liakhovetski<g.liakhovetski@gmx.de>
>>
>> This patch adds a document describing common OF bindings for video
>> capture, output and video processing devices. It is currently mainly
>> focused on video capture devices, with data interfaces defined in
>> standards like ITU-R BT.656 or MIPI CSI-2.
>> It also documents a method of describing data links between devices.
>
> (quickly/briefly)
> Reviewed-by: Stephen Warren<swarren@nvidia.com>
Thank you for the review. I'm just wondering if it is OK to merge this
patch through the media tree, together with the remainder of this series.
Or should it go through the device tree maintainer's tree ?
^ permalink raw reply
* Re: [Qemu-devel] [Autotest PATCH 2/2] virt run: add three logical case filters
From: Lucas Meneghel Rodrigues @ 2012-12-31 19:55 UTC (permalink / raw)
To: Amos Kong; +Cc: autotest-kernel, qemu-devel, virt-test-devel
In-Reply-To: <20121230011013.GA1742@t430s.redhat.com>
Hmmm, about this one, I'm worried about making things more complex...
The way I see the problem at hand, I'd say if people want to customize
things, they'd be better of creating their own, specialized config
files rather than adding command line flags to manipulate the test
sets.
So my initial stand on this particular patch is NACK, but you might
convince me otherwise :)
On Sat, Dec 29, 2012 at 11:10 PM, Amos Kong <akong@redhat.com> wrote:
> On Sun, Dec 30, 2012 at 09:02:09AM +0800, Amos Kong wrote:
>> This patch added there options for filtering cases by logics,
>>
>> For example:
>> ./run -t qemu -c tests.cfg --oronly="WinXP Win7" --andonly="boot 64" --not="sp1"
>
> Oh! a typo in commitlog
>
> ./run -t qemu -c tests.cfg --or="WinXP Win7" --and="boot 64" --not="sp1"
>
>> (following cases will be executed)
>>
>> Test 1: virtio_blk.smp2.virtio_net.WinXP.64.boot
>> Test 2: virtio_blk.smp2.virtio_net.Win7.64.boot
> ...
>
> Amos
>
--
Lucas
^ permalink raw reply
* [Qemu-devel] [PATCH] linux-user: correct setsockopt() SO_SNDTIMEO and SO_RCVTIMEO take a struct timeval, not an int
From: Laurent Vivier @ 2012-12-31 19:53 UTC (permalink / raw)
To: qemu-devel; +Cc: Riku Voipio, Laurent Vivier
From: Laurent Vivier <Laurent@Vivier.EU>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---
linux-user/syscall.c | 26 +++++++++++++++++++-------
1 file changed, 19 insertions(+), 7 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index e99adab..1530c8f 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -1491,6 +1491,25 @@ static abi_long do_setsockopt(int sockfd, int level, int optname,
break;
case TARGET_SOL_SOCKET:
switch (optname) {
+ case TARGET_SO_RCVTIMEO: {
+ struct timeval tv;
+
+ optname = SO_RCVTIMEO;
+
+set_timeout:
+ if (optlen != sizeof(struct target_timeval))
+ return -TARGET_EINVAL;
+
+ if (copy_from_user_timeval(&tv, optval_addr))
+ return -TARGET_EFAULT;
+
+ ret = get_errno(setsockopt(sockfd, SOL_SOCKET, optname,
+ &tv, sizeof(tv)));
+ return ret;
+ }
+ case TARGET_SO_SNDTIMEO:
+ optname = SO_SNDTIMEO;
+ goto set_timeout;
/* Options with 'int' argument. */
case TARGET_SO_DEBUG:
optname = SO_DEBUG;
@@ -1542,13 +1561,6 @@ static abi_long do_setsockopt(int sockfd, int level, int optname,
case TARGET_SO_RCVLOWAT:
optname = SO_RCVLOWAT;
break;
- case TARGET_SO_RCVTIMEO:
- optname = SO_RCVTIMEO;
- break;
- case TARGET_SO_SNDTIMEO:
- optname = SO_SNDTIMEO;
- break;
- break;
default:
goto unimplemented;
}
--
1.7.10.4
^ permalink raw reply related
* Re: [Qemu-devel] [Virt-test-devel] [Autotest PATCH 1/2] virt run: fix typo in help message
From: Lucas Meneghel Rodrigues @ 2012-12-31 19:52 UTC (permalink / raw)
To: Amos Kong; +Cc: autotest-kernel, qemu-devel, virt-test-devel
In-Reply-To: <1356829329-30082-1-git-send-email-akong@redhat.com>
Ok, this looks good, applied, thanks!
On Sat, Dec 29, 2012 at 11:02 PM, Amos Kong <akong@redhat.com> wrote:
> type 'kvm' already been changed to 'qemu'
>
> Signed-off-by: Amos Kong <akong@redhat.com>
> ---
> run | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/run b/run
> index 97dcdad..aac332a 100755
> --- a/run
> +++ b/run
> @@ -145,7 +145,7 @@ class VirtTestRunParser(optparse.OptionParser):
> general.add_option("-v", "--verbose", action="store_true",
> dest="verbose", help="Exhibit debug messages")
> general.add_option("-t", "--type", action="store", dest="type",
> - help="Choose test type (kvm, libvirt, v2v)")
> + help="Choose test type (qemu, libvirt, v2v)")
> general.add_option("-c", "--config", action="store", dest="config",
> help="Explicitly choose a cartesian config")
> general.add_option("-r", "--restore-image", action="store_true",
> @@ -174,7 +174,7 @@ class VirtTestRunParser(optparse.OptionParser):
> "%default"))
> self.add_option_group(general)
>
> - qemu = optparse.OptionGroup(self, 'Options specific to the kvm test')
> + qemu = optparse.OptionGroup(self, 'Options specific to the qemu test')
> qemu.add_option("--qemu-bin", action="store", dest="qemu",
> help=("Path to a custom qemu binary to be tested. "
> "Default path: %s" % qemu_bin_path))
> --
> 1.7.1
>
> _______________________________________________
> Virt-test-devel mailing list
> Virt-test-devel@redhat.com
> https://www.redhat.com/mailman/listinfo/virt-test-devel
--
Lucas
^ permalink raw reply
* Re: [PATCH] [media] Add common binding documentation for video interfaces
From: Sylwester Nawrocki @ 2012-12-31 19:51 UTC (permalink / raw)
To: Stephen Warren, grant.likely-s3s/WqlpOiPyB63q8FvJNQ
Cc: linux-doc-u79uwXL29TY76Z2rM5mHXA,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ,
s.hauer-bIcnvbaLZ9MEGnE8C9+IrQ, nicolas.thery-qxv4g6HH51o,
rob.herring-bsGFqQB8/DxBDgjK7y7TUQ,
hverkuil-qWit8jRvyhVmR6Xm/wNWPw,
laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw, Sylwester Nawrocki,
g.liakhovetski-Mmb7MZpHnFY, linux-media-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <50D0A475.7010800-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
On 12/18/2012 06:14 PM, Stephen Warren wrote:
> On 12/15/2012 02:13 PM, Sylwester Nawrocki wrote:
>> From: Guennadi Liakhovetski<g.liakhovetski-Mmb7MZpHnFY@public.gmane.org>
>>
>> This patch adds a document describing common OF bindings for video
>> capture, output and video processing devices. It is currently mainly
>> focused on video capture devices, with data interfaces defined in
>> standards like ITU-R BT.656 or MIPI CSI-2.
>> It also documents a method of describing data links between devices.
>
> (quickly/briefly)
> Reviewed-by: Stephen Warren<swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Thank you for the review. I'm just wondering if it is OK to merge this
patch through the media tree, together with the remainder of this series.
Or should it go through the device tree maintainer's tree ?
^ permalink raw reply
* meta-ti with yocto
From: Edward Vidal @ 2012-12-31 19:49 UTC (permalink / raw)
To: yocto
[-- Attachment #1: Type: text/plain, Size: 12610 bytes --]
Hello,
Any help will be appreciated..
Following the steps at site
*http://maniacbug.wordpress.com/2012/08/03/pandayocto/* with minor
changes.
Not using poky-denzil-7.0 instead using latest version as of 12/22/12 (see
below). Did not git checkout 30fb40ebc13614a74c2e237927c60ac43e01d1bc
instead used version that was 07/09/12 which follows oe-core to v5.0. The
changes described were modified (see below diff local.conf &
local.conf.installed ) since quotes were needed for MACHINE & BBMASK. I
also tried with a build using Angstrom which fails but does create a kernel
uImage using linux-omap4-3.1.0-r1a. The meta-ti with yocto is fetching
linux-omap4-3.1.0-r0 which fails at do_fetch. This was fixed with a manual
fetch (see below on steps to download the kernel). Now the problem is
getting the pandaboard to boot.
Does a build with yocto and meta-ti require an initrd file? Does anyone
have a working uEnv.txt for the pandaboard?
Build system Fedora17 x86_17
cd /home/vidal/POKY/build122912_panda/
git clone git://git.yoctoproject.org/poky.git
cd poky
git clone *https://github.com/Angstrom-distribution/meta-ti.git*
/home/vidal/POKY/build122912_panda/poky
commit 4a36a32567ecfbc7ce7b967803e6e23314953ef5
Author: Martin Jansa <martin.jansa at gmail.com
<http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/angstrom-distro-devel>>
Date: Sat Dec 22 17:24:20 2012 +0100
libpng: fix packaging
* PN-LIBV is not needed, was used to package libpng12 from libpng3 build
now only libpng15 is built.
* if you're not using OEBasicHash + PRserv you need to rebuild and
reinstall a lot of packages to upgrade to libpng-1.5 correctly
(From OE-Core rev: 69bbce0176183b0dc14eda21e4f6b601443060f0)
Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com
<http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/angstrom-distro-devel>>
Signed-off-by: Saul Wold <sgw at linux.intel.com
<http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/angstrom-distro-devel>>
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org
<http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/angstrom-distro-devel>>
/home/vidal/POKY/build122912_panda/poky/build/conf/local.conf
*********************************************************
----------new text--------------
MACHINE ?= "pandaboard"
BBMASK = "meta-ti/recipes-misc"
----------new text--------------
----------additional text--------------
----------modified text--------------
BB_NUMBER_THREADS = "8"
----------modified text--------------
----------additional text--------------
----------modified text--------------
PARALLEL_MAKE = "-j 8"
----------modified text--------------
----------additional text--------------
----------modified text--------------
DL_DIR ?= "/home/vidal/POKY/linux_sr_dnloads_panda/downloads"
----------modified text--------------
----------additional text--------------
*********************************************************
/home/vidal/POKY/build129112_panda/poky/build/conf/bblayers.conf
*********************************************************
# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
LCONF_VERSION = "6"
BBPATH = "${TOPDIR}"
BBFILES ?= ""
BBLAYERS ?= " \
/home/vidal/POKY/build122912_panda/poky/meta \
/home/vidal/POKY/build122912_panda/poky/meta-yocto \
/home/vidal/POKY/build122912_panda/poky/meta-ti \
/home/vidal/POKY/build122912_panda/poky/meta-yocto-bsp \
"
BBLAYERS_NON_REMOVABLE ?= " \
/home/vidal/POKY/build122912_panda/poky/meta \
/home/vidal/POKY/build122912_panda/poky/meta-yocto \
"
*********************************************************
/home/vidal/POKY/build129112_panda/poky/meta-ti/conf/machine/pandaboard.conf
*********************************************************
#@TYPE: Machine
#@NAME: Pandaboard
#@DESCRIPTION: Machine configuration for the OMAP4430 Panda
require conf/machine/include/omap4.inc
UBOOT_MACHINE = "omap4_panda_config"
GUI_MACHINE_CLASS = "bigscreen"
IMAGE_FSTYPES += "tar.bz2"
SERIAL_CONSOLE = "115200 ttyO2"
MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
MACHINE_FEATURES = "kernel26 wifi bluetooth alsa apm ext2 screen
touchscreen usbgadget usbhost vfat"
*********************************************************
/home/vidal/POKY/build122912_panda/poky/meta-ti/conf/machine/include/omap4.inc
*********************************************************
SOC_FAMILY = "omap4"
require conf/machine/include/soc-family.inc
require conf/machine/include/tune-cortexa9.inc
PREFERRED_PROVIDER_virtual/kernel = "linux-omap4"
PREFERRED_PROVIDER_virtual/bootloader = "u-boot"
PREFERRED_PROVIDER_virtual/xserver = "xserver-xorg"
XSERVER = "xserver-xorg \
xserver-xorg-extension-dri \
xserver-xorg-extension-dri2 \
xserver-xorg-extension-glx \
xf86-input-evdev \
xf86-video-fbdev"
# Increase this everytime you change something in the kernel
MACHINE_KERNEL_PR = "r1"
KERNEL_IMAGETYPE = "uImage"
UBOOT_ENTRYPOINT = "0x80008000"
UBOOT_LOADADDRESS = "0x80008000"
EXTRA_IMAGEDEPENDS += "u-boot"
*********************************************************
/home/vidal/POKY/build122912_panda/poky/meta-ti/recipes-kernel/linux/linux-omap4_3.1.0.bb
*********************************************************
COMPATIBLE_MACHINE = "pandaboard"
require linux.inc
# The main PR is now using MACHINE_KERNEL_PR, for omap4 see
conf/machine/include/omap4.inc
MACHINE_KERNEL_PR_append = "a"
CORTEXA8FIXUP = "no"
# ti-ubuntu-3.1.0-1282.11
SRCREV = "a5c60c099296fcfc0c8fa8085c40883971486512"
SRC_URI = "git://dev.omapzoom.org/pub/scm/integration/kernel-ubuntu.git;protocol=git;branch=ti-ubuntu-3.1-1282\
file://0001-Makefile.fwinst-fix-install-breakage-for-FW-images-r.patch \
file://defconfig \
"
S = "${WORKDIR}/git"
*********************************************************
When fetching linux-omap4_3.0.1-r0 would hang and the kernel was never
built.
/home/vidal/POKY/linux_sr_dnloads_panda/downloads/git2/dev.omapzoom.org.pub.scm.integration.kernel-ubuntu.git/
drwxr-xr-x. 2 vidal users 4096 Dec 21 12:05 branches
-rw-r--r--. 1 vidal users 176 Dec 29 11:51 config
-rw-r--r--. 1 vidal users 73 Dec 21 12:05 description
-rw-r--r--. 1 vidal users 0 Dec 29 11:51 FETCH_HEAD
-rw-r--r--. 1 vidal users 23 Dec 21 12:05 HEAD
drwxr-xr-x. 2 vidal users 4096 Dec 21 12:05 hooks
drwxr-xr-x. 2 vidal users 4096 Dec 21 12:05 info
drwxr-xr-x. 4 vidal users 4096 Dec 21 12:05 objects
drwxr-xr-x. 4 vidal users 4096 Dec 21 12:05 refs
Manually downloaded the kernel with the command below.
git clone git://dev.omapzoom.org/pub/scm/integration/kernel-ubuntu.git
cd kernel-ubuntu/
The contents of .git were replaces in
/home/vidal/POKY/linux_sr_dnloads_panda/downloads/git2/dev.omapzoom.org.pub.scm.integration.kernel-ubuntu.git/
drwxr-xr-x. 8 vidal users 4096 Dec 30 09:40 .
drwxr-xr-x. 60 vidal users 4096 Dec 30 09:38 ..
drwxr-xr-x. 2 vidal users 4096 Dec 30 09:33 branches
-rw-r--r--. 1 vidal users 285 Dec 30 09:33 config
-rw-r--r--. 1 vidal users 73 Dec 30 09:33 description
-rw-r--r--. 1 vidal users 20217144 Dec 30 09:33 gitk.cache
-rw-r--r--. 1 vidal users 23 Dec 30 09:33 HEAD
drwxr-xr-x. 2 vidal users 4096 Dec 30 09:33 hooks
-rw-r--r--. 1 vidal users 3206624 Dec 30 09:33 index
drwxr-xr-x. 2 vidal users 4096 Dec 30 09:33 info
drwxr-xr-x. 3 vidal users 4096 Dec 30 09:33 logs
drwxr-xr-x. 4 vidal users 4096 Dec 30 09:33 objects
-rw-r--r--. 1 vidal users 32682 Dec 30 09:33 packed-refs
drwxr-xr-x. 5 vidal users 4096 Dec 30 09:33 refs
-rw-r--r--. 1 vidal users 4174976 Dec 30 10:14
uImage-3.1.0-r0-pandaboard-20121230164443.bin
git clone git://dev.omapzoom.org/pub/scm/integration/kernel-ubuntu.git
cd kernel-ubuntu/
git checkout ti-ubuntu-3.1-1282
commit a5c60c099296fcfc0c8fa8085c40883971486512
Author: Sebastien Jan <s-jan at ti.com
<http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/angstrom-distro-devel>>
Date: Mon Feb 13 13:29:50 2012 +0100
UBUNTU: Ubuntu-3.1.0-1282.11
Signed-off-by: Sebastien Jan <s-jan at ti.com
<http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/angstrom-distro-devel>>
*********************************************************
/home/vidal/POKY/poky_chgs/yocto_pandaboard/mmc/boot_mmc.txt
*********************************************************
setenv bootargs 'root=/dev/mmcblk0p2 rw rootwait rootfstype=ext3
console=ttyO2,115200n8 vram=16M'
fatload mmc 0 82000000 uImage
bootm 82000000
*********************************************************
[vidal at ws009
<http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/angstrom-distro-devel>
~]$ sudo su -
[root at ws009 <http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/angstrom-distro-devel>
~]# cd /home/vidal /POKY/poky_chgs/yocto_pandaboard/mmc
[root at ws009 <http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/angstrom-distro-devel>
vidal]# mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n
"Panda SD Boot" -d boot_mmc.txt boot.scr
Image Name: Panda SD Boot
Created: Mon Dec 31 04:40:56 2012
Image Type: ARM Linux Script (uncompressed)
Data Size: 152 Bytes = 0.15 kB = 0.00 MB
Load Address: 00000000
Entry Point: 00000000
Contents:
Image 0: 144 Bytes = 0.14 kB = 0.00 MB
od -x -Ax boot.scr
/home/vidal/POKY/poky_chgs/yocto_pandaboard/mmc/boot.scr
*********************************************************
000000 0527 5619 3ca9 c5a1 e150 377c 0000 9800
000010 0000 0000 0000 0000 f001 2b1e 0205 0006
000020 6150 646e 2061 4453 4220 6f6f 0074 0000
000030 0000 0000 0000 0000 0000 0000 0000 0000
000040 0000 9000 0000 0000 6573 6574 766e 6220
000050 6f6f 6174 6772 2073 7227 6f6f 3d74 642f
000060 7665 6d2f 636d 6c62 306b 3270 7220 2077
000070 6f72 746f 6177 7469 7220 6f6f 6674 7473
000080 7079 3d65 7865 3374 6320 6e6f 6f73 656c
000090 743d 7974 324f 312c 3531 3032 6e30 2038
0000a0 7620 6172 3d6d 3631 274d 660a 7461 6f6c
0000b0 6461 6d20 636d 3020 3820 3032 3030 3030
0000c0 2030 4975 616d 6567 620a 6f6f 6d74 3820
0000d0 3032 3030 3030 0a30
0000d8
*********************************************************
/home/vidal/POKY/poky_chgs/yocto_pandaboard/conf/uEnv.txt
File obtained from working Fedora17 ARM system appears to require
uInitrf-omap file.
*********************************************************
bootfile=uImage-omap
bootinitrd=uInitrd-omap
boot=bootm
address_image=0x80300000
address_initrd=0x81600000
mmcroot=LABEL=rootfs ro
mmcargs=setenv bootargs root=${mmcroot} init=/sbin/init quiet rootwait rhgb
earlyprintk
loaduimage=run xyz_mmcboot; run mmcargs; ${boot} ${address_image}
${address_initrd}
xyz_load_image=fatload mmc 0:1 ${address_image} ${bootfile}
xyz_load_initrd=fatload mmc 0:1 ${address_initrd} ${bootinitrd}
xyz_mmcboot=run xyz_load_image; run xyz_load_initrd; echo Booting from mmc
...
*********************************************************
Booting with MLO, u-boot.img created by poky and the boot.scr above.
* - * Qodem 0.1.2 Capture Generated Mon, 31 Dec 2012 05:20:44 -0700 BEGIN *
- *
U-Boot SPL 2011.12-dirty (Dec 29 2012 - 11:25:52)
Texas Instruments OMAP4460 ES1.1
OMAP SD/MMC: 0
reading u-boot.img
reading u-boot.img
U-Boot 2011.12-dirty (Dec 29 2012 - 11:25:52)
CPU : OMAP4460 ES1.1
Board: OMAP4 Panda
I2C: ready
DRAM: 1 GiB
MMC: OMAP SD/MMC: 0
Using default environment
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 3 2 1 0
reading boot.scr
216 bytes read
Running bootscript from mmc0 ...
## Executing script at 82000000
reading uImage
4174976 bytes read
## Booting kernel from Legacy Image at 82000000 ...
Image Name: Linux-3.1.0
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 4174912 Bytes = 4 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
[-- Attachment #2: Type: text/html, Size: 13622 bytes --]
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.