[Trac #1060] Autonomous mode operation for Marvell USB 8388

Zarro Boogs per Child bugtracker at laptop.org
Wed Mar 14 16:31:24 EDT 2007


#1060: Autonomous mode operation for Marvell USB 8388
-------------------------+--------------------------------------------------
 Reporter:  rchokshi     |       Owner:  rchokshi 
     Type:  enhancement  |      Status:  new      
 Priority:  normal       |   Milestone:  Untriaged
Component:  wireless     |    Keywords:           
-------------------------+--------------------------------------------------
 I would like to open a ticket for this to make sure that everyone can see
 the details that will follow. What OLPC calls autonomous mode, we
 sometimes like to call host sleep mode - so you might see host sleep mode
 mentioned at many places below. We also have some comments/questions here
 as well.

 --------

 The autonomous mode of operation for the XO means that when the host CPU
 alongwith most of the other on-board devices are shut off, the WiFi
 interface module should still be active, functional and be able to forward
 frames to the next best hop. The firmware wakes up host based on
 configured events through GPIO 2 on the Marvell 8388 SoC connected to the
 EC.

 Question: The WLAN SoC will generate edge triggered active low (signal
 from high to low) interrupts to host. Is this is the right thing to do or
 should it be different, e.g. active high?

 The OLPC driver needs to support the GPIO 2 logic in order to communicate
 with firmware. The driver may also need to support ACPI (Advanced
 Configuration and Power Interface) in order to be notified by Linux OS
 about system sleep/wake up events.
 This feature requires a detail coordination on the interface between
 driver and firmware.

 The work items for this include:
 - Implement the Enhanced Host Sleep feature. Here is a brief description
 of interface between driver and firmware for this mode:
 (a) Driver issue HOST_SLEEP_CFG command to set the wake up conditions.
 (b) Firmware reply to HOST_SLEEP_CFG command.
 (c) Driver issue HOST_SLEEP_ACTIVE command.
 (d) Firmware reply to the command. Once driver get reply, it needs to
 inform host to enter sleep mode.
 (e) Firmware stop any transaction to driver and waits for a GPIO interrupt
 from host to confirm receive of reply at step (d), and detach device from
 USB bus.

 Comment: We will also make arrangements to make sure that the Marvell USB
 device is detached from the USB bus at this point but for the initial
 design, we would like to keep it simple.

 Question: OLPC needs to define a GPIO that will be used as input to the
 Marvell 8388 SoC for this. It will need to be wired appropriately to a
 GPIO on the Marvell side. We should be able to use any GPIOs other than
 GPIO [0-2], [6-7], [12-15] for this to serve as input to the Marvell 8388.
 Can someone take the action item here to select one of these GPIOs, inform
 us about the same and close the loop with Quanta?

 (f) If one of the pre-configured wake-up conditions is met, firmware
 generates interrupt to host by GPIO 2. If host is at awake state, it need
 to ignore the interrupt gracefully.

 Comment: At this point, the firmware will re-attach to USB bus before
 generating the interrupt to the host using GPIO 2 to complement for the
 comment in step (e) above.

 (g) Firmware wait for “gap” requested by host if “gap” is not 0. The "gap"
 is a parameter in the HOST_SLEEP_CFG command. Once the USB module senses
 SOF, firmware send Host Wakeup event to host.
 (h) After driver wake up, it must submit URB (USB Request Block) to
 receive Host Wakeup event first, and then the 2nd URB to retrieve the
 actual wake up event.
 (i) Firmware sent the actual event/data which matches the wakeup
 condition.
 (j) Firmware deactivate host sleep condition. This serves as a complement
 to step (c).
 (k) Driver and firmware resume data Tx/Rx path.
 (l) The host can issue HOST_SLEEP_ACTIVE command to re-activate wake up
 conditions, or isssue HS_Config w/cancellation to remove wake up
 conditions.
 (m) After step (e), the host can generate GPIO interrupt through GPIO pin
 (to be defined by OLPC) to notify firmware if the host wants to resume
 data Tx/Rx command by itself. Note that the host must be at fully wake up
 state, including the driver being ready to receive packet from host
 controller, before it generates interrupt through GPIO.
 (n) Firmware confirm step (m) and wait for SOF from USB bus.

 Comment: We will also re-attach the Marvell device back to the USB bus at
 this point.

 (o) Firmware sends Host Notify event to driver to confirm the host
 notification.
 (p) Once step (o) is completed, the interface continues from step (j).

 - Further task is debug/Unit testing with host driver on the XO.
 - Debug/test the GPIO line access logic.

-- 
Ticket URL: <http://dev.laptop.org/ticket/1060>
One Laptop Per Child <http://laptop.org/>



More information about the Bugs mailing list