On Wednesday, November 27, 2019, Marc-André Lureau <
marcandre.lur...@redhat.com> wrote:

> Hi
>
> On Mon, Nov 25, 2019 at 5:04 PM Philippe Mathieu-Daudé
> <phi...@redhat.com> wrote:
> >
> > On 11/25/19 1:54 PM, Philippe Mathieu-Daudé wrote:
> > > On 11/25/19 12:26 PM, Philippe Mathieu-Daudé wrote:
> > >> On 11/25/19 11:12 AM, Marc-André Lureau wrote:
> > >>> Hi
> > >>>
> > >>> On Mon, Nov 25, 2019 at 2:07 PM Aleksandar Markovic
> > >>> <aleksandar.m.m...@gmail.com> wrote:
> > >>>>
> > >>>>
> > >>>>
> > >>>> On Wednesday, November 20, 2019, Marc-André Lureau
> > >>>> <marcandre.lur...@redhat.com> wrote:
> > >>>>>
> > >>>>> Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com>
> > >>>>> ---
> > >>>>>   hw/mips/mips_mipssim.c | 1 -
> > >>>>>   1 file changed, 1 deletion(-)
> > >>>>>
> > >>>>> diff --git a/hw/mips/mips_mipssim.c b/hw/mips/mips_mipssim.c
> > >>>>> index bfafa4d7e9..3cd0e6eb33 100644
> > >>>>> --- a/hw/mips/mips_mipssim.c
> > >>>>> +++ b/hw/mips/mips_mipssim.c
> > >>>>> @@ -223,7 +223,6 @@ mips_mipssim_init(MachineState *machine)
> > >>>>>       if (serial_hd(0)) {
> > >>>>>           DeviceState *dev = qdev_create(NULL, TYPE_SERIAL_IO);
> > >>>>>
> > >>>>> -        qdev_prop_set_uint32(DEVICE(dev), "baudbase", 115200);
> > >>>>>           qdev_prop_set_chr(dev, "chardev", serial_hd(0));
> > >>>>>           qdev_set_legacy_instance_id(dev, 0x3f8, 2);
> > >>>>>           qdev_init_nofail(dev);
> > >>>>> --
> > >>>>
> > >>>>
> > >>>> Please mention in your commit message where the default baudbase is
> > >>>> set.
> > >>>
> > >>> ok
> > >>>
> > >>>> Also, is there a guarantie that default value 115200 will never
> > >>>> change in future?
> > >>>
> > >>> The level of stability on properties in general is unclear to me.
> > >>>
> > >>> Given that 115200 is standard for serial, it is unlikely to change
> > >>> though.. We can have an assert there instead?
> > >>>
> > >>> Peter, what do you think? thanks
> >
> > IOW, until we merge Damien's "Clock framework API" series, I'd:
> >
> > - rename 'baudbase' -> 'input_frequency_hz'
> >
> > - set a 0 default value
> >
> >   DEFINE_PROP_UINT32("input-frequency-hz", SerialState,
> >                       input_frequency_hz, 0),
> >
> > - add a check in serial_realize()
> >
> >      if (s->input_frequency_hz == 0) {
> >          error_setg(errp,
> >                "serial: input-frequency-hz property must be set");
> >          return;
> >      }
> >
> > [*] https://www.mail-archive.com/qemu-devel@nongnu.org/msg642174.html
> >
>
> This is getting further away from this series goal, and my initial
> goal. Let's add this to the backlog. I can drop a FIXME there.


I agree. But please update commit message and/or add FIXME so that future
readers are given at least some background.

Reviewed-by: Aleksandar Markovic <amarko...@wavecomp.com>


>
> > >> This property confused me by the past. It is _not_ the baudrate.
> > >> It is the input frequency clocking the UART ('XIN' pin, Xtal INput).
> > >>
> > >> Each board has its own frequency, and it can even be variable (the
> > >> clock domain tree can reconfigure it at a different rate).
> > >
> > > Laurent pointed me to the following commit which confirms my
> > > interpretation:
> > >
> > > $ git show 038eaf82c853
> > > commit 038eaf82c853f3bf8d4c106c0677bbf4adada7de
> > > Author: Stefan Weil <w...@mail.berlios.de>
> > > Date:   Sat Oct 31 11:28:11 2009 +0100
> > >
> > >      serial: Add interface to set reference oscillator frequency
> > >
> > >      Many (most?) serial interfaces have a programmable
> > >      clock which provides the reference frequency ("baudbase").
> > >      So a fixed baudbase which is only set once can be wrong.
> > >
> > >      omap1.c is an example which could use the new interface
> > >      to change baudbase when the programmable clock changes.
> > >      ar7 system emulation (still not part of standard QEMU)
> > >      is similar to omap and already uses serial_set_frequency.
> > >
> > >      Signed-off-by: Stefan Weil <w...@mail.berlios.de>
> > >      Signed-off-by: Anthony Liguori <aligu...@us.ibm.com>
> > >
> > > diff --git a/hw/pc.h b/hw/pc.h
> > > index 15fff8d103..03ffc91536 100644
> > > --- a/hw/pc.h
> > > +++ b/hw/pc.h
> > > @@ -13,6 +13,7 @@ SerialState *serial_mm_init (target_phys_addr_t base,
> > > int it_shift,
> > >                                qemu_irq irq, int baudbase,
> > >                                CharDriverState *chr, int ioregister);
> > >   SerialState *serial_isa_init(int index, CharDriverState *chr);
> > > +void serial_set_frequency(SerialState *s, uint32_t frequency);
> > >
> > >   /* parallel.c */
> > >
> > > diff --git a/hw/serial.c b/hw/serial.c
> > > index fa12dcc075..0063260569 100644
> > > --- a/hw/serial.c
> > > +++ b/hw/serial.c
> > > @@ -730,6 +730,13 @@ static void serial_init_core(SerialState *s)
> > >                             serial_event, s);
> > >   }
> > >
> > > +/* Change the main reference oscillator frequency. */
> > > +void serial_set_frequency(SerialState *s, uint32_t frequency)
> > > +{
> > > +    s->baudbase = frequency;
> > > +    serial_update_parameters(s);
> > > +}
> > > +
> >
>
>

Reply via email to