All pastes #1030183 Raw Edit

clueless

public text v1 · immutable
#1030183 ·published 2008-05-26 17:51 UTC
rendered paste body
Command: cat /mnt/p3/home/kerndocs/2.6.18/HTML/gadget/ch01.html<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 1. Introduction</title><meta name="generator" content="DocBook XSL Stylesheets V1.71.0" /><link rel="start" href="index.html" title="USB Gadget API for Linux" /><link rel="up" href="index.html" title="USB Gadget API for Linux" /><link rel="prev" href="index.html" title="USB Gadget API for Linux" /><link rel="next" href="ch02.html" title="Chapter 2. Structure of Gadget Drivers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. Introduction</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="id4735604"></a>Chapter 1. Introduction</h2></div></div></div><p>This document presents a Linux-USB "Gadget"kernel modeAPI, for use within peripherals and other USB devicesthat embed Linux.It provides an overview of the API structure,and shows how that fits into a system development project.This is the first such API released on Linux to addressa number of important problems, including: </p><div class="itemizedlist"><ul type="disc"><li><p>Supports USB 2.0, for high speed devices which	can stream data at several dozen megabytes per second.	</p></li><li><p>Handles devices with dozens of endpoints just as	well as ones with just two fixed-function ones.  Gadget drivers	can be written so they're easy to port to new hardware.	</p></li><li><p>Flexible enough to expose more complex USB device	capabilities such as multiple configurations, multiple interfaces,	composite devices,	and alternate interface settings.	</p></li><li><p>USB "On-The-Go" (OTG) support, in conjunction	with updates to the Linux-USB host side.	</p></li><li><p>Sharing data structures and API models with the	Linux-USB host side API.  This helps the OTG support, and	looks forward to more-symmetric frameworks (where the same	I/O model is used by both host and device side drivers).	</p></li><li><p>Minimalist, so it's easier to support new device	controller hardware.  I/O processing doesn't imply large	demands for memory or CPU resources.	</p></li></ul></div><p>Most Linux developers will not be able to use this API, since theyhave USB "host" hardware in a PC, workstation, or server.Linux users with embedded systems are more likely tohave USB peripheral hardware.To distinguish drivers running inside such hardware from themore familiar Linux "USB device drivers",which are host side proxies for the real USB devices,a different term is used:the drivers inside the peripherals are "USB gadget drivers".In USB protocol interactions, the device driver is the master(or "client driver")and the gadget driver is the slave (or "function driver").</p><p>The gadget API resembles the host side Linux-USB API in that bothuse queues of request objects to package I/O buffers, and those requestsmay be submitted or canceled.They share common definitions for the standard USB<span class="emphasis"><em>Chapter 9</em></span> messages, structures, and constants.Also, both APIs bind and unbind drivers to devices.The APIs differ in detail, since the host side's currentURB framework exposes a number of implementation detailsand assumptions that are inappropriate for a gadget API.While the model for control transfers and configurationmanagement is necessarily different (one side is a hardware-neutral master,the other is a hardware-aware slave), the endpoint I/0 API used hereshould also be usable for an overhead-reduced host side API.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">USB Gadget API for Linux </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 2. Structure of Gadget Drivers</td></tr></table></div></body></html>