diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2020-01-15 07:58:30 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2020-01-15 07:58:30 +0100 |
commit | 56c313fe1751756ba978824798f61b4abe6ac49c (patch) | |
tree | 9e98f6bee10468f8b58667e41d2f3dc3e842477a /include | |
parent | 38188906dce22189462cea0b23e67fd122e22dea (diff) | |
parent | 184050d9972b37557cdff40805ee04582c8e54e6 (diff) | |
download | barebox-56c313fe1751756ba978824798f61b4abe6ac49c.tar.gz barebox-56c313fe1751756ba978824798f61b4abe6ac49c.tar.xz |
Merge branch 'for-next/rpi'
Diffstat (limited to 'include')
-rw-r--r-- | include/driver.h | 2 | ||||
-rw-r--r-- | include/of.h | 12 | ||||
-rw-r--r-- | include/of_address.h | 9 | ||||
-rw-r--r-- | include/regulator.h | 1 | ||||
-rw-r--r-- | include/usb/usb.h | 8 | ||||
-rw-r--r-- | include/usb/usbroothubdes.h | 128 |
6 files changed, 156 insertions, 4 deletions
diff --git a/include/driver.h b/include/driver.h index ad59ce90c3..74be1b3e8e 100644 --- a/include/driver.h +++ b/include/driver.h @@ -93,6 +93,8 @@ struct device_d { u64 dma_mask; + unsigned long dma_offset; + void (*info) (struct device_d *); /* * For devices which take longer to probe this is called diff --git a/include/of.h b/include/of.h index f63a3efe13..67601ce80c 100644 --- a/include/of.h +++ b/include/of.h @@ -113,7 +113,9 @@ struct device_node *of_unflatten_dtb_const(const void *infdt); struct cdev; #ifdef CONFIG_OFTREE +extern int of_bus_n_addr_cells(struct device_node *np); extern int of_n_addr_cells(struct device_node *np); +extern int of_bus_n_size_cells(struct device_node *np); extern int of_n_size_cells(struct device_node *np); extern struct property *of_find_property(const struct device_node *np, @@ -328,11 +330,21 @@ static inline struct device_d *of_platform_device_create(struct device_node *np, return NULL; } +static inline int of_bus_n_addr_cells(struct device_node *np) +{ + return 0; +} + static inline int of_n_addr_cells(struct device_node *np) { return 0; } +static inline int of_bus_n_size_cells(struct device_node *np) +{ + return 0; +} + static inline int of_n_size_cells(struct device_node *np) { return 0; diff --git a/include/of_address.h b/include/of_address.h index ebf3ec2a24..350ecaec82 100644 --- a/include/of_address.h +++ b/include/of_address.h @@ -56,6 +56,9 @@ extern struct device_node *of_find_matching_node_by_address( u64 base_address); extern void __iomem *of_iomap(struct device_node *np, int index); +extern int of_dma_get_range(struct device_node *np, u64 *dma_addr, u64 *paddr, + u64 *size); + #else /* CONFIG_OFTREE */ static inline u64 of_translate_address(struct device_node *dev, @@ -99,6 +102,12 @@ static inline void __iomem *of_iomap(struct device_node *np, int index) return NULL; } +static inline int of_dma_get_range(struct device_node *np, u64 *dma_addr, + u64 *paddr, u64 *size) +{ + return -ENOSYS; +} + #endif /* CONFIG_OFTREE */ #ifdef CONFIG_OF_PCI diff --git a/include/regulator.h b/include/regulator.h index 156acb82f8..a445c5c3d1 100644 --- a/include/regulator.h +++ b/include/regulator.h @@ -116,6 +116,7 @@ void regulators_print(void); #ifdef CONFIG_REGULATOR struct regulator *regulator_get(struct device_d *, const char *); +struct regulator *regulator_get_name(const char *name); int regulator_enable(struct regulator *); int regulator_disable(struct regulator *); int regulator_is_enabled_regmap(struct regulator_dev *); diff --git a/include/usb/usb.h b/include/usb/usb.h index d39de71aff..95dedfd5b7 100644 --- a/include/usb/usb.h +++ b/include/usb/usb.h @@ -140,9 +140,9 @@ struct usb_host { int (*init)(struct usb_host *); int (*exit)(struct usb_host *); int (*submit_bulk_msg)(struct usb_device *dev, unsigned long pipe, - void *buffer, int transfer_len, int timeout); + void *buffer, int transfer_len, int timeout_ms); int (*submit_control_msg)(struct usb_device *dev, unsigned long pipe, void *buffer, - int transfer_len, struct devrequest *setup, int timeout); + int transfer_len, struct devrequest *setup, int timeout_ms); int (*submit_int_msg)(struct usb_device *dev, unsigned long pipe, void *buffer, int transfer_len, int interval); void (*usb_event_poll)(void); @@ -167,9 +167,9 @@ int usb_set_idle(struct usb_device *dev, int ifnum, int duration, int usb_control_msg(struct usb_device *dev, unsigned int pipe, unsigned char request, unsigned char requesttype, unsigned short value, unsigned short index, - void *data, unsigned short size, int timeout); + void *data, unsigned short size, int timeout_ms); int usb_bulk_msg(struct usb_device *dev, unsigned int pipe, - void *data, int len, int *actual_length, int timeout); + void *data, int len, int *actual_length, int timeout_ms); int usb_submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer, int transfer_len, int interval); int usb_maxpacket(struct usb_device *dev, unsigned long pipe); diff --git a/include/usb/usbroothubdes.h b/include/usb/usbroothubdes.h new file mode 100644 index 0000000000..e743555d8e --- /dev/null +++ b/include/usb/usbroothubdes.h @@ -0,0 +1,128 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * USB virtual root hub descriptors + * + * (C) Copyright 2014 + * Stephen Warren swarren@wwwdotorg.org + * + * Based on ohci-hcd.c + */ + +#ifndef __USBROOTHUBDES_H__ +#define __USBROOTHUBDES_H__ + +/* Device descriptor */ +static __u8 root_hub_dev_des[] = { + 0x12, /* __u8 bLength; */ + 0x01, /* __u8 bDescriptorType; Device */ + 0x10, /* __u16 bcdUSB; v1.1 */ + 0x01, + 0x09, /* __u8 bDeviceClass; HUB_CLASSCODE */ + 0x00, /* __u8 bDeviceSubClass; */ + 0x00, /* __u8 bDeviceProtocol; */ + 0x08, /* __u8 bMaxPacketSize0; 8 Bytes */ + 0x00, /* __u16 idVendor; */ + 0x00, + 0x00, /* __u16 idProduct; */ + 0x00, + 0x00, /* __u16 bcdDevice; */ + 0x00, + 0x00, /* __u8 iManufacturer; */ + 0x01, /* __u8 iProduct; */ + 0x00, /* __u8 iSerialNumber; */ + 0x01, /* __u8 bNumConfigurations; */ +}; + +/* Configuration descriptor */ +static __u8 root_hub_config_des[] = { + 0x09, /* __u8 bLength; */ + 0x02, /* __u8 bDescriptorType; Configuration */ + 0x19, /* __u16 wTotalLength; */ + 0x00, + 0x01, /* __u8 bNumInterfaces; */ + 0x01, /* __u8 bConfigurationValue; */ + 0x00, /* __u8 iConfiguration; */ + 0x40, /* __u8 bmAttributes; + * Bit 7: Bus-powered + * 6: Self-powered, + * 5 Remote-wakwup, + * 4..0: resvd + */ + 0x00, /* __u8 MaxPower; */ + /* interface */ + 0x09, /* __u8 if_bLength; */ + 0x04, /* __u8 if_bDescriptorType; Interface */ + 0x00, /* __u8 if_bInterfaceNumber; */ + 0x00, /* __u8 if_bAlternateSetting; */ + 0x01, /* __u8 if_bNumEndpoints; */ + 0x09, /* __u8 if_bInterfaceClass; HUB_CLASSCODE */ + 0x00, /* __u8 if_bInterfaceSubClass; */ + 0x00, /* __u8 if_bInterfaceProtocol; */ + 0x00, /* __u8 if_iInterface; */ + /* endpoint */ + 0x07, /* __u8 ep_bLength; */ + 0x05, /* __u8 ep_bDescriptorType; Endpoint */ + 0x81, /* __u8 ep_bEndpointAddress; IN Endpoint 1 */ + 0x03, /* __u8 ep_bmAttributes; Interrupt */ + 0x02, /* __u16 ep_wMaxPacketSize; ((MAX_ROOT_PORTS + 1) / 8 */ + 0x00, + 0xff, /* __u8 ep_bInterval; 255 ms */ +}; + +#ifdef WANT_USB_ROOT_HUB_HUB_DES +static unsigned char root_hub_hub_des[] = { + 0x09, /* __u8 bLength; */ + 0x29, /* __u8 bDescriptorType; Hub-descriptor */ + 0x02, /* __u8 bNbrPorts; */ + 0x00, /* __u16 wHubCharacteristics; */ + 0x00, + 0x01, /* __u8 bPwrOn2pwrGood; 2ms */ + 0x00, /* __u8 bHubContrCurrent; 0 mA */ + 0x00, /* __u8 DeviceRemovable; *** 7 Ports max *** */ + 0xff, /* __u8 PortPwrCtrlMask; *** 7 ports max *** */ +}; +#endif + +static unsigned char root_hub_str_index0[] = { + 0x04, /* __u8 bLength; */ + 0x03, /* __u8 bDescriptorType; String-descriptor */ + 0x09, /* __u8 lang ID */ + 0x04, /* __u8 lang ID */ +}; + +static unsigned char root_hub_str_index1[] = { + 32, /* __u8 bLength; */ + 0x03, /* __u8 bDescriptorType; String-descriptor */ + 'U', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + '-', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'B', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'o', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'o', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 't', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + ' ', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'R', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'o', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'o', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 't', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + ' ', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'H', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'u', /* __u8 Unicode */ + 0, /* __u8 Unicode */ + 'b', /* __u8 Unicode */ + 0, /* __u8 Unicode */ +}; + +#endif |