Re: [PATCH] slimbus: Linux driver framework for SLIMbus.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jun 04, 2012 at 03:21:06AM -0700, Sagar Dharia wrote:
> > The enumeration slim_ch_proto is incorrect. It declares 2 transport
> > protocols which do not exist in the specification: SLIM_HARD_ISO;
> > SLIM_AUTO_ISO.
> 
> The enums are more SW representation (and not 1-1 mapping). Difference
> between HARD_ISO and AUTO_ISO with example:
> Let's say the root frequency is 24.576MHz. then all 4K family channels
> (sample rate multiple of 4K) can run isochronously, and all 11.025KHz
> channel can run with good efficiency.
> So if a client wants 11.025KHz and is does not want to do flow-control at
> this root frequency, then the client can specify AUTO_ISO to get the next
> available isochronous frequency.

I understand it is not a 1-to-1 mapping. However it *is* used as such:

 wbuf[2] = (u8)((segdist & 0xF00) >> 8) | (slc->prop.prot << 4);

which results in NEXT_DEFINE_CHANNEL messages with an invalid TP
field.

More importantly I think it makes it harder to understand the
framework. The concept of HARD_ISO and AUTO_ISO are extensions, and
should really look like such, say perhaps:

enum {
       SLIM_ISO,
       SLIM_PUSH,
       SLIM_PULL,
       SLIM_LOCKED,
       SLIM_ASYNC_SMPLX,
       SLIM_ASYNC_HALF_DUP,
       SLIM_EXT_SMPLX, 
       SLIM_EXT_HALF_DUP,
       SLIM_AUTO_ISO,
       SLIM_USER_DEF_1 = 14,
       SLIM_USER_DEF_2 = 15,
       /* extensions */
       SLIM_HARD_ISO,
       SLIM_AUTO_ISO
};       

> > b) Similarly to (a) the driver may be probed before the device has
> > been given a logical address (LA). This makes sense in the case of
> > driver that turns on the device (say via gpio) once the bus has
> > booted. However, the driver then needs to sit and poll
> > slim_get_logical_addr() until the logical address.
> This is not the case anymore.
> While taking care of the comments for RFC, I have introduced a completion
> that will be signalled when LA is given to the device. The driver can wait
> on that completion (wait_enum) instead of polling.

Yes, my mistake. The driver wouldn't have to poll if there was another
callback. So I don't see how the completion mechanism is superior: it
forces a synchronous interface to asynchronous events, or the driver
developer has to work around it.

-- 
If you wake up and you're not in pain, you know you're dead.
(Russian Proverb)

--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux