Dear All,
This is the second version of RFC for a usb gadget configured through configfs.
It is a follow-up to this thread:
http://www.spinics.net/lists/linux-usb/msg65972.html
It is meant to replace all gadgets with one, configurable through configfs.
By doing so, it will also make ccg obsolete
Enable calling usb_remove_config by gadgets.
Signed-off-by: Andrzej Pietrasiewicz
Signed-off-by: Kyungmin Park
---
drivers/usb/gadget/composite.c |1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
index 957f97
Add USB functions gadget configured entirely through configfs.
This is the base for adding USB functions to it. The next patch
in the series demonstrates how to add functions.
Signed-off-by: Andrzej Pietrasiewicz
Signed-off-by: Kyungmin Park
---
drivers/usb/gadget/Kconfig | 12 +
driv
An example port of a usb function to the USB functions gadget.
Signed-off-by: Andrzej Pietrasiewicz
Signed-off-by: Kyungmin Park
---
drivers/usb/gadget/f_mass_storage.c | 658 +++
drivers/usb/gadget/storage_common.c | 343 +++
drivers/usb/gadget
On 09/17/2012 08:02 AM, Jassi Brar wrote:
Though better would be to not refuse IN transfers if an OUT ep isn't
available and vice versa - the sound card might support only either
Playback or Capture, it doesn't have to always support both. The rbuf
should have been allocated only for ep that exi
Hi Shawn,
On Mon, Sep 17, 2012 at 01:34:29PM +0800, Shawn Guo wrote:
> The series enables multi-platform support for imx. Since the required
> frameworks (clk, pwm) and spare_irq have already been adopted on imx,
> the series is all about cleaning up mach/* headers. Along with the
> changes, arc
On Sunday 16 September 2012 01:48:16 Ming Lei wrote:
Hi,
> Currently only very few usbnet devices support the traffic based
> runtime PM, eg. wake up devices if there are packets to be transmitted.
>
> For the below situation, it should make sense to runtime suspend usbnet
> device to save power
On Mon, Sep 17, 2012 at 4:04 PM, Oliver Neukum wrote:
> On Sunday 16 September 2012 01:48:16 Ming Lei wrote:
>
> Hi,
>
>> Currently only very few usbnet devices support the traffic based
>> runtime PM, eg. wake up devices if there are packets to be transmitted.
>>
>> For the below situation, it sh
OTGSC_AVVIS cannot be set when vbus voltage goes valid or invalid on
imx, so convert to use OTGSC_BSV.
OTGSC_BSVIE and OTGSC_BSVIS is not cleared when hw_device_reset, so we
don't need to call hw_enable_vbus_intr after hw_device_reset.
Signed-off-by: Richard Zhao
---
drivers/usb/chipidea/udc.c
On Sunday 16 September 2012 01:48:19 Ming Lei wrote:
> +void usbnet_link_updated(struct usbnet *dev)
> +{
> + complete(&dev->link_update_completion);
> +}
> +EXPORT_SYMBOL_GPL(usbnet_link_updated);
Isn't that a bit too trivial to get the _GPL version?
> +#define usbnet_link_suspend(dev) do
>
> OTGSC_AVVIS cannot be set when vbus voltage goes valid or invalid on
> imx, so convert to use OTGSC_BSV.
>
Not just on imx, from the IC guys, it is chipidea's feature.
the AVVIS will not go to 1 when the vbus goes to high if ID = 1.
> OTGSC_BSVIE and OTGSC_BSVIS is not cleared when hw_
On Fri, Sep 14, 2012 at 01:25:25PM +0300, Alexander Shishkin wrote:
> Richard Zhao writes:
>
> > On Wed, Sep 12, 2012 at 01:47:54PM +0300, Alexander Shishkin wrote:
> >> Richard Zhao writes:
> >>
> >> > On Tue, Sep 11, 2012 at 10:23:55AM +0300, Alexander Shishkin wrote:
> >> >> Richard Zhao wr
Signed-off-by: Richard Zhao
Acked-by: Felipe Balbi
---
Changes from v2:
- assign host/gadget in mxs_phy_set_host/mxs_phy_set_peripheral
drivers/usb/otg/mxs-phy.c | 25 +
1 file changed, 25 insertions(+)
diff --git a/drivers/usb/otg/mxs-phy.c b/drivers/usb/otg/mxs-phy
On 09/12/2012 10:30 PM, Alexandre Pereira da Silva wrote:
> The STOTG04 is an replacement for ISP1301.
>
> Most of the registers on STOTG04 are the same as on ISP1301, but the
> register ISP1301_I2C_OTG_CONTROL_2 (address 0x10) doesn't exist on the
> ST part.
>
> This is a work around for this by
> > +void usbnet_link_updated(struct usbnet *dev)
> > +{
> > + complete(&dev->link_update_completion);
> > +}
> > +EXPORT_SYMBOL_GPL(usbnet_link_updated);
>
> Isn't that a bit too trivial to get the _GPL version?
Particularly if the usb infrastructure (that I presume this
is part of) might be r
On 09/14/2012 03:06 PM, ABRAHAM, KISHON VIJAY wrote:
[...]
>>> diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
>>> new file mode 100644
>>> index 000..c55446a
>>> --- /dev/null
>>> +++ b/drivers/phy/phy-core.c
>>> @@ -0,0 +1,437 @@
>>> +/*
>>> + * phy-core.c -- Generic Phy fram
Hi Alex,
At current chipidea driver, we have not implemented struct usb_otg,
so when udc calls otg_set_peripheral, it will fail.
(udc_start at drivers/usb/chipidea/udc.c).
In fact, if both host and device use chipidea driver, we do not
need to call otg_set_peripheral at all at current chipidea f
Richard Zhao writes:
> Signed-off-by: Richard Zhao
> Acked-by: Felipe Balbi
Felipe said,
> if you add a commit log you can add my:
>
> Acked-by: Felipe Balbi
but the commit message is still totally missing. I would like to ask you
to pay attention to the commit messages in the patches tha
The purpose for this patch is to have set_peripheral implementation,
but in current chipidea code, we don't need to know gadget at all,
as when id switch occurs, the core code know its role (device or host)
very well, and will call related stop/start function.
We have already many code bind struc
Chen Peter-B29397 writes:
> The purpose for this patch is to have set_peripheral implementation,
> but in current chipidea code, we don't need to know gadget at all,
> as when id switch occurs, the core code know its role (device or host)
> very well, and will call related stop/start function.
>
On Sun, Sep 16 2012, Sebastian Andrzej Siewior wrote:
> HS and SS descriptors are staticaly created. They are updated during the
> bind process with the endpoint address, string id or interface numbers.
> After that, the descriptor chain is linked to struct usb_function which
> is used by composit
From: Alan Cox
retval is 0, and carefully assigned - and tested as non zero.
This is not useful. While we are at it remove some other bogus initialisation
in the function
Signed-off-by: Alan Cox
---
drivers/usb/core/driver.c | 11 +++
1 file changed, 3 insertions(+), 8 deletions(-)
On Mon, Sep 17, 2012 at 10:02:27AM +0100, David Laight wrote:
> > > +void usbnet_link_updated(struct usbnet *dev)
> > > +{
> > > + complete(&dev->link_update_completion);
> > > +}
> > > +EXPORT_SYMBOL_GPL(usbnet_link_updated);
> >
> > Isn't that a bit too trivial to get the _GPL version?
>
> Part
On Mon, Sep 17, 2012 at 01:34:46PM +0800, Shawn Guo wrote:
> The inclusion of mach/hardware.h is not used by the driver at all.
> Remove it.
>
> Signed-off-by: Shawn Guo
> Cc: Greg Kroah-Hartman
> Cc: linux-usb@vger.kernel.org
Acked-by: Greg Kroah-Hartman
--
To unsubscribe from this list: send
Hello.
On 16-09-2012 23:58, Sebastian Andrzej Siewior wrote:
Signed-off-by: Sebastian Andrzej Siewior
---
drivers/usb/gadget/f_phonet.c |8 ++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/gadget/f_phonet.c b/drivers/usb/gadget/f_phonet.c
index 8ee926
Hello.
On 16-09-2012 23:58, Sebastian Andrzej Siewior wrote:
Whether highspeed configuration is valid or not is something that
composite decides and not the gadget. That gadget can only provide the
required descriptors for it.
Signed-off-by: Sebastian Andrzej Siewior
---
drivers/usb/gadge
On Monday 17 September 2012, Sascha Hauer wrote:
> On Mon, Sep 17, 2012 at 01:34:29PM +0800, Shawn Guo wrote:
> > The series enables multi-platform support for imx. Since the required
> > frameworks (clk, pwm) and spare_irq have already been adopted on imx,
> > the series is all about cleaning up
On Fri, Sep 14, 2012 at 03:23:23PM +0530, navin patidar wrote:
> ---
>
> This e-mail is for the sole use of the intended recipient(s) and may
> contain confidential and privi
Changes from v5:
Moved clk_get() to driver's probe function. Now reference clock frequency
selection value is stored in samsung_usbphy structure for later use. Used
IS_ENABLED() instead of #ifdef in samsung_usbphy_get_driver_data().
Changes from v4:
Moved header file contents to driver's source fi
This driver uses usb_phy interface to interact with s3c-hsotg. Supports
phy_init and phy_shutdown functions to enable/disable phy. Tested with
smdk6410 and smdkv310. More SoCs can be brought under later.
Signed-off-by: Praveen Paneri
Acked-by: Heiko Stuebner
---
.../devicetree/bindings/usb/sams
Adding the transceiver to hsotg driver. Keeping the platform data
for continuing the smooth operation for boards which still uses it
Signed-off-by: Praveen Paneri
---
drivers/usb/gadget/s3c-hsotg.c | 37 +++--
1 files changed, 27 insertions(+), 10 deletions(-)
This patch removes old phy code from platform side. 'setup-usb-phy.c'
will be used for providing transceiver platform data in next
patch. Not all of the platform data code is removed as there are others
making use of platform_data defined for hsotg. That can be removed once
all the SoCs start using
Adding platform device for samsung-usbphy driver. Enabling it for
s3c64xx based machines using s3c-hsotg.
Signed-off-by: Praveen Paneri
---
arch/arm/mach-s3c64xx/include/mach/map.h |2 +
arch/arm/mach-s3c64xx/mach-crag6410.c|7 ++
arch/arm/mach-s3c64xx/mach-smartq.c
Adding usbphy node for Exynos4210 along with the platform data.
Signed-off-by: Praveen Paneri
---
arch/arm/boot/dts/exynos4210.dtsi |5 +
arch/arm/mach-exynos/include/mach/map.h |1 +
arch/arm/mach-exynos/mach-exynos4-dt.c |8
arch/arm/mach-exynos/setup-usb-phy.c
On Mon, Sep 17, 2012 at 4:50 PM, Oliver Neukum wrote:
> On Sunday 16 September 2012 01:48:19 Ming Lei wrote:
>
>
>> +void usbnet_link_updated(struct usbnet *dev)
>> +{
>> + complete(&dev->link_update_completion);
>> +}
>> +EXPORT_SYMBOL_GPL(usbnet_link_updated);
>
> Isn't that a bit too trivia
On Mon, Sep 17, 2012 at 11:19:53AM +0530, ABRAHAM, KISHON VIJAY wrote:
> Hi,
>
> On Mon, Sep 17, 2012 at 6:50 AM, Chen Peter-B29397
> wrote:
> >
> >>
> >> The PHY framework provides a set of API's for the PHY drivers to
> >> create/remove a PHY and the PHY users to obtain a reference to the PHY
(trimmed out some of the older details)
On Sun, 2012-09-16 at 16:43 -0700, Greg KH wrote:
> On Sun, Sep 16, 2012 at 01:38:56PM -0400, Unknown wrote:
> >
> > To clarify, manually running the fxload command myself is not desirable,
> > I'd like the firmware to load when I plugin the device.
>
> I
On 09/13/2012 06:24 PM, Michal Nowak wrote:
> On 09/12/2012 07:24 PM, Michal Nowak wrote:
>> From https://bugzilla.kernel.org/show_bug.cgi?id=47421:
>>
>> I have problems with Samsung SCX-3205 scanner on Toshiba Satellite L855.
>> When is scanner connected to the notebook (via USB) I can see it via
On Fri, Sep 14, 2012 at 09:15:50PM -0700, Greg Kroah-Hartman wrote:
> From: Greg Kroah-Hartman
>
> As discussed at the kernel summit this year, CONFIG_EXPERIMENTAL means
> nothing, so let's get rid of it.
>
> Cc: Kees Cook
> Cc: Felipe Balbi
> Cc: David Herrmann
> Cc: Hauke Mehrtens
> Cc: Al
On Mon, Sep 17, 2012 at 09:40:15AM -0400, Unknown wrote:
> (trimmed out some of the older details)
>
> On Sun, 2012-09-16 at 16:43 -0700, Greg KH wrote:
> > On Sun, Sep 16, 2012 at 01:38:56PM -0400, Unknown wrote:
> > >
> > > To clarify, manually running the fxload command myself is not desirable
On 09/17/2012 01:37 PM, Sergei Shtylyov wrote:
--- a/drivers/usb/gadget/f_uac1.c
+++ b/drivers/usb/gadget/f_uac1.c
@@ -667,7 +667,6 @@ f_audio_bind(struct usb_configuration *c, struct
usb_function *f)
* both speeds
*/
if (gadget_is_dualspeed(c->cdev->gadget)) {
- c->highspeed = true;
f->hs_descri
On 09/17/2012 01:34 PM, Sergei Shtylyov wrote:
--- a/drivers/usb/gadget/f_phonet.c
+++ b/drivers/usb/gadget/f_phonet.c
[...]
@@ -540,14 +540,18 @@ int pn_bind(struct usb_configuration *c, struct
+err_req:
+ for (i = 0; i < phonet_rxq_size && fp->out_reqv[i]; i++)
+ usb_ep_free_request(fp->o
On 09/17/2012 12:31 PM, Michal Nazarewicz wrote:
For changes in composite.c, config.c, f_fs.c and f_mass_storage.c:
Acked-by: Michal Nazarewicz
Thank you.
Sebastian
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
Mo
* Andrzej Pietrasiewicz | 2012-09-17 09:10:00 [+0200]:
>--- a/drivers/usb/gadget/f_mass_storage.c
>+++ b/drivers/usb/gadget/f_mass_storage.c
>@@ -2694,65 +2848,69 @@ static struct fsg_common *fsg_common_init(struct
>fsg_common *common,
> fsg_intf_desc.iInterface = rc;
> }
>
>
* Andrzej Pietrasiewicz | 2012-09-17 09:09:59 [+0200]:
>Add USB functions gadget configured entirely through configfs.
>This is the base for adding USB functions to it. The next patch
>in the series demonstrates how to add functions.
Not looking at code. Can you give a few bash lines which setup
On 09/17/2012 09:10 AM, Andrzej Pietrasiewicz wrote:
--- a/drivers/usb/gadget/f_mass_storage.c
+++ b/drivers/usb/gadget/f_mass_storage.c
@@ -2994,26 +3121,41 @@ static struct usb_gadget_strings *fsg_strings_array[] =
{
- fsg->function.name= FSG_DRIVER_DESC;
- fsg->functi
On Mon, Sep 17, 2012 at 06:23:15PM +0200, Sebastian Andrzej Siewior wrote:
I'm sorry, this was the same thing from the other client which I planed to
cancel.
Sebastian
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
Mor
On Sat, Sep 15, 2012 at 01:56:32AM +0200, Michal Nazarewicz wrote:
> static int __ffs_data_got_descs(struct ffs_data *ffs,
> char *const _data, size_t len)
> {
> …
>
> ffs->raw_fs_descs_length = fs_len;
> ffs->raw_descs_length= fs_len + ret;
> ff
On Fri, Sep 14, 2012 at 10:08:56PM +, Robert Ryszard Paciorek wrote:
> Maybe this is a better solution, especially considering aversion to do this
> by the module parameters.
>
> Or maybe it is better to give support for I2C, SPI to ftdi_sio module and use
> sysfs to switch betwen uart/ic2c/s
On Thu, Sep 13, 2012 at 04:31:34PM -0400, Alan Stern wrote:
> On Thu, 13 Sep 2012, Don Zickus wrote:
>
> > Hi Alan,
> >
> > I adapted your patch to our 2.6.32 tree and the customer tested it without
> > success. The output panic is attached below. I will work on getting a
> > machine with the l
From: Søren Holm
Date: Thu, 13 Sep 2012 15:45:40 +0200
> Signed-off-by: Søren Holm
> Cc: sta...@vger.kernel.org
Networking patches should be submitted to net...@vger.kernel.org
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.ker
On Fri, Sep 14, 2012 at 04:30:15PM -0400, Alan Stern wrote:
> On Fri, 14 Sep 2012, Sarah Sharp wrote:
>
> > On Fri, Sep 14, 2012 at 09:41:12AM -0400, Alan Stern wrote:
> > > On Fri, 14 Sep 2012, Ajay Gupta wrote:
> > >
> > > > Aborting URBs from within HCD after device disconnect is appropriate.
On Fri, Sep 14, 2012 at 01:05:49PM -0400, Michael Spang wrote:
> The Intel XHCI specification says that after clearing the run/stop bit
> the controller may take up to 16ms to halt. We've seen a device take
> 14ms, which with the current timeout of 10ms causes the kernel to
> abort the suspend. Inc
>
> Networking patches should be submitted to net...@vger.kernel.org
Thanks. I will resend the patch then.
--
Søren Holm
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/m
Hello-
Looking to provide support under Linux for our device which implements
a USB virtual serial port using the Communications Device Class.
The device enumerates and communicates correctly under Windows XP,
and shows up under lsusb -v command as:
Bus 005 Device 005: ID 0c6a:0005
Device De
hid_post_reset checks the stored report descriptor against what is currently
returned by the device. An HID driver's report_fixup method may have
changed the
stored descriptor, however, creating false positives. These leave some
devices
nonfunctional after a resume, with a "reset_resume error 1"
"Steven J. Ackerman" writes:
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber0
> bAlternateSetting 0
> bNumEndpoints 1
> bInterfaceClass 2 Communications
> bInterfaceSub
On Mon, 17 Sep 2012, Don Zickus wrote:
> I have added some in-depth analysis from our customer.
>
>
> The problem is that the failing routine was called with a pointer to usbdev in
> memory that has already been freed and overwritten with the pool poison
> pattern.
> This causes an access viola
Bjrn-
Thank you for your response.
This change gets me closer. I can now successfully execute the modprobe
without error, but the device still doesn't show up in /dev/ttyUSB? .
sja@UBUNTU-10:~$ sudo modprobe usbserial vendor=0x0c6a product=0x0005
sja@UBUNTU-10:~$ lsusb
Bus 005 Device 004: ID 0c6
On Mon, Sep 17, 2012 at 05:07:26PM -0400, Steven J. Ackerman wrote:
> Bjrn-
>
> Thank you for your response.
>
> This change gets me closer. I can now successfully execute the modprobe
> without error, but the device still doesn't show up in /dev/ttyUSB? .
>
> sja@UBUNTU-10:~$ sudo modprobe usbs
Greg-
Thanks for your response.
Not sure if I need the cdc-acm functionality or not.
This is a color lcd display that supports a usb serial interface to
interact. I really
just need to be able to send and receive characters and NAK the pipe back
temporarily when my input buffer is full.
The d
A: No.
Q: Should I include quotations after my reply?
http://daringfireball.net/2007/07/on_top
On Mon, Sep 17, 2012 at 05:56:46PM -0400, Steven J. Ackerman wrote:
> Greg-
>
> Thanks for your response.
>
> Not sure if I need the cdc-acm functionality or not.
>
> This is a color lcd display tha
> That's fine, the cdc-acm interface will work for that.
>
> But is your device really a CDC ACM device? Or is it something else?
The device is a 3.5" color LCD display with touchscreen that can act as a
serial
terminal. It just needs to be able to send and receive characters over an
USB
serial
>
> > The purpose for this patch is to have set_peripheral implementation,
> > but in current chipidea code, we don't need to know gadget at all,
> > as when id switch occurs, the core code know its role (device or host)
> > very well, and will call related stop/start function.
> >
> > We have a
this following function is missing a important NULL check. if DMI is not
available or not enabled in the kernel config (which is common in my
case, since its a ARM Platform with XHCI support)
the xhci-hcd driver will crash due nullpointer access since
dmi_get_system_info returns always NULL if D
Hi Felipe,
Below are two patches to split some phy related things from
otg.
Changes for v2:
- Use git mv / git format -M to create patch for rename otg.c to phy.c
Peter Chen (2):
usb: phy: rename enum usb_otg_state to usb_state
usb: phy: rename otg.c to phy.c
drivers/usb/otg/Makefile
The operations in current otg.c are actually for USB PHY's.
Move it from drivers/usb/otg/ to drivers/usb/phy/
Signed-off-by: Peter Chen
---
drivers/usb/otg/Makefile |3 ---
drivers/usb/phy/Makefile |3 +++
drivers/usb/{otg/otg.c => phy/phy.c} |2 +-
3 files ch
These states are not all otg specific, and they stands for
general usb state.
Signed-off-by: Peter Chen
---
drivers/usb/otg/isp1301_omap.c |4 ++--
drivers/usb/otg/otg.c | 12 +++-
drivers/usb/otg/otg_fsm.c |6 +++---
include/linux/usb/msm_hsusb.h |2 +-
incl
On Mon, Sep 17, 2012 at 10:38 PM, Peter Chen wrote:
> The operations in current otg.c are actually for USB PHY's.
> Move it from drivers/usb/otg/ to drivers/usb/phy/
>
> Signed-off-by: Peter Chen
> ---
> drivers/usb/otg/Makefile |3 ---
> drivers/usb/phy/Makefile |
On Tue, Sep 18, 2012 at 12:31:19AM -0300, Fabio Estevam wrote:
> On Mon, Sep 17, 2012 at 10:38 PM, Peter Chen wrote:
> > The operations in current otg.c are actually for USB PHY's.
> > Move it from drivers/usb/otg/ to drivers/usb/phy/
> >
> > Signed-off-by: Peter Chen
> > ---
> > drivers/usb/otg
On Tue, Sep 18, 2012 at 12:34 AM, Peter Chen wrote:
> Why I need to do it? There are just some changes for Makefile, but really
> rename.
Yes, you are right. It looks fine then.
Regards,
Fabio Estevam
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a mess
stub_device_reset should set kernel thread pointers to NULL.
so that at the time of usbip_host removal stub_shoutdown_connection
doesn't try to kill kernel threads which are already killed.
Signed-off-by: navin patidar
---
drivers/staging/usbip/stub_dev.c |7 ---
1 file changed, 4 insert
In response to "usbip detach -p [port_number]" user
command,vhci_shoutdown_connection gets
executed which kills tcp_tx,tcp_rx kernel threads and then vhci_device_reset
resets
all usb_device struct variables except kernel thread pointers.
so, at the time of vhci_hcd removal vhci_shoutdown_connect
On Aug 22, 2012, at 5:17 AM, Shengzhou Liu wrote:
> when missing USB PHY clock, kernel booting up will hang during USB
> initialization. We should check USBGP[PHY_CLK_VALID] bit to avoid
> CPU hanging in this case.
>
> Signed-off-by: Shengzhou Liu
> ---
> v2 changes: use spin_event_timeout() in
On Monday 17 September 2012 17:07:26 Steven J. Ackerman wrote:
> Bjrn-
>
> Thank you for your response.
>
> This change gets me closer. I can now successfully execute the modprobe
> without error, but the device still doesn't show up in /dev/ttyUSB? .
It shouldn't. Your device follows the CDC AC
Hello,
this is v3 of a patches-series for controllers using the ezusb-functions.
euzsb: add support for Cypress FX2LP
ezusb: add functions for firmware download
ezusb: move ezusb.c from drivers/usb/serial to drivers/usb/misc
--
René Bürgel
SOHARD Embedded Systems GmbH
--
To unsubscribe from thi
76 matches
Mail list logo