Hello,
I'm trying to understand how irq_disable() is supposed to work on
PowerPC systems. Most PowerPC PIC do *not* implement the enable and
disable, but just the unmask and mask methods, e.g:
http://lxr.linux.no/linux+v2.6.26.5/arch/powerpc/sysdev/mpic.c#L867
The irq_disable() function will t
On Tue, 2008-09-23 at 11:08 +0200, Wolfgang Grandegger wrote:
> I'm trying to understand how irq_disable() is supposed to work on
> PowerPC systems. Most PowerPC PIC do *not* implement the enable and
> disable, but just the unmask and mask methods, e.g:
>
> http://lxr.linux.no/linux+v2.6.26.5/ar
I can only tell how I do on MPC834x :
Table 8-6. IVEC/CVEC/MVEC Field Definition
Interrupt ID Number Interrupt Meaning
17 IRQ1
18 IRQ2
19 IRQ3
20
On Monday 22 September 2008 20:24:04 Ingo Molnar wrote:
> * Srinivasa Ds <[EMAIL PROTECTED]> wrote:
> > --- linux-2.6.27-rc7.orig/arch/ia64/include/asm/siginfo.h
> > +++ linux-2.6.27-rc7/arch/ia64/include/asm/siginfo.h
>
> please do not send patches that modify include/asm/ files, the
> include/asm
Hannes Hering wrote:
> This patch implements the memory notifier to update the busmap instantly
> instead of rebuilding the whole map. This is necessary because
> walk_memory_resource provides different information than required during
> memory
> hotplug.
>
> Signed-off-by: Hannes Hering <[EMAIL
On Tue, 2008-09-23 at 11:08 +0200, Andre Schwarz wrote:
> I can only tell how I do on MPC834x :
>
> Table 8-6. IVEC/CVEC/MVEC Field Definition
>
> Interrupt ID Number Interrupt Meaning
> 17 IRQ1
> 18 IRQ2
* Srinivasa Ds <[EMAIL PROTECTED]> wrote:
> On Monday 22 September 2008 20:24:04 Ingo Molnar wrote:
> > * Srinivasa Ds <[EMAIL PROTECTED]> wrote:
> > > --- linux-2.6.27-rc7.orig/arch/ia64/include/asm/siginfo.h
> > > +++ linux-2.6.27-rc7/arch/ia64/include/asm/siginfo.h
> >
> > please do not send p
* Ingo Molnar <[EMAIL PROTECTED]> wrote:
> > Currently a SIGTRAP can denote any one of below reasons.
> > - Breakpoint hit
> > - H/W debug register hit
> > - Single step
> > - Signal sent through kill() or rasie()
> >
> > Architectures like powerpc/parisc provides infrastructure
Matt,
On Montag, 22. September 2008, Matt Sealey wrote:
> Juergen Beisert wrote:
> > Hi,
> > $ lspci
> > 00:18.0 USB Controller: VIA Technologies, Inc. VT82x UHCI USB 1.1
> > Controller (rev 61) 00:18.1 USB Controller: VIA Technologies, Inc.
> > VT82x UHCI USB 1.1 Controller (rev 61) 00:18
On Mon, 22 Sep 2008 16:54:46 -0700
"Victor Gallardo" <[EMAIL PROTECTED]> wrote:
> Hi Josh,
>
> >
> >You need to look in the 'next' branch.
> >
> > http://git.kernel.org/?p=linux/kernel/git/jwboyer/powerpc-4xx.git;a=tree;f=arch/powerpc/platforms/44x;h=c5cae8d37f170193ed45b7b76e3cb2cbb8be927a;hb=n
On Mon, Sep 22, 2008 at 11:45:40PM +0100, Ben Dooks wrote:
> I've also a driver for a similar PMU fitted to a number
> of our boards that provides basic gpio (wakeup sources) and some
> minimalist power management (so isn't really fit for regulator
> framwork) and isn't really a gpio chip (so driv
Hi Ben,
What's your plan for the existing set of EMAC patches? I'm just curious if
you plan to send them through my tree (Jeff acked my set), or if you are
going to ask Jeff to pull them into his.
I could keep an emac branch in my git tree based on whatever you think is
best without much effort
On Mon, Sep 22, 2008 at 04:59:42PM +0200, Peter Korsgaard wrote:
> Structured similar to the existing QE GPIO support.
>
> Signed-off-by: Peter Korsgaard <[EMAIL PROTECTED]>
Acked-by: Anton Vorontsov <[EMAIL PROTECTED]>
Thanks!
--
Anton Vorontsov
email: [EMAIL PROTECTED]
irc://irc.freenode.ne
Hi guys
I'm using a lite5200b EVB (u-boot 1.2, kernel 2.6.26.3), using the psc-spi
driver and the mmc-spi driver.
I've modified the lite5200b.dts file, I'd have SPI on PSC6 and mmc_spi
connected to SPI on PSC6
first I've commented
// [EMAIL PROTECTED] {
// c
of/base.c matches on the first (most specific) entries, which isn't
quite practical but it was discussed[1] that this won't change.
The bindings specifies verbose information for the devices, but
it doesn't fit in the I2C ID's 20 characters limit. The limit won't
change[2], and the bindings won't
On MPC8349E-mITX, MPC8315E-RDB and MPC837x-RDB boards there is a
Freescale MC9S08QG8 (MCU) chip with the custom firmware
pre-programmed. The chip is used to power-off the board by the
software, and to control some GPIO pins.
Signed-off-by: Anton Vorontsov <[EMAIL PROTECTED]>
---
drivers/i2c/chips
Confirmed.
I had this patch and 2 fixes on dts applied simultaneously, and the board
works. I thought this patch was necessary.
I reverted this patch and tried again, the board still works. Thanks for
your insight.
Anyway, the io port read from /proc/ioports is misleading, so I wish it
can be c
On Tuesday 23 September 2008 17:00:01 Ingo Molnar wrote:
> > applied to [the new topic] tip/core/signal, thanks Srinivasa! There
> > are some other pending x86 signal changes already, so i based
> > tip/core/signal on tip/x86/signal.
>
> -tip testing found the following build error with the attach
On Sep 23, 2008, at 7:37 AM, Anton Vorontsov wrote:
On Mon, Sep 22, 2008 at 04:59:42PM +0200, Peter Korsgaard wrote:
Structured similar to the existing QE GPIO support.
Signed-off-by: Peter Korsgaard <[EMAIL PROTECTED]>
Acked-by: Anton Vorontsov <[EMAIL PROTECTED]>
Peter, can you respin.
* Srinivasa Ds <[EMAIL PROTECTED]> wrote:
> > -tip testing found the following build error with the attached
> > config:
>
> Ingo, Reproduced build break issue with your config on tip tree. It
> was a costly overlook to miss one header file. I included it in this
> patch and tested it out.
t
On Tue, Sep 23, 2008 at 02:43:18PM +0200, [EMAIL PROTECTED] wrote:
> Hi guys
>
> I'm using a lite5200b EVB (u-boot 1.2, kernel 2.6.26.3), using the psc-spi
> driver and the mmc-spi driver.
>
> I've modified the lite5200b.dts file, I'd have SPI on PSC6 and mmc_spi
> connected to SPI on PSC6
>
>
Instead, I get an oops right after trying to disable the non-boot CPUs.
This was on 2.6.27-rc6-wl-01382-g0bea1f7-dirty.
http://johannes.sipsolutions.net/files/dsc_2274.jpg
johannes
signature.asc
Description: This is a digitally signed message part
__
Early versions of the Freescale DIU framebuffer driver depended on a bootmem
allocation of memory for the video buffer. The need for this feature was
removed in commit 6b51d51a, so now we can remove the platform-specific code
that allocated that memory.
Signed-off-by: Timur Tabi <[EMAIL PROTECTED
On Sep 22, 2008, at 11:53 PM, Wolfram Sang wrote:
On Mon, Sep 22, 2008 at 06:34:37PM -0500, Kumar Gala wrote:
Can we eliminate the linuxppc-embedded mailing list and merge it
with
linuxppc-dev?
That's not really up to me - more of a community question I think. I
imagine Paul would have th
> I also vote to kill the separate embedded list. It has such low traffic,
> and it seems like a lot of messages end up cross-posted to linuxppc-dev,
> anyway.
I also agree that we should kill linuxppc-embedded.
--
Timur Tabi
Linux kernel developer at Freescale
_
On Mon, Sep 22, 2008 at 09:43:57PM +0200, Wolfram Sang wrote:
> Hello all,
>
> I understood that the device-tree is for describing hardware and should
> not contain driver specific information. I have problems drawing this
> line right now. I made a driver for watchdogs which are pinged by
> toggl
I have mmc working over Grant's driver for dedicated SPI.
I still have
compatible = "linux,mmc-spi";
I've tried a couple of times to remove the linux prefix but when I
remove it the driver won't load anymore and I haven't tracked down
why.
--
Jon Smirl
[EMAIL PROTECTED]
m_1
Description: Binar
This patch fixes the setting of the Book-E watchdog timer interval setup
on initialization and by ioctl().
On initialization the period bits have to be masked before setting
a new period.
In WDIOC_SETTIMEOUT ioctl we have to use the currect mask.
Signed-off-by: Matthias Fuchs <[EMAIL PROTECTED]>
Can we eliminate the linuxppc-embedded mailing list and merge it
with linuxppc-dev?
>>>
>>> That's not really up to me - more of a community question I think. I
>>> imagine Paul would have the final decision though.
>>
>> I'm pretty sure I saw paul gripe about this on irc just the other
> "Kumar" == Kumar Gala <[EMAIL PROTECTED]> writes:
Hi,
Kumar> Peter, can you respin. Doesn't seem to apply cleanly to latest
Kumar> powerpc-next since paulus merged in things.
Sure, it's on it's way.
--
Bye, Peter Korsgaard
___
Linuxppc-dev m
Structured similar to the existing QE GPIO support.
Signed-off-by: Peter Korsgaard <[EMAIL PROTECTED]>
Acked-by: Anton Vorontsov <[EMAIL PROTECTED]>
---
Changes since v4:
- Respun against powerpc-next, no functional changes
- Added Anton's ack
Changes since v3:
- Incorporated feedback from A
The yosemite.dts has the following entry, which leads me to believe
that there is SPI support. I'd like to do something similar for a
Sequoia board, but looking in Josh's "next" branch, I don't see any
driver that would recognize the spi-440ep string. So my question is,
is there a SPI driver for
On Sep 23, 2008, at 10:35 AM, Peter Korsgaard wrote:
Structured similar to the existing QE GPIO support.
Signed-off-by: Peter Korsgaard <[EMAIL PROTECTED]>
Acked-by: Anton Vorontsov <[EMAIL PROTECTED]>
---
Changes since v4:
- Respun against powerpc-next, no functional changes
- Added Anton's a
Hi,
I think these are the "functional" changes that need to be included in
the ibmebus driver. We'll add a RT flag in the final version to enable
these changes only for RT-Linux for now.
Ben, can you / your team look into the implementation
of the set_irq_type functionality needed for XICS?
Rega
On Tue, Sep 23, 2008 at 11:38:05AM -0400, Steven A. Falco wrote:
>The yosemite.dts has the following entry, which leads me to believe
>that there is SPI support. I'd like to do something similar for a
>Sequoia board, but looking in Josh's "next" branch, I don't see any
>driver that would recognize
On Sep 18, 2008, at 7:09 PM, Kumar Gala wrote:
There are some minor issues with support 64-bit PTEs on a 32-bit
processor
when dealing with SMP.
* We need to order the stores in set_pte_at to make sure the flag word
is set second.
* Change pte_clear to use pte_update so only the flag word i
On Tue, Sep 23, 2008 at 07:55:01PM +0530, Srinivasa Ds wrote:
> On Tuesday 23 September 2008 17:00:01 Ingo Molnar wrote:
>
> > > applied to [the new topic] tip/core/signal, thanks Srinivasa! There
> > > are some other pending x86 signal changes already, so i based
> > > tip/core/signal on tip/x86/
On Tue, Sep 23, 2008 at 10:04 AM, Matthias Fuchs
<[EMAIL PROTECTED]> wrote:
> #ifdef CONFIG_FSL_BOOKE
> #define WDTP(x)63-x)&0x3)<<30)|(((63-x)&0x3c)<<15))
> +#define WDTP_MASK (WDTP(63))
WDTP(63) is "63-63)&0x3)<<30)|(((63-63)&0x3c)<<15))", which is
equal to 0. Sho
I've found a case where memcpy() is failing on copies longer that 4
bytes.
Closer investigation found that the destination pointer is not pointing
to a word aligned address.
The problem comes from the JFFS2 driver where there is a struct that is
being used to create the destination pointer for t
On Mon, Sep 22, 2008 at 18:08, Grant Likely <[EMAIL PROTECTED]> wrote:
> Jeremy,
>
> Can we eliminate the linuxppc-embedded mailing list and merge it with
> linuxppc-dev? I don't think we need two separate lists anymore and
> patches to linuxppc-embedded don't always get dealt with.
>
> Anyone hav
I also watch both lists.
A merge seems like a good idea.
Chuck
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev
On Mon, Sep 22, 2008 at 4:07 PM, Wright, Chuck
<[EMAIL PROTECTED]> wrote:
> I've found a case where memcpy() is failing on copies longer that 4
> bytes.
>
> Closer investigation found that the destination pointer is not pointing
> to a word aligned address.
>
> The problem comes from the JFFS2 driv
On Tue, 2008-09-23 at 17:05 +0200, Johannes Berg wrote:
> On Tue, 2008-09-23 at 16:45 +0200, Johannes Berg wrote:
> > I've been trying to push a few GB of data from my powerbook to my quad
> > G5 with rsync, but after transferring for a bit the machine stops
> > entirely. It doesn't even reply to p
This seems to have gotten dropped. Are there issues with this, or
did I get lost in the patchwork shuffle?
Cheers,
Becky
On Aug 22, 2008, at 11:49 AM, Becky Bruce wrote:
Use phys_addr_t for sizes and addresses where appropriate.
Signed-off-by: Becky Bruce <[EMAIL PROTECTED]>
---
arch/p
On Fri, Sep 19, 2008 at 04:23:24PM -0700, Andrew Morton wrote:
> On Thu, 18 Sep 2008 19:17:46 +0400
> Anton Vorontsov <[EMAIL PROTECTED]> wrote:
>
> > This patch adds support for the FHCI USB controller, as found
> > in the Freescale MPC836x and MPC832x processors. It can support
> > Full or Low s
This will let us use this header in other header files.
Will be needed for the FHCI USB Host driver.
Signed-off-by: Anton Vorontsov <[EMAIL PROTECTED]>
---
drivers/usb/core/hcd.h |4
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/drivers/usb/core/hcd.h b/drivers/usb/core/
On Tuesday 23 September 2008, Josh Boyer wrote:
> On Tue, Sep 23, 2008 at 11:38:05AM -0400, Steven A. Falco wrote:
> >The yosemite.dts has the following entry, which leads me to believe
> >that there is SPI support. I'd like to do something similar for a
> >Sequoia board, but looking in Josh's "ne
this could be used by the kexec userland code.
Signed-off-by: Sebastian Siewior <[EMAIL PROTECTED]>
---
This is done by the 64bit kexec code allready. The 32bit doesn't use the
device tree at all. I'm not sure whether the node has to be a 32bit or
64bit value.
arch/powerpc/boot/main.c |6 +++
On Tue, 2008-09-23 at 13:08 +0200, Joakim Tjernlund wrote:
> On Tue, 2008-09-23 at 11:08 +0200, Andre Schwarz wrote:
> > I can only tell how I do on MPC834x :
> >
> > Table 8-6. IVEC/CVEC/MVEC Field Definition
> >
> > Interrupt ID Number Interrupt Meaning
> > 17
This rearranges a bit of code, and adds support for
36-bit physical addressing for configs that use a
hashed page table. The 36b physical support is not
enabled by default on any config - it must be
explicitly enabled via the config system.
This patch *only* expands the page table code to accomod
The Freescale Elo DMA driver runs an internal self-test before registering
the channels with the DMA engine. This self-test has a fundemental flaw in
that it calls the DMA engine's callback functions directly before the
registration. However, the registration initializes some variables that the
c
My mylinux binary incl. bss is ~5 MiB without bss less than 4 MiB.
Therefore I though that I could replace ei.memsize with ei.loadsize. It
didn't work. I'm not sure why it did not work but I guess that the
memset() of bss in the initial kernel code overwrote the cuimage code
which is required for s
On Tue, 2008-09-23 at 08:35 -0400, Josh Boyer wrote:
> Hi Ben,
>
> What's your plan for the existing set of EMAC patches? I'm just curious if
> you plan to send them through my tree (Jeff acked my set), or if you are
> going to ask Jeff to pull them into his.
>
> I could keep an emac branch in m
On Tue, 2008-09-23 at 22:24 +0800, Wang Jian wrote:
>
> I had this patch and 2 fixes on dts applied simultaneously, and the
> board
> works. I thought this patch was necessary.
>
> I reverted this patch and tried again, the board still works. Thanks
> for
> your insight.
>
> Anyway, the io port
On Tue, 2008-09-23 at 16:38 +0200, Johannes Berg wrote:
> Instead, I get an oops right after trying to disable the non-boot CPUs.
>
> This was on 2.6.27-rc6-wl-01382-g0bea1f7-dirty.
>
> http://johannes.sipsolutions.net/files/dsc_2274.jpg
Can you file that as a regression with Rafael ?
Thanks !
I'm an idiot - this broke the e500 build; new rev to follow.
-B
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev
Hello.
Anton Vorontsov wrote:
This patch adds support for the FHCI USB controller, as found
in the Freescale MPC836x and MPC832x processors. It can support
Full or Low speed modes.
Quite a lot the hardware is doing by itself (SOF generation, CRC
generation and checking), though scheduling and
Hello, I wrote:
This patch adds support for the FHCI USB controller, as found
in the Freescale MPC836x and MPC832x processors. It can support
Full or Low speed modes.
Ah, it's not even high-speed?
Quite a lot the hardware is doing by itself (SOF generation, CRC
generation and checking), th
On Tue, 23 Sep 2008 14:20:55 -0700 (PDT)
[EMAIL PROTECTED] wrote:
> http://bugzilla.kernel.org/show_bug.cgi?id=11629
>
>Summary: quad G5 fails to shut down
>Product: Platform Specific/Hardware
>Version: 2.5
> KernelVersion: 2.6.27-rc6+wireless bits
>
On Tue, 2008-09-23 at 14:30 -0700, Andrew Morton wrote:
> > http://johannes.sipsolutions.net/files/dsc_2274.jpg
> >
>
> That went splat in the clockevents code.
Yup.
> I saw a pull request with several fixes float past this morning:
>
> From: Ingo Molnar <[EMAIL PROTECTED]>
> To: Linus Torval
On Sep 23, 2008, at 2:54 PM, Sebastian Siewior wrote:
this could be used by the kexec userland code.
Signed-off-by: Sebastian Siewior <[EMAIL PROTECTED]>
---
This is done by the 64bit kexec code allready. The 32bit doesn't use
the
device tree at all. I'm not sure whether the node has to be
On Tue, 2008-09-23 at 14:30 -0700, Andrew Morton wrote:
> > http://johannes.sipsolutions.net/files/dsc_2274.jpg
> >
>
> That went splat in the clockevents code.
>
> I saw a pull request with several fixes float past this morning:
>
> From: Ingo Molnar <[EMAIL PROTECTED]>
> To: Linus Torvalds <
On Wed, Sep 24, 2008 at 01:35:41AM +0400, Sergei Shtylyov wrote:
[...]
> This controller does not integrate the root hub, so this driver also
> fakes one-port hub. External hub is required to support more than
> one device.
>
> ...
>
>
Please, no.
>
On Wed, 2008-09-24 at 00:45 +0200, Johannes Berg wrote:
> Well, that does seem to fix the regression. That is, it no longer
> crashes.
Spoke too early, it seems that the crash isn't exactly reproducible all
the time nor happens at the same spot all the time. I'd suspect that the
timer code isn't
Here comes the whole patchset.
Sorry for the inconvenience,
--
Anton Vorontsov
email: [EMAIL PROTECTED]
irc://irc.freenode.net/bd2
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev
We'll need this function to write platform-specific hooks to deal
with pin's dedicated functions. Quite obviously this will work only
for the platforms with 1-to-1 GPIO to PIN mapping.
This is stopgap solution till we think out and implement a proper
api (pinlib?).
p.s. This patch actually export
qe_gpio_set_dedicated() is a platform specific function, which is used
to revert a pin to a dedicated function. Caller should have already
obtained the gpio via gpio_request().
This is needed to support Freescale USB Host Controller.
Signed-off-by: Anton Vorontsov <[EMAIL PROTECTED]>
---
arch/po
This will let us use this header in other header files.
Will be needed for the FHCI USB Host driver.
Signed-off-by: Anton Vorontsov <[EMAIL PROTECTED]>
---
drivers/usb/core/hcd.h |4
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/drivers/usb/core/hcd.h b/drivers/usb/core/
On Wed Sep 24 at about 05:54:04 EST 2008, Sebastian Siewior wrote:
> this could be used by the kexec userland code.
NACK.
First of all, you fail to justify why it is needed.
Second of all, its in the wrong place, if it were needed. The code
in arch/powerpc/boot does not get executed on all plat
On Wed Sep 24 at about 06:38:57 EST in 2008, Sebastian Siewior wrote:
> My mylinux binary incl. bss is ~5 MiB without bss less than 4 MiB.
> Therefore I though that I could replace ei.memsize with ei.loadsize. It
> didn't work. I'm not sure why it did not work but I guess that the
> memset() of bss
Signed-off-by: Kumar Gala <[EMAIL PROTECTED]>
---
arch/powerpc/boot/dts/asp834x-redboot.dts |4
arch/powerpc/boot/dts/mpc8313erdb.dts |4
arch/powerpc/boot/dts/mpc8315erdb.dts |4
arch/powerpc/boot/dts/mpc832x_mds.dts |4
arch/powerpc/boot/dts/mpc832
On Tuesday 23 September 2008, Anton Vorontsov wrote:
> This will let us use this header in other header files.
> Will be needed for the FHCI USB Host driver.
>
> Signed-off-by: Anton Vorontsov <[EMAIL PROTECTED]>
This seems innocuous. I'm content with Greg merging it into
his tree for 2.6.28-rc0
On Sep 23, 2008, at 7:03 PM, Anton Vorontsov wrote:
qe_gpio_set_dedicated() is a platform specific function, which is used
to revert a pin to a dedicated function. Caller should have already
obtained the gpio via gpio_request().
This is needed to support Freescale USB Host Controller.
Signed-
>
> diff --git a/arch/powerpc/include/asm/sfp-machine.h
> b/arch/powerpc/include/asm/sfp-machine.h
> new file mode 100644
> index 000..ced34f1
> --- /dev/null
> +++ b/arch/powerpc/include/asm/sfp-machine.h
> @@ -0,0 +1,353 @@
> +/* Machine-dependent software floating-point definitions.
> PP
Introduced a mpc86xx_defconfig that enables all 86xx boards and moved
all other 86xx related defconfigs under configs/86xx to match 83xx
and 85xx.
Signed-off-by: Kumar Gala <[EMAIL PROTECTED]>
---
.../configs/{ => 86xx}/mpc8610_hpcd_defconfig |0
.../configs/{ => 86xx}/mpc8641_hpcn_defc
The initial patch had the option at the top level which wasn't
quite right. Moving under the platform options is a bit better.
Signed-off-by: Kumar Gala <[EMAIL PROTECTED]>
---
arch/powerpc/platforms/Kconfig |9 +
arch/powerpc/sysdev/Kconfig|9 -
2 files changed, 9 in
On Sep 23, 2008, at 11:28 PM, Liu Yu-B13201 wrote:
diff --git a/arch/powerpc/include/asm/sfp-machine.h
b/arch/powerpc/include/asm/sfp-machine.h
new file mode 100644
index 000..ced34f1
--- /dev/null
+++ b/arch/powerpc/include/asm/sfp-machine.h
@@ -0,0 +1,353 @@
+/* Machine-dependent softwar
The ppc_select function was introduced in linux-2.3.48 in order to support
code confusing the legacy select() calling convention with the standard one.
Even 11 years ago, all correctly built code should not have done this and
could have easily been phased out. Nothing that was compiled later should
78 matches
Mail list logo