.de Sc
\\s-1\\$1\\s0\\$2
..
.ds cA 2007/659
.ds aR \s-1PSARC\s0
.LP
.so ../../amac
.Co
.ds LF \fI\*(aR/\*(cA\fP
.ds RF \fICopyright 2007 Sun Microsystems\fP
.if n .ds CF
.IP \fBSubject:\fP 15
SDcard Stack Phase I
.IP "\fBSubmitted by:\fP" 15
Garrett D'Amore
.IP \fBFile:\fP 15
\*(aR/\*(cA/opinion.ms
.IP \fBDate:\fP 15
November 28, 2007
.IP "\fBCommittee:\fP" 15
Gary Winiger (opinion written by Garrett D'Amore),
Kais Belgaied,
James D. Carlson,
Mark Carlson,
Glenn Skinner.
.IP "\fBProduct Approval Committee:\fP" 15

Solaris PAC
.br
solaris-pac-opinion@sun.com

.pn 2
.NH
Summary
.LP
SDcard Stack Phase I is a project to provide access to Secure Digital
(SD) storage media via SD card slots found on common laptop computers.
SD media is a small-form-factor storage media popular for use with
digital cameras, MP3 players, and other consumer devices.
.NH
Decision & Precedence Information
.LP
The project is approved as specified in reference [1] - [4], but as modified
by the required technical change listed in Appendix A below.
.LP
The project may be delivered in a patch release of the ON consolidation.
.LP
The project depends on the following other project and may not be delivered
before it.
.RS
.IP \*(aR/2007/654 16n
blk2scsa
.RE
.NH
Interfaces
.LP
The project exports the following interfaces.
.if n .ne 8
.if t .ne 3
.TS H
box;
c s s
l | l | l.
Interfaces Exported
_
Interface	Classification	Comments
_
.TH
drv/sdhost	Volatile	sdhost device driver name
drv/sdcard	Volatile	sdcard device driver name

misc/sda	Consolidation Private	sda common API support
sys/sdcard/sda.h	Consolidation Private	sda common API header

sda_mem_init()	Project Private	memory card API
sda_mem_fini()	Project Private	memory card API

sda_host_init()	Consolidation Private	nexus API
sda_host_fini()	Consolidation Private	nexus API
sda_host_alloc()	Consolidation Private	nexus API	
sda_host_free()	Consolidation Private	nexus API
sda_host_attach()	Consolidation Private	nexus API
sda_host_detach()	Consolidation Private	nexus API
sda_host_set_private()	Consolidation Private	nexus API
sda_host_detect()	Consolidation Private	nexus API
sda_cmd_done()	Consolidation Private	nexus API
sda_transfer_done()	Consolidation Private	nexus API
sda_host_err()	Consolidation Private	nexus API
sda_host_log()	Consolidation Private	nexus API

struct sda_host	Consolidation Private	nexus API opaque slot handle
struct sda_ops	Consolidation Private	nexus API operations vector
struct sda_cmd	Consolidation Private	nexus API operations 

SDA_OPS_VERSION	Consolidation Private	nexus API operations version
SDA_CMDF_*	Consolidation Private	nexus API command flags
SDA_PROP_*	Consolidation Private	nexus API slot properties
.TE
.LP
The project imports the following interfaces.
.if n .ne 8
.if t .ne 3
.TS H
box;
c s s
l | l | l.
Interfaces Imported
_
Interface	Classification	Comments
_
.TH
blk2scsa	Consolidation Private	PSARC 2007/654
.TE
.NH
Opinion
.LP
.NH 2
blk2scsa dependency
.LP
One member was unclear about the boundary between blk2scsa \*(aR/2007/654 and 
this project.
The project team clarified this, and an updated clarification has been posted
in [4].  Further, it is noted that \*(aR/2007/654
is a dependency for this case.
.NH 2
sda_slot_online versus sda_slot_offline errors
.LP
One member was surprised that sda_slot_offline could return an error while
sda_slot_online could not.  The project team responded that this was a hold
over from earlier design, and has updated the specification so that both
functions have no return value (void).
.NH 2 
hald/dbus/userland interaction
.LP
One member raised a question as to whether certain userland components would
need to be modified as part of this case.  The project team responded that
this should not be the case, barring any bugs in those components (which would
be fixed if necessary.)
.NH 2
sda_slot_detect insertion/removal
.LP
One member questioned that sda_slot_detect did not accept an argument
with the current state (inserted or removed) of the card, and other
members expressed concern that this could cause confusion for device
driver implementors.  The project team clarified the relationship of
this portion of the API, and updated the specification to make clear
the interaction of this function and the SDA_PROP_INSERTED property.
.NH 2
cfgadm plugin
.LP
During case investigation, it was noted that without a
specific plugin for cfgadm(1M), administrators might be 
presented with confusing information misrepresenting an SD slot
as a SCSI bus.  This led to the required technical change listed in
.NH 2
spec change due to TCR
.LP
When implementing the technical change required in Appendix A, the project team
found that some interface changes were required.  Specifically, instead
of using abstract slots, the host driver must register itself once per
instance.  A new sda_host_set_private() function is provided for host
drivers to supply per-slot private data.  The interface
table and the specification in [4] have been updated accordingly.
.LP
.NH
Minority Opinion(s)
.LP
None.
.NH
Advisory Information
.LP
None.
.NH
Appendices
.NH 2
Appendix A: Technical Changes Required
.LP
.RS
.IP 1.
The project shall deliver a cfgadm plugin for SDcard busses, so that users of
cfgadm are presented with meaningful and accurate information about the state
of SDcard slots.
.RE
.NH 2
Appendix B: Technical Changes Advised
.LP
None.
.NH 2
Appendix C: Reference Material
.LP
Unless stated otherwise, path names are relative to the case
directory \*(aR/\*(cA.
.IP 1.
20 Questions
.br
File: inception.materials/sdcard.20q.txt
.IP 2.
One Pager
.br
File: inception.materials/sdcard.1pager.txt
.IP 3.
Functional Specification
.br
File: final.materials/sdcard.spec.txt
.IP 4
Issues and Responses
.br
File: final.materials/issues
