HSI Driver

The cap driver has its own shaft which allows for high speed cap production with precision results. Additionally, the TMBP-SC has a streamlined Cubical Frame Design which has no sides allowing the TMBP-SC to embroider on over-sized jackets, blankets or large duffel bags as well as polo shirts and caps. We supply the HSI-88-USB incl. A CD with USB-Software-Driver for Windows 10, 8, 7, Vista (each for 32- and 64-Bit) as well as Windows XP, 2000, ME and 98. The actual HSI-88-USB firmware and the actual USB-Drivers can be downloaded within the next section.

  1. Hsi Drivers
  2. Hi Drivers License Appointment
  3. Hsi Driver License Test

Introduction¶

High Speed Syncronous Interface (HSI) is a fullduplex, low latency protocol,that is optimized for die-level interconnect between an Application Processorand a Baseband chipset. It has been specified by the MIPI alliance in 2003 andimplemented by multiple vendors since then.

The HSI interface supports full duplex communication over multiple channels(typically 8) and is capable of reaching speeds up to 200 Mbit/s.

The serial protocol uses two signals, DATA and FLAG as combined data and clocksignals and an additional READY signal for flow control. An additional WAKEsignal can be used to wakeup the chips from standby modes. The signals arecommonly prefixed by AC for signals going from the application die to thecellular die and CA for signals going the other way around.

HSI Subsystem in Linux¶

In the Linux kernel the hsi subsystem is supposed to be used for HSI devices.The hsi subsystem contains drivers for hsi controllers including support formulti-port controllers and provides a generic API for using the HSI ports.

It also contains HSI client drivers, which make use of the generic API toimplement a protocol used on the HSI interface. These client drivers canuse an arbitrary number of channels.

hsi-char Device¶

Each port automatically registers a generic client driver called hsi_char,which provides a charecter device for userspace representing the HSI port.It can be used to communicate via HSI from userspace. Userspace mayconfigure the hsi_char device using the following ioctl commands:

HSC_RESET
flush the HSI port
HSC_SET_PM
enable or disable the client.
HSC_SEND_BREAK
send break
HSC_SET_RX
set RX configuration
HSC_GET_RX
get RX configuration
HSC_SET_TX
set TX configuration
HSC_GET_TX
get TX configuration

The kernel HSI API¶

struct hsi_channel

channel resource used by the hsi clients

Definition

Members

id
Channel number
name
Channel name
struct hsi_config

Configuration for RX/TX HSI modules

Definition

Members

Hsi Drivers

mode
Bit transmission mode (STREAM or FRAME)
channels
Channel resources used by the client
num_channels
Number of channel resources
num_hw_channels
Number of channels the transceiver is configured for [1.16]
speed
Max bit transmission speed (Kbit/s)
{unnamed_union}
anonymous
struct hsi_board_info

HSI client board info

Definition

Members

name
Name for the HSI device
hsi_id
HSI controller id where the client sits
port
Port number in the controller where the client sits
tx_cfg
HSI TX configuration
rx_cfg
HSI RX configuration
platform_data
Platform related data
archdata
Architecture-dependent device data
struct hsi_client

HSI client attached to an HSI port

Definition

Members

device
Driver model representation of the device
tx_cfg
HSI TX configuration
rx_cfg
HSI RX configuration
struct hsi_client_driver

Driver associated to an HSI client

Definition

Members

driver
Driver model representation of the driver
struct hsi_msg

HSI message descriptor

Definition

Members

link
Free to use by the current descriptor owner
cl
HSI device client that issues the transfer
sgt
Head of the scatterlist array
context
Client context data associated to the transfer
complete
Transfer completion callback
destructor
Destructor to free resources when flushing
status
Status of the transfer when completed
actual_len
Actual length of data transferred on completion
channel
Channel were to TX/RX the message
ttype
Transfer type (TX if set, RX otherwise)
break_frame
if true HSI will send/receive a break frame. Data buffers areignored in the request.
struct hsi_port

HSI port device

Definition

Members

device
Driver model representation of the device
tx_cfg
Current TX path configuration
rx_cfg
Current RX path configuration
num
Port number
shared
Set when port can be shared by different clients
claimed
Reference count of clients which claimed the port
lock
Serialize port claim
async
Asynchronous transfer callback
setup
Callback to set the HSI client configuration
flush
Callback to clean the HW state and destroy all pending transfers
start_tx
Callback to inform that a client wants to TX data
stop_tx
Callback to inform that a client no longer wishes to TX data
release
Callback to inform that a client no longer uses the port
n_head
Notifier chain for signaling port events to the clients.
struct hsi_controller

HSI controller device

Definition

HSI

Members

device
Driver model representation of the device
owner
Pointer to the module owning the controller
id
HSI controller ID
num_ports
Number of ports in the HSI controller
port
Array of HSI ports
unsigned int hsi_id(struct hsi_client * cl)

Get HSI controller ID associated to a client

Parameters

structhsi_client*cl
Pointer to a HSI client

Description

Return the controller id where the client is attached to

unsigned int hsi_port_id(struct hsi_client * cl)

Gets the port number a client is attached to

Parameters

structhsi_client*cl
Pointer to HSI client

Description

Return the port number associated to the client

int hsi_setup(struct hsi_client * cl)

Configure the client’s port

Parameters

structhsi_client*cl
Pointer to the HSI client

Hi Drivers License Appointment

Description

When sharing ports, clients should either relay on a singleclient setup or have the same setup for all of them.

Return -errno on failure, 0 on success

int hsi_flush(struct hsi_client * cl)

Flush all pending transactions on the client’s port

Parameters

structhsi_client*cl
Pointer to the HSI client

Description

This function will destroy all pending hsi_msg in the port and resetthe HW port so it is ready to receive and transmit from a clean state.

Return -errno on failure, 0 on success

int hsi_async_read(struct hsi_client * cl, struct hsi_msg * msg)

Submit a read transfer

Parameters

structhsi_client*cl
Pointer to the HSI client
structhsi_msg*msg
HSI message descriptor of the transfer

Description

Return -errno on failure, 0 on success

int hsi_async_write(struct hsi_client * cl, struct hsi_msg * msg)

Submit a write transfer

Parameters

structhsi_client*cl
Pointer to the HSI client
structhsi_msg*msg
HSI message descriptor of the transfer

Description

Return -errno on failure, 0 on success

int hsi_start_tx(struct hsi_client * cl)

Signal the port that the client wants to start a TX

Parameters

structhsi_client*cl
Pointer to the HSI client

Description

Return -errno on failure, 0 on success

int hsi_stop_tx(struct hsi_client * cl)

Signal the port that the client no longer wants to transmit

Parameters

structhsi_client*cl
Pointer to the HSI client

Description

Return -errno on failure, 0 on success

void hsi_port_unregister_clients(struct hsi_port * port)

Unregister an HSI port

Parameters

structhsi_port*port
The HSI port to unregister
void hsi_unregister_controller(struct hsi_controller * hsi)

Unregister an HSI controller

Parameters

structhsi_controller*hsi
The HSI controller to register
int hsi_register_controller(struct hsi_controller * hsi)

Register an HSI controller and its ports

Parameters

structhsi_controller*hsi
The HSI controller to register

Description

Returns -errno on failure, 0 on success.

int hsi_register_client_driver(struct hsi_client_driver * drv)

Register an HSI client to the HSI bus

Parameters

Hsi Driver License Test

structhsi_client_driver*drv
HSI client driver to register

Description

Returns -errno on failure, 0 on success.

void hsi_put_controller(struct hsi_controller * hsi)

Free an HSI controller

Parameters

structhsi_controller*hsi
Pointer to the HSI controller to freed

Description

HSI controller drivers should only use this function if they needto free their allocated hsi_controller structures before a successfulcall to hsi_register_controller. Other use is not allowed.

struct hsi_controller * hsi_alloc_controller(unsigned int n_ports, gfp_t flags)

Allocate an HSI controller and its ports

Parameters

unsignedintn_ports
Number of ports on the HSI controller
gfp_tflags
Kernel allocation flags

Description

Return NULL on failure or a pointer to an hsi_controller on success.

void hsi_free_msg(struct hsi_msg * msg)

Free an HSI message

Parameters

structhsi_msg*msg
Pointer to the HSI message

Description

Client is responsible to free the buffers pointed by the scatterlists.

struct hsi_msg * hsi_alloc_msg(unsigned int nents, gfp_t flags)

Allocate an HSI message

Parameters

unsignedintnents
Number of memory entries
gfp_tflags
Kernel allocation flags

Description

nents can be 0. This mainly makes sense for read transfer.In that case, HSI drivers will call the complete callback whenthere is data to be read without consuming it.

Return NULL on failure or a pointer to an hsi_msg on success.

int hsi_async(struct hsi_client * cl, struct hsi_msg * msg)

Submit an HSI transfer to the controller

Parameters

structhsi_client*cl
HSI client sending the transfer
structhsi_msg*msg
The HSI transfer passed to controller

Description Driver grafis.

The HSI message must have the channel, ttype, complete and destructorfields set beforehand. If nents > 0 then the client has to initializealso the scatterlists to point to the buffers to write to or read from.

HSI controllers relay on pre-allocated buffers from their clients and theydo not allocate buffers on their own.

Once the HSI message transfer finishes, the HSI controller calls thecomplete callback with the status and actual_len fields of the HSI messageupdated. The complete callback can be called before returning fromhsi_async.

Returns -errno on failure or 0 on success

int hsi_claim_port(struct hsi_client * cl, unsigned int share)

Claim the HSI client’s port

Parameters

structhsi_client*cl
HSI client that wants to claim its port
unsignedintshare
Flag to indicate if the client wants to share the port or not.

Description

Returns -errno on failure, 0 on success.

void hsi_release_port(struct hsi_client * cl)

Release the HSI client’s port

Parameters

structhsi_client*cl
HSI client which previously claimed its port
int hsi_register_port_event(struct hsi_client * cl, void (*handler) (struct hsi_client *, unsigned long)

Register a client to receive port events

Parameters

structhsi_client*cl
HSI client that wants to receive port events
void(*)(structhsi_client*,unsignedlong)handler
Event handler callback

Description

Clients should register a callback to be able to receiveevents from the ports. Registration should happen afterclaiming the port.The handler can be called in interrupt context.

Returns -errno on error, or 0 on success.

int hsi_unregister_port_event(struct hsi_client * cl)

Stop receiving port events for a client

Parameters

structhsi_client*cl
HSI client that wants to stop receiving port events

Description

Clients should call this function before releasing their associatedport.

Edsys laptops & desktops driver. Returns -errno on error, or 0 on success.

int hsi_event(struct hsi_port * port, unsigned long event)

Notifies clients about port events

Parameters

structhsi_port*port
Port where the event occurred
unsignedlongevent
The event type

Description

Clients should not be concerned about wake line behavior. However, dueto a race condition in HSI HW protocol, clients need to be notifiedabout wake line changes, so they can implement a workaround for it.

Events:HSI_EVENT_START_RX - Incoming wake line highHSI_EVENT_STOP_RX - Incoming wake line down

Returns -errno on error, or 0 on success.

int hsi_get_channel_id_by_name(struct hsi_client * cl, char * name)

acquire channel id by channel name

Parameters

structhsi_client*cl
HSI client, which uses the channel
char*name
name the channel is known under

Description

Clients can call this function to get the hsi channel ids similar torequesting IRQs or GPIOs by name. This function assumes the samechannel configuration is used for RX and TX.

Returns -errno on error or channel id on success.

Anyone considering a career as a commercial driver knows you need a special classification of driving license to be employed. A written test and a drive with a transportation official to demonstrate the appropriate skills? Of course you’ll have to do that to get your license, but did you realize that driver wellness is part of the training mix as well?

According to the Federal Motor Carrier Safety Administration, entry-level driver training must include instruction addressing driver wellness, in which they include “basic health maintenance including diet and exercise [and] the importance of avoiding excessive use of alcohol.”

Extended, stressful hours on the road, limited healthy food choices, long periods of sitting — it all adds up to driver fatigue and potential negative health impacts. A 2011 article in the Journal of Workplace Behavioral Health looked at “25 trucking work settings designed to examine whether the environmental attributes of these settings influence eating patterns of truckers who are at risk for excess weight gain':

'Findings corroborate evidence that these work settings represent healthy food deserts. From restaurants and vending machines to the social information environments and their surrounding communities, only meager opportunities exist for healthful eating practices.”

In the proceedings from a 2003 conference sponsored by the National Institute for Occupational Safety and Health, the Owner-Operator Independent Drivers Association, the International Brotherhood of Teamsters, and the Trucking Industry Program and the Trucking Industry Benchmarking Program at Wayne State University, the authors make it clear that truck drivers are at serious health risk:

Euresys driver download for windows. “Truck drivers merit special attention not only because of their large numbers—approximately 2.8 million in the U.S.—but also because they face extraordinary risk of on-the-job injury and death. In 2004, U.S. truck drivers were 7 times more likely to die on the job, and 2.5 times more likely to suffer an occupational injury or illness, than was the average worker.”

If you are a driver or are responsible for the safety of your driving team at your organization, Summit’s online DOT: Driver Wellness program has the info you need to ensure this unique work environment is as safe as possible:

DOT: Driver Wellness
Addresses FMCSA Parts 392, 393, and 396

Ensure your drivers health and wellbeing isn’t negatively affected by their lifestyle choices, job duties and the ergonomic factors of driving a truck. Summit’s DOT safety training program covers:

• Job duties including stress, fatigue, and exposure

• Work environment and ergonomic factors

• Lifestyle hazards such as poor diet, smoking and hypertension