Commit 84cca820 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

USB: fix codingstyle issues in drivers/usb/core/*.h

Fixes a number of coding style issues in the USB internal header files.
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 41dceed5
...@@ -125,7 +125,7 @@ struct usb_hcd { ...@@ -125,7 +125,7 @@ struct usb_hcd {
/* more shared queuing code would be good; it should support /* more shared queuing code would be good; it should support
* smarter scheduling, handle transaction translators, etc; * smarter scheduling, handle transaction translators, etc;
* input size of periodic table to an interrupt scheduler. * input size of periodic table to an interrupt scheduler.
* (ohci 32, uhci 1024, ehci 256/512/1024). * (ohci 32, uhci 1024, ehci 256/512/1024).
*/ */
...@@ -133,16 +133,16 @@ struct usb_hcd { ...@@ -133,16 +133,16 @@ struct usb_hcd {
* this structure. * this structure.
*/ */
unsigned long hcd_priv[0] unsigned long hcd_priv[0]
__attribute__ ((aligned (sizeof(unsigned long)))); __attribute__ ((aligned(sizeof(unsigned long))));
}; };
/* 2.4 does this a bit differently ... */ /* 2.4 does this a bit differently ... */
static inline struct usb_bus *hcd_to_bus (struct usb_hcd *hcd) static inline struct usb_bus *hcd_to_bus(struct usb_hcd *hcd)
{ {
return &hcd->self; return &hcd->self;
} }
static inline struct usb_hcd *bus_to_hcd (struct usb_bus *bus) static inline struct usb_hcd *bus_to_hcd(struct usb_bus *bus)
{ {
return container_of(bus, struct usb_hcd, self); return container_of(bus, struct usb_hcd, self);
} }
...@@ -202,18 +202,18 @@ struct hc_driver { ...@@ -202,18 +202,18 @@ struct hc_driver {
struct usb_host_endpoint *ep); struct usb_host_endpoint *ep);
/* root hub support */ /* root hub support */
int (*hub_status_data) (struct usb_hcd *hcd, char *buf); int (*hub_status_data) (struct usb_hcd *hcd, char *buf);
int (*hub_control) (struct usb_hcd *hcd, int (*hub_control) (struct usb_hcd *hcd,
u16 typeReq, u16 wValue, u16 wIndex, u16 typeReq, u16 wValue, u16 wIndex,
char *buf, u16 wLength); char *buf, u16 wLength);
int (*bus_suspend)(struct usb_hcd *); int (*bus_suspend)(struct usb_hcd *);
int (*bus_resume)(struct usb_hcd *); int (*bus_resume)(struct usb_hcd *);
int (*start_port_reset)(struct usb_hcd *, unsigned port_num); int (*start_port_reset)(struct usb_hcd *, unsigned port_num);
void (*hub_irq_enable)(struct usb_hcd *); void (*hub_irq_enable)(struct usb_hcd *);
/* Needed only if port-change IRQs are level-triggered */ /* Needed only if port-change IRQs are level-triggered */
/* force handover of high-speed port to full-speed companion */ /* force handover of high-speed port to full-speed companion */
void (*relinquish_port)(struct usb_hcd *, int); void (*relinquish_port)(struct usb_hcd *, int);
}; };
extern int usb_hcd_link_urb_to_ep(struct usb_hcd *hcd, struct urb *urb); extern int usb_hcd_link_urb_to_ep(struct usb_hcd *hcd, struct urb *urb);
...@@ -221,56 +221,56 @@ extern int usb_hcd_check_unlink_urb(struct usb_hcd *hcd, struct urb *urb, ...@@ -221,56 +221,56 @@ extern int usb_hcd_check_unlink_urb(struct usb_hcd *hcd, struct urb *urb,
int status); int status);
extern void usb_hcd_unlink_urb_from_ep(struct usb_hcd *hcd, struct urb *urb); extern void usb_hcd_unlink_urb_from_ep(struct usb_hcd *hcd, struct urb *urb);
extern int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags); extern int usb_hcd_submit_urb(struct urb *urb, gfp_t mem_flags);
extern int usb_hcd_unlink_urb (struct urb *urb, int status); extern int usb_hcd_unlink_urb(struct urb *urb, int status);
extern void usb_hcd_giveback_urb(struct usb_hcd *hcd, struct urb *urb, extern void usb_hcd_giveback_urb(struct usb_hcd *hcd, struct urb *urb,
int status); int status);
extern void usb_hcd_flush_endpoint(struct usb_device *udev, extern void usb_hcd_flush_endpoint(struct usb_device *udev,
struct usb_host_endpoint *ep); struct usb_host_endpoint *ep);
extern void usb_hcd_disable_endpoint(struct usb_device *udev, extern void usb_hcd_disable_endpoint(struct usb_device *udev,
struct usb_host_endpoint *ep); struct usb_host_endpoint *ep);
extern int usb_hcd_get_frame_number (struct usb_device *udev); extern int usb_hcd_get_frame_number(struct usb_device *udev);
extern struct usb_hcd *usb_create_hcd (const struct hc_driver *driver, extern struct usb_hcd *usb_create_hcd(const struct hc_driver *driver,
struct device *dev, char *bus_name); struct device *dev, char *bus_name);
extern struct usb_hcd *usb_get_hcd (struct usb_hcd *hcd); extern struct usb_hcd *usb_get_hcd(struct usb_hcd *hcd);
extern void usb_put_hcd (struct usb_hcd *hcd); extern void usb_put_hcd(struct usb_hcd *hcd);
extern int usb_add_hcd(struct usb_hcd *hcd, extern int usb_add_hcd(struct usb_hcd *hcd,
unsigned int irqnum, unsigned long irqflags); unsigned int irqnum, unsigned long irqflags);
extern void usb_remove_hcd(struct usb_hcd *hcd); extern void usb_remove_hcd(struct usb_hcd *hcd);
struct platform_device; struct platform_device;
extern void usb_hcd_platform_shutdown(struct platform_device* dev); extern void usb_hcd_platform_shutdown(struct platform_device *dev);
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
struct pci_dev; struct pci_dev;
struct pci_device_id; struct pci_device_id;
extern int usb_hcd_pci_probe (struct pci_dev *dev, extern int usb_hcd_pci_probe(struct pci_dev *dev,
const struct pci_device_id *id); const struct pci_device_id *id);
extern void usb_hcd_pci_remove (struct pci_dev *dev); extern void usb_hcd_pci_remove(struct pci_dev *dev);
#ifdef CONFIG_PM #ifdef CONFIG_PM
extern int usb_hcd_pci_suspend (struct pci_dev *dev, pm_message_t state); extern int usb_hcd_pci_suspend(struct pci_dev *dev, pm_message_t state);
extern int usb_hcd_pci_resume (struct pci_dev *dev); extern int usb_hcd_pci_resume(struct pci_dev *dev);
#endif /* CONFIG_PM */ #endif /* CONFIG_PM */
extern void usb_hcd_pci_shutdown (struct pci_dev *dev); extern void usb_hcd_pci_shutdown(struct pci_dev *dev);
#endif /* CONFIG_PCI */ #endif /* CONFIG_PCI */
/* pci-ish (pdev null is ok) buffer alloc/mapping support */ /* pci-ish (pdev null is ok) buffer alloc/mapping support */
int hcd_buffer_create (struct usb_hcd *hcd); int hcd_buffer_create(struct usb_hcd *hcd);
void hcd_buffer_destroy (struct usb_hcd *hcd); void hcd_buffer_destroy(struct usb_hcd *hcd);
void *hcd_buffer_alloc (struct usb_bus *bus, size_t size, void *hcd_buffer_alloc(struct usb_bus *bus, size_t size,
gfp_t mem_flags, dma_addr_t *dma); gfp_t mem_flags, dma_addr_t *dma);
void hcd_buffer_free (struct usb_bus *bus, size_t size, void hcd_buffer_free(struct usb_bus *bus, size_t size,
void *addr, dma_addr_t dma); void *addr, dma_addr_t dma);
/* generic bus glue, needed for host controllers that don't use PCI */ /* generic bus glue, needed for host controllers that don't use PCI */
extern irqreturn_t usb_hcd_irq (int irq, void *__hcd); extern irqreturn_t usb_hcd_irq(int irq, void *__hcd);
extern void usb_hc_died (struct usb_hcd *hcd); extern void usb_hc_died(struct usb_hcd *hcd);
extern void usb_hcd_poll_rh_status(struct usb_hcd *hcd); extern void usb_hcd_poll_rh_status(struct usb_hcd *hcd);
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
...@@ -323,9 +323,9 @@ extern void usb_destroy_configuration(struct usb_device *dev); ...@@ -323,9 +323,9 @@ extern void usb_destroy_configuration(struct usb_device *dev);
* Generic bandwidth allocation constants/support * Generic bandwidth allocation constants/support
*/ */
#define FRAME_TIME_USECS 1000L #define FRAME_TIME_USECS 1000L
#define BitTime(bytecount) (7 * 8 * bytecount / 6) /* with integer truncation */ #define BitTime(bytecount) (7 * 8 * bytecount / 6) /* with integer truncation */
/* Trying not to use worst-case bit-stuffing /* Trying not to use worst-case bit-stuffing
of (7/6 * 8 * bytecount) = 9.33 * bytecount */ * of (7/6 * 8 * bytecount) = 9.33 * bytecount */
/* bytecount = data payload byte count */ /* bytecount = data payload byte count */
#define NS_TO_US(ns) ((ns + 500L) / 1000L) #define NS_TO_US(ns) ((ns + 500L) / 1000L)
...@@ -337,9 +337,9 @@ extern void usb_destroy_configuration(struct usb_device *dev); ...@@ -337,9 +337,9 @@ extern void usb_destroy_configuration(struct usb_device *dev);
*/ */
#define BW_HOST_DELAY 1000L /* nanoseconds */ #define BW_HOST_DELAY 1000L /* nanoseconds */
#define BW_HUB_LS_SETUP 333L /* nanoseconds */ #define BW_HUB_LS_SETUP 333L /* nanoseconds */
/* 4 full-speed bit times (est.) */ /* 4 full-speed bit times (est.) */
#define FRAME_TIME_BITS 12000L /* frame = 1 millisecond */ #define FRAME_TIME_BITS 12000L /* frame = 1 millisecond */
#define FRAME_TIME_MAX_BITS_ALLOC (90L * FRAME_TIME_BITS / 100L) #define FRAME_TIME_MAX_BITS_ALLOC (90L * FRAME_TIME_BITS / 100L)
#define FRAME_TIME_MAX_USECS_ALLOC (90L * FRAME_TIME_USECS / 100L) #define FRAME_TIME_MAX_USECS_ALLOC (90L * FRAME_TIME_USECS / 100L)
...@@ -349,16 +349,16 @@ extern void usb_destroy_configuration(struct usb_device *dev); ...@@ -349,16 +349,16 @@ extern void usb_destroy_configuration(struct usb_device *dev);
* to preallocate bandwidth) * to preallocate bandwidth)
*/ */
#define USB2_HOST_DELAY 5 /* nsec, guess */ #define USB2_HOST_DELAY 5 /* nsec, guess */
#define HS_NSECS(bytes) ( ((55 * 8 * 2083) \ #define HS_NSECS(bytes) (((55 * 8 * 2083) \
+ (2083UL * (3 + BitTime(bytes))))/1000 \ + (2083UL * (3 + BitTime(bytes))))/1000 \
+ USB2_HOST_DELAY) + USB2_HOST_DELAY)
#define HS_NSECS_ISO(bytes) ( ((38 * 8 * 2083) \ #define HS_NSECS_ISO(bytes) (((38 * 8 * 2083) \
+ (2083UL * (3 + BitTime(bytes))))/1000 \ + (2083UL * (3 + BitTime(bytes))))/1000 \
+ USB2_HOST_DELAY) + USB2_HOST_DELAY)
#define HS_USECS(bytes) NS_TO_US (HS_NSECS(bytes)) #define HS_USECS(bytes) NS_TO_US (HS_NSECS(bytes))
#define HS_USECS_ISO(bytes) NS_TO_US (HS_NSECS_ISO(bytes)) #define HS_USECS_ISO(bytes) NS_TO_US (HS_NSECS_ISO(bytes))
extern long usb_calc_bus_time (int speed, int is_input, extern long usb_calc_bus_time(int speed, int is_input,
int isoc, int bytecount); int isoc, int bytecount);
/*-------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------*/
...@@ -374,16 +374,16 @@ extern struct list_head usb_bus_list; ...@@ -374,16 +374,16 @@ extern struct list_head usb_bus_list;
extern struct mutex usb_bus_list_lock; extern struct mutex usb_bus_list_lock;
extern wait_queue_head_t usb_kill_urb_queue; extern wait_queue_head_t usb_kill_urb_queue;
extern void usb_enable_root_hub_irq (struct usb_bus *bus); extern void usb_enable_root_hub_irq(struct usb_bus *bus);
extern int usb_find_interface_driver (struct usb_device *dev, extern int usb_find_interface_driver(struct usb_device *dev,
struct usb_interface *interface); struct usb_interface *interface);
#define usb_endpoint_out(ep_dir) (!((ep_dir) & USB_DIR_IN)) #define usb_endpoint_out(ep_dir) (!((ep_dir) & USB_DIR_IN))
#ifdef CONFIG_PM #ifdef CONFIG_PM
extern void usb_hcd_resume_root_hub (struct usb_hcd *hcd); extern void usb_hcd_resume_root_hub(struct usb_hcd *hcd);
extern void usb_root_hub_lost_power (struct usb_device *rhdev); extern void usb_root_hub_lost_power(struct usb_device *rhdev);
extern int hcd_bus_suspend(struct usb_device *rhdev); extern int hcd_bus_suspend(struct usb_device *rhdev);
extern int hcd_bus_resume(struct usb_device *rhdev); extern int hcd_bus_resume(struct usb_device *rhdev);
#else #else
...@@ -403,13 +403,13 @@ static inline void usb_hcd_resume_root_hub(struct usb_hcd *hcd) ...@@ -403,13 +403,13 @@ static inline void usb_hcd_resume_root_hub(struct usb_hcd *hcd)
* these are expected to be called from the USB core/hub thread * these are expected to be called from the USB core/hub thread
* with the kernel lock held * with the kernel lock held
*/ */
extern void usbfs_update_special (void); extern void usbfs_update_special(void);
extern int usbfs_init(void); extern int usbfs_init(void);
extern void usbfs_cleanup(void); extern void usbfs_cleanup(void);
#else /* CONFIG_USB_DEVICEFS */ #else /* CONFIG_USB_DEVICEFS */
static inline void usbfs_update_special (void) {} static inline void usbfs_update_special(void) {}
static inline int usbfs_init(void) { return 0; } static inline int usbfs_init(void) { return 0; }
static inline void usbfs_cleanup(void) { } static inline void usbfs_cleanup(void) { }
...@@ -464,7 +464,7 @@ static inline void usbmon_urb_complete(struct usb_bus *bus, struct urb *urb, ...@@ -464,7 +464,7 @@ static inline void usbmon_urb_complete(struct usb_bus *bus, struct urb *urb,
/*-------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------*/
/* hub.h ... DeviceRemovable in 2.4.2-ac11, gone in 2.4.10 */ /* hub.h ... DeviceRemovable in 2.4.2-ac11, gone in 2.4.10 */
// bleech -- resurfaced in 2.4.11 or 2.4.12 /* bleech -- resurfaced in 2.4.11 or 2.4.12 */
#define bitmap DeviceRemovable #define bitmap DeviceRemovable
...@@ -472,8 +472,8 @@ static inline void usbmon_urb_complete(struct usb_bus *bus, struct urb *urb, ...@@ -472,8 +472,8 @@ static inline void usbmon_urb_complete(struct usb_bus *bus, struct urb *urb,
/* random stuff */ /* random stuff */
#define RUN_CONTEXT (in_irq () ? "in_irq" \ #define RUN_CONTEXT (in_irq() ? "in_irq" \
: (in_interrupt () ? "in_interrupt" : "can sleep")) : (in_interrupt() ? "in_interrupt" : "can sleep"))
/* This rwsem is for use only by the hub driver and ehci-hcd. /* This rwsem is for use only by the hub driver and ehci-hcd.
......
...@@ -55,16 +55,16 @@ ...@@ -55,16 +55,16 @@
#define USB_PORT_FEAT_TEST 21 #define USB_PORT_FEAT_TEST 21
#define USB_PORT_FEAT_INDICATOR 22 #define USB_PORT_FEAT_INDICATOR 22
/* /*
* Hub Status and Hub Change results * Hub Status and Hub Change results
* See USB 2.0 spec Table 11-19 and Table 11-20 * See USB 2.0 spec Table 11-19 and Table 11-20
*/ */
struct usb_port_status { struct usb_port_status {
__le16 wPortStatus; __le16 wPortStatus;
__le16 wPortChange; __le16 wPortChange;
} __attribute__ ((packed)); } __attribute__ ((packed));
/* /*
* wPortStatus bit field * wPortStatus bit field
* See USB 2.0 spec Table 11-21 * See USB 2.0 spec Table 11-21
*/ */
...@@ -81,7 +81,7 @@ struct usb_port_status { ...@@ -81,7 +81,7 @@ struct usb_port_status {
#define USB_PORT_STAT_INDICATOR 0x1000 #define USB_PORT_STAT_INDICATOR 0x1000
/* bits 13 to 15 are reserved */ /* bits 13 to 15 are reserved */
/* /*
* wPortChange bit field * wPortChange bit field
* See USB 2.0 spec Table 11-22 * See USB 2.0 spec Table 11-22
* Bits 0 to 4 shown, bits 5 to 15 are reserved * Bits 0 to 4 shown, bits 5 to 15 are reserved
...@@ -93,7 +93,7 @@ struct usb_port_status { ...@@ -93,7 +93,7 @@ struct usb_port_status {
#define USB_PORT_STAT_C_RESET 0x0010 #define USB_PORT_STAT_C_RESET 0x0010
/* /*
* wHubCharacteristics (masks) * wHubCharacteristics (masks)
* See USB 2.0 spec Table 11-13, offset 3 * See USB 2.0 spec Table 11-13, offset 3
*/ */
#define HUB_CHAR_LPSM 0x0003 /* D1 .. D0 */ #define HUB_CHAR_LPSM 0x0003 /* D1 .. D0 */
...@@ -119,8 +119,8 @@ struct usb_hub_status { ...@@ -119,8 +119,8 @@ struct usb_hub_status {
#define HUB_CHANGE_OVERCURRENT 0x0002 #define HUB_CHANGE_OVERCURRENT 0x0002
/* /*
* Hub descriptor * Hub descriptor
* See USB 2.0 spec Table 11-13 * See USB 2.0 spec Table 11-13
*/ */
...@@ -134,7 +134,7 @@ struct usb_hub_descriptor { ...@@ -134,7 +134,7 @@ struct usb_hub_descriptor {
__le16 wHubCharacteristics; __le16 wHubCharacteristics;
__u8 bPwrOn2PwrGood; __u8 bPwrOn2PwrGood;
__u8 bHubContrCurrent; __u8 bHubContrCurrent;
/* add 1 bit for hub status change; round to bytes */ /* add 1 bit for hub status change; round to bytes */
__u8 DeviceRemovable[(USB_MAXCHILDREN + 1 + 7) / 8]; __u8 DeviceRemovable[(USB_MAXCHILDREN + 1 + 7) / 8];
__u8 PortPwrCtrlMask[(USB_MAXCHILDREN + 1 + 7) / 8]; __u8 PortPwrCtrlMask[(USB_MAXCHILDREN + 1 + 7) / 8];
} __attribute__ ((packed)); } __attribute__ ((packed));
...@@ -190,6 +190,6 @@ struct usb_tt_clear { ...@@ -190,6 +190,6 @@ struct usb_tt_clear {
u16 devinfo; u16 devinfo;
}; };
extern void usb_hub_tt_clear_buffer (struct usb_device *dev, int pipe); extern void usb_hub_tt_clear_buffer(struct usb_device *dev, int pipe);
#endif /* __LINUX_HUB_H */ #endif /* __LINUX_HUB_H */
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* mostly use of USB_DEVICE() or USB_DEVICE_VER() entries.. * mostly use of USB_DEVICE() or USB_DEVICE_VER() entries..
* *
* YOU _SHOULD_ CHANGE THIS LIST TO MATCH YOUR PRODUCT AND ITS TESTING! * YOU _SHOULD_ CHANGE THIS LIST TO MATCH YOUR PRODUCT AND ITS TESTING!
*/ */
static struct usb_device_id whitelist_table [] = { static struct usb_device_id whitelist_table [] = {
...@@ -55,7 +55,7 @@ static int is_targeted(struct usb_device *dev) ...@@ -55,7 +55,7 @@ static int is_targeted(struct usb_device *dev)
return 1; return 1;
/* HNP test device is _never_ targeted (see OTG spec 6.6.6) */ /* HNP test device is _never_ targeted (see OTG spec 6.6.6) */
if ((le16_to_cpu(dev->descriptor.idVendor) == 0x1a0a && if ((le16_to_cpu(dev->descriptor.idVendor) == 0x1a0a &&
le16_to_cpu(dev->descriptor.idProduct) == 0xbadd)) le16_to_cpu(dev->descriptor.idProduct) == 0xbadd))
return 0; return 0;
...@@ -86,7 +86,7 @@ static int is_targeted(struct usb_device *dev) ...@@ -86,7 +86,7 @@ static int is_targeted(struct usb_device *dev)
continue; continue;
if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_SUBCLASS) && if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_SUBCLASS) &&
(id->bDeviceSubClass!= dev->descriptor.bDeviceSubClass)) (id->bDeviceSubClass != dev->descriptor.bDeviceSubClass))
continue; continue;
if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_PROTOCOL) && if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_PROTOCOL) &&
......
/* Functions local to drivers/usb/core/ */ /* Functions local to drivers/usb/core/ */
extern int usb_create_sysfs_dev_files (struct usb_device *dev); extern int usb_create_sysfs_dev_files(struct usb_device *dev);
extern void usb_remove_sysfs_dev_files (struct usb_device *dev); extern void usb_remove_sysfs_dev_files(struct usb_device *dev);
extern int usb_create_sysfs_intf_files (struct usb_interface *intf); extern int usb_create_sysfs_intf_files(struct usb_interface *intf);
extern void usb_remove_sysfs_intf_files (struct usb_interface *intf); extern void usb_remove_sysfs_intf_files(struct usb_interface *intf);
extern int usb_create_ep_files(struct device *parent, struct usb_host_endpoint *endpoint, extern int usb_create_ep_files(struct device *parent,
struct usb_host_endpoint *endpoint,
struct usb_device *udev); struct usb_device *udev);
extern void usb_remove_ep_files(struct usb_host_endpoint *endpoint); extern void usb_remove_ep_files(struct usb_host_endpoint *endpoint);
extern void usb_enable_endpoint(struct usb_device *dev, extern void usb_enable_endpoint(struct usb_device *dev,
struct usb_host_endpoint *ep); struct usb_host_endpoint *ep);
extern void usb_disable_endpoint (struct usb_device *dev, unsigned int epaddr); extern void usb_disable_endpoint(struct usb_device *dev, unsigned int epaddr);
extern void usb_disable_interface (struct usb_device *dev, extern void usb_disable_interface(struct usb_device *dev,
struct usb_interface *intf); struct usb_interface *intf);
extern void usb_release_interface_cache(struct kref *ref); extern void usb_release_interface_cache(struct kref *ref);
extern void usb_disable_device (struct usb_device *dev, int skip_ep0); extern void usb_disable_device(struct usb_device *dev, int skip_ep0);
extern int usb_deauthorize_device (struct usb_device *); extern int usb_deauthorize_device(struct usb_device *);
extern int usb_authorize_device (struct usb_device *); extern int usb_authorize_device(struct usb_device *);
extern void usb_detect_quirks(struct usb_device *udev); extern void usb_detect_quirks(struct usb_device *udev);
extern int usb_get_device_descriptor(struct usb_device *dev, extern int usb_get_device_descriptor(struct usb_device *dev,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment