162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0+ */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * USB HandSpring Visor driver
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci *	Copyright (C) 1999 - 2003
662306a36Sopenharmony_ci *	    Greg Kroah-Hartman (greg@kroah.com)
762306a36Sopenharmony_ci *
862306a36Sopenharmony_ci * See Documentation/usb/usb-serial.rst for more information on using this
962306a36Sopenharmony_ci * driver.
1062306a36Sopenharmony_ci *
1162306a36Sopenharmony_ci */
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#ifndef __LINUX_USB_SERIAL_VISOR_H
1462306a36Sopenharmony_ci#define __LINUX_USB_SERIAL_VISOR_H
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci#define HANDSPRING_VENDOR_ID		0x082d
1862306a36Sopenharmony_ci#define HANDSPRING_VISOR_ID		0x0100
1962306a36Sopenharmony_ci#define HANDSPRING_TREO_ID		0x0200
2062306a36Sopenharmony_ci#define HANDSPRING_TREO600_ID		0x0300
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci#define PALM_VENDOR_ID			0x0830
2362306a36Sopenharmony_ci#define PALM_M500_ID			0x0001
2462306a36Sopenharmony_ci#define PALM_M505_ID			0x0002
2562306a36Sopenharmony_ci#define PALM_M515_ID			0x0003
2662306a36Sopenharmony_ci#define PALM_I705_ID			0x0020
2762306a36Sopenharmony_ci#define PALM_M125_ID			0x0040
2862306a36Sopenharmony_ci#define PALM_M130_ID			0x0050
2962306a36Sopenharmony_ci#define PALM_TUNGSTEN_T_ID		0x0060
3062306a36Sopenharmony_ci#define PALM_TREO_650			0x0061
3162306a36Sopenharmony_ci#define PALM_TUNGSTEN_Z_ID		0x0031
3262306a36Sopenharmony_ci#define PALM_ZIRE_ID			0x0070
3362306a36Sopenharmony_ci#define PALM_M100_ID			0x0080
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci#define GSPDA_VENDOR_ID		0x115e
3662306a36Sopenharmony_ci#define GSPDA_XPLORE_M68_ID		0xf100
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci#define SONY_VENDOR_ID			0x054C
3962306a36Sopenharmony_ci#define SONY_CLIE_3_5_ID		0x0038
4062306a36Sopenharmony_ci#define SONY_CLIE_4_0_ID		0x0066
4162306a36Sopenharmony_ci#define SONY_CLIE_S360_ID		0x0095
4262306a36Sopenharmony_ci#define SONY_CLIE_4_1_ID		0x009A
4362306a36Sopenharmony_ci#define SONY_CLIE_NX60_ID		0x00DA
4462306a36Sopenharmony_ci#define SONY_CLIE_NZ90V_ID		0x00E9
4562306a36Sopenharmony_ci#define SONY_CLIE_UX50_ID		0x0144
4662306a36Sopenharmony_ci#define SONY_CLIE_TJ25_ID		0x0169
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci#define ACER_VENDOR_ID			0x0502
4962306a36Sopenharmony_ci#define ACER_S10_ID			0x0001
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci#define SAMSUNG_VENDOR_ID		0x04E8
5262306a36Sopenharmony_ci#define SAMSUNG_SCH_I330_ID		0x8001
5362306a36Sopenharmony_ci#define SAMSUNG_SPH_I500_ID		0x6601
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci#define TAPWAVE_VENDOR_ID		0x12EF
5662306a36Sopenharmony_ci#define TAPWAVE_ZODIAC_ID		0x0100
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci#define GARMIN_VENDOR_ID		0x091E
5962306a36Sopenharmony_ci#define GARMIN_IQUE_3600_ID		0x0004
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci#define ACEECA_VENDOR_ID		0x4766
6262306a36Sopenharmony_ci#define ACEECA_MEZ1000_ID		0x0001
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci#define KYOCERA_VENDOR_ID		0x0C88
6562306a36Sopenharmony_ci#define KYOCERA_7135_ID			0x0021
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci#define FOSSIL_VENDOR_ID		0x0E67
6862306a36Sopenharmony_ci#define FOSSIL_ABACUS_ID		0x0002
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci/****************************************************************************
7162306a36Sopenharmony_ci * Handspring Visor Vendor specific request codes (bRequest values)
7262306a36Sopenharmony_ci * A big thank you to Handspring for providing the following information.
7362306a36Sopenharmony_ci * If anyone wants the original file where these values and structures came
7462306a36Sopenharmony_ci * from, send email to <greg@kroah.com>.
7562306a36Sopenharmony_ci ****************************************************************************/
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci/****************************************************************************
7862306a36Sopenharmony_ci * VISOR_REQUEST_BYTES_AVAILABLE asks the visor for the number of bytes that
7962306a36Sopenharmony_ci * are available to be transferred to the host for the specified endpoint.
8062306a36Sopenharmony_ci * Currently this is not used, and always returns 0x0001
8162306a36Sopenharmony_ci ****************************************************************************/
8262306a36Sopenharmony_ci#define VISOR_REQUEST_BYTES_AVAILABLE		0x01
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci/****************************************************************************
8562306a36Sopenharmony_ci * VISOR_CLOSE_NOTIFICATION is set to the device to notify it that the host
8662306a36Sopenharmony_ci * is now closing the pipe. An empty packet is sent in response.
8762306a36Sopenharmony_ci ****************************************************************************/
8862306a36Sopenharmony_ci#define VISOR_CLOSE_NOTIFICATION		0x02
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci/****************************************************************************
9162306a36Sopenharmony_ci * VISOR_GET_CONNECTION_INFORMATION is sent by the host during enumeration to
9262306a36Sopenharmony_ci * get the endpoints used by the connection.
9362306a36Sopenharmony_ci ****************************************************************************/
9462306a36Sopenharmony_ci#define VISOR_GET_CONNECTION_INFORMATION	0x03
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci/****************************************************************************
9862306a36Sopenharmony_ci * VISOR_GET_CONNECTION_INFORMATION returns data in the following format
9962306a36Sopenharmony_ci ****************************************************************************/
10062306a36Sopenharmony_cistruct visor_connection_info {
10162306a36Sopenharmony_ci	__le16	num_ports;
10262306a36Sopenharmony_ci	struct {
10362306a36Sopenharmony_ci		__u8	port_function_id;
10462306a36Sopenharmony_ci		__u8	port;
10562306a36Sopenharmony_ci	} connections[2];
10662306a36Sopenharmony_ci};
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci/* struct visor_connection_info.connection[x].port defines: */
11062306a36Sopenharmony_ci#define VISOR_ENDPOINT_1		0x01
11162306a36Sopenharmony_ci#define VISOR_ENDPOINT_2		0x02
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci/* struct visor_connection_info.connection[x].port_function_id defines: */
11462306a36Sopenharmony_ci#define VISOR_FUNCTION_GENERIC		0x00
11562306a36Sopenharmony_ci#define VISOR_FUNCTION_DEBUGGER		0x01
11662306a36Sopenharmony_ci#define VISOR_FUNCTION_HOTSYNC		0x02
11762306a36Sopenharmony_ci#define VISOR_FUNCTION_CONSOLE		0x03
11862306a36Sopenharmony_ci#define VISOR_FUNCTION_REMOTE_FILE_SYS	0x04
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci/****************************************************************************
12262306a36Sopenharmony_ci * PALM_GET_SOME_UNKNOWN_INFORMATION is sent by the host during enumeration to
12362306a36Sopenharmony_ci * get some information from the M series devices, that is currently unknown.
12462306a36Sopenharmony_ci ****************************************************************************/
12562306a36Sopenharmony_ci#define PALM_GET_EXT_CONNECTION_INFORMATION	0x04
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ci/**
12862306a36Sopenharmony_ci * struct palm_ext_connection_info - return data from a PALM_GET_EXT_CONNECTION_INFORMATION request
12962306a36Sopenharmony_ci * @num_ports: maximum number of functions/connections in use
13062306a36Sopenharmony_ci * @endpoint_numbers_different: will be 1 if in and out endpoints numbers are
13162306a36Sopenharmony_ci *	different, otherwise it is 0.  If value is 1, then
13262306a36Sopenharmony_ci *	connections.end_point_info is non-zero.  If value is 0, then
13362306a36Sopenharmony_ci *	connections.port contains the endpoint number, which is the same for in
13462306a36Sopenharmony_ci *	and out.
13562306a36Sopenharmony_ci * @port_function_id: contains the creator id of the application that opened
13662306a36Sopenharmony_ci *	this connection.
13762306a36Sopenharmony_ci * @port: contains the in/out endpoint number.  Is 0 if in and out endpoint
13862306a36Sopenharmony_ci *	numbers are different.
13962306a36Sopenharmony_ci * @end_point_info: high nubbe is in endpoint and low nibble will indicate out
14062306a36Sopenharmony_ci *	endpoint.  Is 0 if in and out endpoints are the same.
14162306a36Sopenharmony_ci *
14262306a36Sopenharmony_ci * The maximum number of connections currently supported is 2
14362306a36Sopenharmony_ci */
14462306a36Sopenharmony_cistruct palm_ext_connection_info {
14562306a36Sopenharmony_ci	__u8 num_ports;
14662306a36Sopenharmony_ci	__u8 endpoint_numbers_different;
14762306a36Sopenharmony_ci	__le16 reserved1;
14862306a36Sopenharmony_ci	struct {
14962306a36Sopenharmony_ci		__u32 port_function_id;
15062306a36Sopenharmony_ci		__u8 port;
15162306a36Sopenharmony_ci		__u8 end_point_info;
15262306a36Sopenharmony_ci		__le16 reserved;
15362306a36Sopenharmony_ci	} connections[2];
15462306a36Sopenharmony_ci};
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ci#endif
15762306a36Sopenharmony_ci
158