Messages in this thread | | | Date | Mon, 4 Jun 2012 13:13:44 -0400 | From | Marc Butler <> | Subject | Re: [PATCH] slimbus: Linux driver framework for SLIMbus. |
| |
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)
| |