[LEDE-DEV] [PATCH 1/2] apm821xx: detect sd-card media changes for the WNDR4700

Karl Palsson karlp at tweak.net.au
Wed Aug 31 03:13:52 PDT 2016


Christian Lamparter <chunkeey at googlemail.com> wrote:
> The insertion or removal of the sd-card cannot be detected by
> the hardware itself. This is by design. To workaround this, for
> the WNDR4700 unload/load the dwc2 module in case the the
> special SD CARD GPIO line is low/high.

You want to bounce _all_ usb devices when the SD card is
inserted/removed? That sounds brutally intrusive! I've posted
before on the openwrt-devel list about the hard times I've had
with sd card detection before, also using a platform with a USB
card reader attached. Unless you can figure out how to get the in
kernel block detection working, (I could see it running scsi
probes, and getting responses changing when I inserted/removed
the SD card via usbmon, but couldn't it to reliably and stably
generate useful events [1]) or you run a userspace daemon, much
like udisks2 on gnome desktops, or something like
https://github.com/arduino/linino/tree/master/trunk/package/linino/uSDaemon

Even just the following works for detecting cards
inserted/removed. (It's rather more intrusive cpu wise than it
looks unfortunately, but at least it isn't bouncing the entire
USB system!) while true; do
	block info > /dev/null
	sleep 1; done

[1] I was working on 3.18, it's quite possible that the in kernel
block detection now works properly. see
/sys/block/sdXX/events_poll_msecs and try and hook events to
that.

Sincerely,
Karl P

> 
> Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
> ---
>  target/linux/apm821xx/base-files/etc/rc.button/BTN_1 | 19 +++++++++++++++++++
>  target/linux/apm821xx/dts/wndr4700.dts               |  2 +-
>  2 files changed, 20 insertions(+), 1 deletion(-)
>  create mode 100755 target/linux/apm821xx/base-files/etc/rc.button/BTN_1
> 
> diff --git
> a/target/linux/apm821xx/base-files/etc/rc.button/BTN_1
> b/target/linux/apm821xx/base-files/etc/rc.button/BTN_1 new file
> mode 100755 index 0000000..9956412
> --- /dev/null
> +++ b/target/linux/apm821xx/base-files/etc/rc.button/BTN_1
> @@ -0,0 +1,19 @@
> +#!/bin/sh
> +
> +. /lib/functions.sh
> +. /lib/apm821xx.sh
> +
> +BOARD=$(apm821xx_board_name)
> +
> +if [ $BOARD == "wndr4700" ]; then
> +	case "$ACTION" in
> +	released)
> +		rmmod dwc2
> +	;;
> +	pressed)
> +		modprobe dwc2
> +	;;
> +	esac
> +fi
> +
> +return 0
> diff --git a/target/linux/apm821xx/dts/wndr4700.dts
> b/target/linux/apm821xx/dts/wndr4700.dts index 9a2ceb9..caaf05b
> 100644
> --- a/target/linux/apm821xx/dts/wndr4700.dts
> +++ b/target/linux/apm821xx/dts/wndr4700.dts
> @@ -432,7 +432,7 @@
>  
>  				sdcard {
>  					label = "SDCard inserted";
> -					gpios = <&GPIO0 7 0>;
> +					gpios = <&GPIO0 7 1>;
>  					linux,code = <0x101>; /* BTN_1 */
>  				};
>  			};
> -- 
> 2.9.3
> 
> 
> _______________________________________________
> Lede-dev mailing list
> Lede-dev at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/lede-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP Digital Signature
URL: <http://lists.infradead.org/pipermail/lede-dev/attachments/20160831/31351cad/attachment.sig>


More information about the Lede-dev mailing list