Cyril HAENEL | 2 Apr 2013 10:50
Picon
Favicon

Freeze or reboot issue by receiving bytes on /dev/ttyBF0

Hello everybody, I hope I post on the right mailling list :

I have a BF537 board where I need to use /dev/ttyBF0 to connect a GPRS 
modem (/dev/ttyBF1 is already used for a GPS).
To have /dev/ttyBF0 available under uClinux, I deactivate the console 
this way in uboot with the "console" kernel option : console=null
But I experience freeze or reboot and I understood when it happens : 
it's when one or more byte arrives on the serial port and the 
/dev/ttyBF0 port is not opened by any process.

Anybody experienced this issue too ? Is there a workaround or do I need 
to analyse the uClinux-dist/linux-2.6.x/drivers/serial/bfin_5xx.c to try 
to unsertand the problem ?

Best regards,
Cyril HAENEL

--

-- 

Cyril Haenel
Registered Linux User #332632
Joe Perches | 9 Mar 2013 02:03

[PATCH net-next] drivers:net: Remove unnecessary OOM messages after netdev_alloc_skb

Emitting netdev_alloc_skb and netdev_alloc_skb_ip_align OOM
messages is unnecessary as there is already a dump_stack
after allocation failures.

Other trivial changes around these removals:

Convert a few comparisons of pointer to 0 to !pointer.
Change flow to remove unnecessary label.
Remove now unused variable.
Hoist assignment from if.

Signed-off-by: Joe Perches <joe@...>
---
 drivers/net/caif/caif_shmcore.c                    |  5 +----
 drivers/net/ethernet/adi/bfin_mac.c                |  6 ++----
 drivers/net/ethernet/amd/7990.c                    |  2 --
 drivers/net/ethernet/amd/a2065.c                   |  1 -
 drivers/net/ethernet/amd/am79c961a.c               |  1 -
 drivers/net/ethernet/amd/ariadne.c                 |  1 -
 drivers/net/ethernet/amd/atarilance.c              |  2 --
 drivers/net/ethernet/amd/au1000_eth.c              |  1 -
 drivers/net/ethernet/amd/declance.c                |  2 --
 drivers/net/ethernet/amd/pcnet32.c                 |  1 -
 drivers/net/ethernet/amd/sun3lance.c               |  3 ---
 drivers/net/ethernet/amd/sunlance.c                |  4 ----
 drivers/net/ethernet/atheros/atl1e/atl1e_main.c    |  6 ++----
 drivers/net/ethernet/atheros/atlx/atl2.c           |  3 ---
 drivers/net/ethernet/broadcom/bgmac.c              |  4 +---
 drivers/net/ethernet/broadcom/sb1250-mac.c         |  5 +----
 drivers/net/ethernet/cadence/at91_ether.c          |  1 -
(Continue reading)

Barry Song | 5 Feb 2013 12:29
Picon

Invitation to connect on LinkedIn

 
 
 
 
 
From Barry Song
 
--
China
 
 
 
 
 
 
 

I'd like to add you to my professional network on LinkedIn.

- Barry

 
 
 
 
 
 
 
You are receiving Invitation to Connect emails. Unsubscribe
© 2012, LinkedIn Corporation. 2029 Stierlin Ct. Mountain View, CA 94043, USA
 
_______________________________________________
Uclinux-dist-devel mailing list
Uclinux-dist-devel@...
https://blackfin.uclinux.org/mailman/listinfo/uclinux-dist-devel
Bob Liu | 29 Jan 2013 10:07
Picon

[PATCH 1/2] musb: framework: add bf60x support

This patch makes musb framework can support blackfin bf60x series soc platform.
Bf60x uses MHDRC RTL version 2.0 musb ip core which don't need a lot of
blackfin specific anomalies anymore.

Signed-off-by: Bob Liu <lliubbo@...>
---
 drivers/usb/musb/Kconfig     |    2 +-
 drivers/usb/musb/musb_core.c |    6 ++++--
 drivers/usb/musb/musb_core.h |    2 +-
 drivers/usb/musb/musb_dma.h  |    2 +-
 drivers/usb/musb/musb_io.h   |    2 +-
 drivers/usb/musb/musb_regs.h |    2 +-
 drivers/usb/musb/musbhsdma.c |    2 +-
 drivers/usb/musb/musbhsdma.h |    2 +-
 8 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/drivers/usb/musb/Kconfig b/drivers/usb/musb/Kconfig
index 23a0b7f..4d416bc 100644
--- a/drivers/usb/musb/Kconfig
+++ b/drivers/usb/musb/Kconfig
 <at>  <at>  -60,7 +60,7  <at>  <at>  config USB_MUSB_DSPS

 config USB_MUSB_BLACKFIN
 	tristate "Blackfin"
-	depends on (BF54x && !BF544) || (BF52x && ! BF522 && !BF523)
+	depends on (BF54x && !BF544) || (BF52x && ! BF522 && !BF523) || (BF60x)

 config USB_MUSB_UX500
 	tristate "U8500 and U5500"
diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
index f1c6c54..4dd18a9 100644
--- a/drivers/usb/musb/musb_core.c
+++ b/drivers/usb/musb/musb_core.c
 <at>  <at>  -226,7 +226,7  <at>  <at>  static struct usb_phy_io_ops musb_ulpi_access = {

 /*-------------------------------------------------------------------------*/

-#if !defined(CONFIG_USB_MUSB_TUSB6010) && !defined(CONFIG_USB_MUSB_BLACKFIN)
+#if !defined(CONFIG_USB_MUSB_TUSB6010) && (!defined(CONFIG_USB_MUSB_BLACKFIN) || CONFIG_BF60x)

 /*
  * Load an endpoint's FIFO
 <at>  <at>  -1039,7 +1039,9  <at>  <at>  static void musb_shutdown(struct platform_device *pdev)
 	|| defined(CONFIG_USB_MUSB_AM35X)		\
 	|| defined(CONFIG_USB_MUSB_AM35X_MODULE)	\
 	|| defined(CONFIG_USB_MUSB_DSPS)		\
-	|| defined(CONFIG_USB_MUSB_DSPS_MODULE)
+	|| defined(CONFIG_USB_MUSB_DSPS_MODULE)		\
+	|| defined(CONFIG_USB_MUSB_BLACKFIN)
+
 static ushort fifo_mode = 4;
 #elif defined(CONFIG_USB_MUSB_UX500)			\
 	|| defined(CONFIG_USB_MUSB_UX500_MODULE)
diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h
index 7fb4819..a46ec5d 100644
--- a/drivers/usb/musb/musb_core.h
+++ b/drivers/usb/musb/musb_core.h
 <at>  <at>  -449,7 +449,7  <at>  <at>  static inline struct musb *gadget_to_musb(struct usb_gadget *g)
 	return container_of(g, struct musb, g);
 }

-#ifdef CONFIG_BLACKFIN
+#if defined(CONFIG_BLACKFIN) && !defined(CONFIG_BF60x)
 static inline int musb_read_fifosize(struct musb *musb,
 		struct musb_hw_ep *hw_ep, u8 epnum)
 {
diff --git a/drivers/usb/musb/musb_dma.h b/drivers/usb/musb/musb_dma.h
index 1b6b827..6bb84df 100644
--- a/drivers/usb/musb/musb_dma.h
+++ b/drivers/usb/musb/musb_dma.h
 <at>  <at>  -84,7 +84,7  <at>  <at>  struct musb_hw_ep;
  *	Only allow DMA mode 1 to be used when the USB will actually generate the
  *	interrupts we expect.
  */
-#ifdef CONFIG_BLACKFIN
+#if defined(CONFIG_BLACKFIN) && !defined(CONFIG_BF60x)
 # undef USE_MODE1
 # if !ANOMALY_05000456
 #  define USE_MODE1
diff --git a/drivers/usb/musb/musb_io.h b/drivers/usb/musb/musb_io.h
index eebeed7..d28b789 100644
--- a/drivers/usb/musb/musb_io.h
+++ b/drivers/usb/musb/musb_io.h
 <at>  <at>  -37,7 +37,7  <at>  <at> 

 #include <linux/io.h>

-#ifndef CONFIG_BLACKFIN
+#if !defined(CONFIG_BLACKFIN) || defined(CONFIG_BF60x)

 /* NOTE:  these offsets are all in bytes */

diff --git a/drivers/usb/musb/musb_regs.h b/drivers/usb/musb/musb_regs.h
index 03f2655..bffa4a1 100644
--- a/drivers/usb/musb/musb_regs.h
+++ b/drivers/usb/musb/musb_regs.h
 <at>  <at>  -214,7 +214,7  <at>  <at> 
 #define MUSB_HUBADDR_MULTI_TT		0x80

 
-#ifndef CONFIG_BLACKFIN
+#if !defined(CONFIG_BLACKFIN) || defined(CONFIG_BF60x)

 /*
  * Common USB registers
diff --git a/drivers/usb/musb/musbhsdma.c b/drivers/usb/musb/musbhsdma.c
index 3d1fd52..d53715f 100644
--- a/drivers/usb/musb/musbhsdma.c
+++ b/drivers/usb/musb/musbhsdma.c
 <at>  <at>  -269,7 +269,7  <at>  <at>  static irqreturn_t dma_controller_irq(int irq, void *private_data)

 	int_hsdma = musb_readb(mbase, MUSB_HSDMA_INTR);

-#ifdef CONFIG_BLACKFIN
+#if defined(CONFIG_BLACKFIN) && !defined(CONFIG_BF60x)
 	/* Clear DMA interrupt flags */
 	musb_writeb(mbase, MUSB_HSDMA_INTR, int_hsdma);
 #endif
diff --git a/drivers/usb/musb/musbhsdma.h b/drivers/usb/musb/musbhsdma.h
index f7b13fd2..2a8e082 100644
--- a/drivers/usb/musb/musbhsdma.h
+++ b/drivers/usb/musb/musbhsdma.h
 <at>  <at>  -31,7 +31,7  <at>  <at> 
  *
  */

-#ifndef CONFIG_BLACKFIN
+#if !defined(CONFIG_BLACKFIN) || defined(CONFIG_BF60x)

 #define MUSB_HSDMA_BASE		0x200
 #define MUSB_HSDMA_INTR		(MUSB_HSDMA_BASE + 0)
--

-- 
1.7.9.5
Scott Jiang | 18 Jan 2013 22:09
Picon

[PATCH 1/2] [media] add maintainer for blackfin media drivers

Signed-off-by: Scott Jiang <scott.jiang.linux@...>
---
 MAINTAINERS |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index c5de529..e7ca531 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
 <at>  <at>  -1652,6 +1652,15  <at>  <at>  W:	http://blackfin.uclinux.org/
 S:	Supported
 F:	drivers/i2c/busses/i2c-bfin-twi.c

+BLACKFIN MEDIA DRIVER
+M:	Scott Jiang <scott.jiang.linux@...>
+L:	uclinux-dist-devel@...
+W:	http://blackfin.uclinux.org/
+S:	Supported
+F:	drivers/media/platform/blackfin/
+F:	drivers/media/i2c/adv7183*
+F:	drivers/media/i2c/vs6624*
+
 BLINKM RGB LED DRIVER
 M:	Jan-Simon Moeller <jansimon.moeller@...>
 S:	Maintained
--

-- 
1.7.0.4
Lars-Peter Clausen | 10 Jan 2013 15:42
Picon

[PATCH] bfin_mac: Restore hardware time-stamping dependency on BF518

Commit 70ac618c07 ("ptp: fixup Kconfig for two PHC drivers.") removed all
dependencies for the blackfin hardware time-stamping Kconfig entry. Hardware
time-stamping is only available on BF518 though. Since the Kconfig entry is
'default y', just updateing your kernel source and running `make defconfig` will
result in the the following build errors:

	drivers/net/ethernet/adi/bfin_mac.c:694: error: implicit declaration of function ‘bfin_read_EMAC_PTP_CTL’
	drivers/net/ethernet/adi/bfin_mac.c:702: error: implicit declaration of function ‘bfin_write_EMAC_PTP_FV3’
	drivers/net/ethernet/adi/bfin_mac.c:712: error: implicit declaration of function ‘bfin_write_EMAC_PTP_CTL’
	drivers/net/ethernet/adi/bfin_mac.c:717: error: implicit declaration of function ‘bfin_write_EMAC_PTP_FOFF’
	...

This patch adds back the dependency on BF518, and since it does not make sense
to expose this config option when the blackfin MAC driver is not enabled also
restore the dependency on BFIN_MAC.

Signed-off-by: Lars-Peter Clausen <lars <at> metafoo.de>
---
 drivers/net/ethernet/adi/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/ethernet/adi/Kconfig b/drivers/net/ethernet/adi/Kconfig
index e49c0ef..a948160 100644
--- a/drivers/net/ethernet/adi/Kconfig
+++ b/drivers/net/ethernet/adi/Kconfig
 <at>  <at>  -61,6 +61,7  <at>  <at>  config BFIN_RX_DESC_NUM

 config BFIN_MAC_USE_HWSTAMP
 	bool "Use IEEE 1588 hwstamp"
+	depends on BFIN_MAC && BF518
 	select PTP_1588_CLOCK
 	default y
 	---help---
--

-- 
1.8.0

_______________________________________________
Uclinux-dist-devel mailing list
Uclinux-dist-devel <at> blackfin.uclinux.org
https://blackfin.uclinux.org/mailman/listinfo/uclinux-dist-devel
Bob Liu | 17 Dec 2012 07:04
Picon

[GIT PULL] Blackfin changes for 3.8

Hi linus,

The following changes since commit 29594404d7fe73cd80eaa4ee8c43dcc53970c60e:

  Linux 3.7 (2012-12-10 19:30:57 -0800)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/lliubbo/blackfin.git for-linus

for you to fetch changes up to 86794b43569c9b8936dff2e8eed503393379af6e:

  blackfin: SEC: clean up SEC interrupt initialization (2012-12-14 11:20:22 +0800)

----------------------------------------------------------------
David Howells (1):
      UAPI: (Scripted) Disintegrate arch/blackfin/include/asm

Lars-Peter Clausen (5):
      Blackfin: Annotate strncpy_from_user src parameter with __user
      Blackfin: Add missing __user annotations to put_user
      Blackfin: Annotate clear_user 'to' parameter with __user
      Blackfin: Annotate strnlen_user and strlen_user 'src' parameter with __user
      Blackfin: twi: Add missing __iomem annotation

Sonic Zhang (3):
      blackfin: anomaly: add anomaly 16000030 for bf5xx
      blackfin: kgdb: call generic_exec_single() directly
      blackfin: SEC: clean up SEC interrupt initialization

Srinivas Kandagatla (1):
      Blackfin: dpmc: use module_platform_driver macro

Steven Rostedt (1):
      blackfin: Use Kbuild infrastructure for kvm_para.h

Tobias Klauser (2):
      Blackfin: remove unnecessary prototype for kobjsize()
      Blackfin: remove unused is_in_rom()

 arch/blackfin/include/asm/Kbuild                   |    6 +-
 arch/blackfin/include/asm/bfin_sport.h             |  128 +-----
 arch/blackfin/include/asm/bfin_twi.h               |    2 +-
 arch/blackfin/include/asm/fixed_code.h             |   30 +-
 arch/blackfin/include/asm/kvm_para.h               |    1 -
 arch/blackfin/include/asm/pgtable.h                |    2 -
 arch/blackfin/include/asm/ptrace.h                 |  161 +-------
 arch/blackfin/include/asm/uaccess.h                |   41 +-
 arch/blackfin/include/asm/unistd.h                 |  430 +------------------
 arch/blackfin/include/mach-common/irq.h            |    5 +-
 arch/blackfin/include/uapi/asm/Kbuild              |   16 +
 arch/blackfin/include/uapi/asm/bfin_sport.h        |  136 ++++++
 arch/blackfin/include/{ => uapi}/asm/byteorder.h   |    0
 arch/blackfin/include/{ => uapi}/asm/cachectl.h    |    0
 arch/blackfin/include/{ => uapi}/asm/fcntl.h       |    0
 arch/blackfin/include/uapi/asm/fixed_code.h        |   38 ++
 arch/blackfin/include/{ => uapi}/asm/ioctls.h      |    0
 arch/blackfin/include/{ => uapi}/asm/poll.h        |    0
 arch/blackfin/include/{ => uapi}/asm/posix_types.h |    0
 arch/blackfin/include/uapi/asm/ptrace.h            |  170 ++++++++
 arch/blackfin/include/{ => uapi}/asm/sigcontext.h  |    0
 arch/blackfin/include/{ => uapi}/asm/siginfo.h     |    0
 arch/blackfin/include/{ => uapi}/asm/signal.h      |    0
 arch/blackfin/include/{ => uapi}/asm/stat.h        |    0
 arch/blackfin/include/{ => uapi}/asm/swab.h        |    0
 arch/blackfin/include/uapi/asm/unistd.h            |  437 ++++++++++++++++++++
 arch/blackfin/kernel/kgdb.c                        |   13 +-
 arch/blackfin/mach-bf518/include/mach/anomaly.h    |    1 +
 arch/blackfin/mach-bf527/include/mach/anomaly.h    |    1 +
 arch/blackfin/mach-bf533/include/mach/anomaly.h    |    1 +
 arch/blackfin/mach-bf537/include/mach/anomaly.h    |    1 +
 arch/blackfin/mach-bf538/include/mach/anomaly.h    |    1 +
 arch/blackfin/mach-bf548/include/mach/anomaly.h    |    1 +
 arch/blackfin/mach-bf561/include/mach/anomaly.h    |    1 +
 arch/blackfin/mach-bf609/include/mach/irq.h        |    3 -
 arch/blackfin/mach-bf609/pm.c                      |    3 +-
 arch/blackfin/mach-common/dpmc.c                   |   19 +-
 arch/blackfin/mach-common/ints-priority.c          |  272 ++++++------
 38 files changed, 972 insertions(+), 948 deletions(-)
 delete mode 100644 arch/blackfin/include/asm/kvm_para.h
 create mode 100644 arch/blackfin/include/uapi/asm/bfin_sport.h
 rename arch/blackfin/include/{ => uapi}/asm/byteorder.h (100%)
 rename arch/blackfin/include/{ => uapi}/asm/cachectl.h (100%)
 rename arch/blackfin/include/{ => uapi}/asm/fcntl.h (100%)
 create mode 100644 arch/blackfin/include/uapi/asm/fixed_code.h
 rename arch/blackfin/include/{ => uapi}/asm/ioctls.h (100%)
 rename arch/blackfin/include/{ => uapi}/asm/poll.h (100%)
 rename arch/blackfin/include/{ => uapi}/asm/posix_types.h (100%)
 create mode 100644 arch/blackfin/include/uapi/asm/ptrace.h
 rename arch/blackfin/include/{ => uapi}/asm/sigcontext.h (100%)
 rename arch/blackfin/include/{ => uapi}/asm/siginfo.h (100%)
 rename arch/blackfin/include/{ => uapi}/asm/signal.h (100%)
 rename arch/blackfin/include/{ => uapi}/asm/stat.h (100%)
 rename arch/blackfin/include/{ => uapi}/asm/swab.h (100%)
 create mode 100644 arch/blackfin/include/uapi/asm/unistd.h
Bill Pemberton | 7 Dec 2012 15:26
Favicon

[PATCH 01/25] ASoC: blackfin: remove __dev* attributes

CONFIG_HOTPLUG is going away as an option.  As result the __dev*
markings will be going away.

Remove use of __devinit, __devexit_p, __devinitdata, __devinitconst,
and __devexit.

Signed-off-by: Bill Pemberton <wfp5p@...>
Cc: uclinux-dist-devel@...
---
 sound/soc/blackfin/bf5xx-ac97-pcm.c     | 6 +++---
 sound/soc/blackfin/bf5xx-ac97.c         | 6 +++---
 sound/soc/blackfin/bf5xx-ad1836.c       | 6 +++---
 sound/soc/blackfin/bf5xx-i2s-pcm.c      | 6 +++---
 sound/soc/blackfin/bf5xx-i2s.c          | 6 +++---
 sound/soc/blackfin/bf5xx-tdm-pcm.c      | 6 +++---
 sound/soc/blackfin/bf5xx-tdm.c          | 6 +++---
 sound/soc/blackfin/bf6xx-i2s.c          | 6 +++---
 sound/soc/blackfin/bfin-eval-adau1373.c | 4 ++--
 sound/soc/blackfin/bfin-eval-adau1701.c | 4 ++--
 sound/soc/blackfin/bfin-eval-adav80x.c  | 4 ++--
 11 files changed, 30 insertions(+), 30 deletions(-)

diff --git a/sound/soc/blackfin/bf5xx-ac97-pcm.c b/sound/soc/blackfin/bf5xx-ac97-pcm.c
index d7dc9bd..7e2f360 100644
--- a/sound/soc/blackfin/bf5xx-ac97-pcm.c
+++ b/sound/soc/blackfin/bf5xx-ac97-pcm.c
 <at>  <at>  -453,12 +453,12  <at>  <at>  static struct snd_soc_platform_driver bf5xx_ac97_soc_platform = {
 	.pcm_free	= bf5xx_pcm_free_dma_buffers,
 };

-static int __devinit bf5xx_soc_platform_probe(struct platform_device *pdev)
+static int bf5xx_soc_platform_probe(struct platform_device *pdev)
 {
 	return snd_soc_register_platform(&pdev->dev, &bf5xx_ac97_soc_platform);
 }

-static int __devexit bf5xx_soc_platform_remove(struct platform_device *pdev)
+static int bf5xx_soc_platform_remove(struct platform_device *pdev)
 {
 	snd_soc_unregister_platform(&pdev->dev);
 	return 0;
 <at>  <at>  -471,7 +471,7  <at>  <at>  static struct platform_driver bf5xx_pcm_driver = {
 	},

 	.probe = bf5xx_soc_platform_probe,
-	.remove = __devexit_p(bf5xx_soc_platform_remove),
+	.remove = bf5xx_soc_platform_remove,
 };

 module_platform_driver(bf5xx_pcm_driver);
diff --git a/sound/soc/blackfin/bf5xx-ac97.c b/sound/soc/blackfin/bf5xx-ac97.c
index f4e9dc4..8e41bcb 100644
--- a/sound/soc/blackfin/bf5xx-ac97.c
+++ b/sound/soc/blackfin/bf5xx-ac97.c
 <at>  <at>  -282,7 +282,7  <at>  <at>  static struct snd_soc_dai_driver bfin_ac97_dai = {
 		.formats = SNDRV_PCM_FMTBIT_S16_LE, },
 };

-static int __devinit asoc_bfin_ac97_probe(struct platform_device *pdev)
+static int asoc_bfin_ac97_probe(struct platform_device *pdev)
 {
 	struct sport_device *sport_handle;
 	int ret;
 <at>  <at>  -352,7 +352,7  <at>  <at>  gpio_err:
 	return ret;
 }

-static int __devexit asoc_bfin_ac97_remove(struct platform_device *pdev)
+static int asoc_bfin_ac97_remove(struct platform_device *pdev)
 {
 	struct sport_device *sport_handle = platform_get_drvdata(pdev);

 <at>  <at>  -372,7 +372,7  <at>  <at>  static struct platform_driver asoc_bfin_ac97_driver = {
 	},

 	.probe = asoc_bfin_ac97_probe,
-	.remove = __devexit_p(asoc_bfin_ac97_remove),
+	.remove = asoc_bfin_ac97_remove,
 };

 module_platform_driver(asoc_bfin_ac97_driver);
diff --git a/sound/soc/blackfin/bf5xx-ad1836.c b/sound/soc/blackfin/bf5xx-ad1836.c
index 16b9c9e..d23f4b0 100644
--- a/sound/soc/blackfin/bf5xx-ad1836.c
+++ b/sound/soc/blackfin/bf5xx-ad1836.c
 <at>  <at>  -75,7 +75,7  <at>  <at>  static struct snd_soc_card bf5xx_ad1836 = {
 	.num_links = 1,
 };

-static __devinit int bf5xx_ad1836_driver_probe(struct platform_device *pdev)
+static int bf5xx_ad1836_driver_probe(struct platform_device *pdev)
 {
 	struct snd_soc_card *card = &bf5xx_ad1836;
 	const char **link_name;
 <at>  <at>  -98,7 +98,7  <at>  <at>  static __devinit int bf5xx_ad1836_driver_probe(struct platform_device *pdev)
 	return ret;
 }

-static int __devexit bf5xx_ad1836_driver_remove(struct platform_device *pdev)
+static int bf5xx_ad1836_driver_remove(struct platform_device *pdev)
 {
 	struct snd_soc_card *card = platform_get_drvdata(pdev);

 <at>  <at>  -113,7 +113,7  <at>  <at>  static struct platform_driver bf5xx_ad1836_driver = {
 		.pm = &snd_soc_pm_ops,
 	},
 	.probe = bf5xx_ad1836_driver_probe,
-	.remove = __devexit_p(bf5xx_ad1836_driver_remove),
+	.remove = bf5xx_ad1836_driver_remove,
 };
 module_platform_driver(bf5xx_ad1836_driver);

diff --git a/sound/soc/blackfin/bf5xx-i2s-pcm.c b/sound/soc/blackfin/bf5xx-i2s-pcm.c
index 63205d7..262c1de 100644
--- a/sound/soc/blackfin/bf5xx-i2s-pcm.c
+++ b/sound/soc/blackfin/bf5xx-i2s-pcm.c
 <at>  <at>  -292,12 +292,12  <at>  <at>  static struct snd_soc_platform_driver bf5xx_i2s_soc_platform = {
 	.pcm_free	= bf5xx_pcm_free_dma_buffers,
 };

-static int __devinit bfin_i2s_soc_platform_probe(struct platform_device *pdev)
+static int bfin_i2s_soc_platform_probe(struct platform_device *pdev)
 {
 	return snd_soc_register_platform(&pdev->dev, &bf5xx_i2s_soc_platform);
 }

-static int __devexit bfin_i2s_soc_platform_remove(struct platform_device *pdev)
+static int bfin_i2s_soc_platform_remove(struct platform_device *pdev)
 {
 	snd_soc_unregister_platform(&pdev->dev);
 	return 0;
 <at>  <at>  -310,7 +310,7  <at>  <at>  static struct platform_driver bfin_i2s_pcm_driver = {
 	},

 	.probe = bfin_i2s_soc_platform_probe,
-	.remove = __devexit_p(bfin_i2s_soc_platform_remove),
+	.remove = bfin_i2s_soc_platform_remove,
 };

 module_platform_driver(bfin_i2s_pcm_driver);
diff --git a/sound/soc/blackfin/bf5xx-i2s.c b/sound/soc/blackfin/bf5xx-i2s.c
index 4dccf03..168d88b 100644
--- a/sound/soc/blackfin/bf5xx-i2s.c
+++ b/sound/soc/blackfin/bf5xx-i2s.c
 <at>  <at>  -245,7 +245,7  <at>  <at>  static struct snd_soc_dai_driver bf5xx_i2s_dai = {
 	.ops = &bf5xx_i2s_dai_ops,
 };

-static int __devinit bf5xx_i2s_probe(struct platform_device *pdev)
+static int bf5xx_i2s_probe(struct platform_device *pdev)
 {
 	struct sport_device *sport_handle;
 	int ret;
 <at>  <at>  -267,7 +267,7  <at>  <at>  static int __devinit bf5xx_i2s_probe(struct platform_device *pdev)
 	return 0;
 }

-static int __devexit bf5xx_i2s_remove(struct platform_device *pdev)
+static int bf5xx_i2s_remove(struct platform_device *pdev)
 {
 	struct sport_device *sport_handle = platform_get_drvdata(pdev);

 <at>  <at>  -281,7 +281,7  <at>  <at>  static int __devexit bf5xx_i2s_remove(struct platform_device *pdev)

 static struct platform_driver bfin_i2s_driver = {
 	.probe  = bf5xx_i2s_probe,
-	.remove = __devexit_p(bf5xx_i2s_remove),
+	.remove = bf5xx_i2s_remove,
 	.driver = {
 		.name = "bfin-i2s",
 		.owner = THIS_MODULE,
diff --git a/sound/soc/blackfin/bf5xx-tdm-pcm.c b/sound/soc/blackfin/bf5xx-tdm-pcm.c
index 254490c..0e6b888 100644
--- a/sound/soc/blackfin/bf5xx-tdm-pcm.c
+++ b/sound/soc/blackfin/bf5xx-tdm-pcm.c
 <at>  <at>  -317,12 +317,12  <at>  <at>  static struct snd_soc_platform_driver bf5xx_tdm_soc_platform = {
 	.pcm_free       = bf5xx_pcm_free_dma_buffers,
 };

-static int __devinit bf5xx_soc_platform_probe(struct platform_device *pdev)
+static int bf5xx_soc_platform_probe(struct platform_device *pdev)
 {
 	return snd_soc_register_platform(&pdev->dev, &bf5xx_tdm_soc_platform);
 }

-static int __devexit bf5xx_soc_platform_remove(struct platform_device *pdev)
+static int bf5xx_soc_platform_remove(struct platform_device *pdev)
 {
 	snd_soc_unregister_platform(&pdev->dev);
 	return 0;
 <at>  <at>  -335,7 +335,7  <at>  <at>  static struct platform_driver bfin_tdm_driver = {
 	},

 	.probe = bf5xx_soc_platform_probe,
-	.remove = __devexit_p(bf5xx_soc_platform_remove),
+	.remove = bf5xx_soc_platform_remove,
 };

 module_platform_driver(bfin_tdm_driver);
diff --git a/sound/soc/blackfin/bf5xx-tdm.c b/sound/soc/blackfin/bf5xx-tdm.c
index 594f882..c1e516e 100644
--- a/sound/soc/blackfin/bf5xx-tdm.c
+++ b/sound/soc/blackfin/bf5xx-tdm.c
 <at>  <at>  -249,7 +249,7  <at>  <at>  static struct snd_soc_dai_driver bf5xx_tdm_dai = {
 	.ops = &bf5xx_tdm_dai_ops,
 };

-static int __devinit bfin_tdm_probe(struct platform_device *pdev)
+static int bfin_tdm_probe(struct platform_device *pdev)
 {
 	struct sport_device *sport_handle;
 	int ret;
 <at>  <at>  -295,7 +295,7  <at>  <at>  sport_config_err:
 	return ret;
 }

-static int __devexit bfin_tdm_remove(struct platform_device *pdev)
+static int bfin_tdm_remove(struct platform_device *pdev)
 {
 	struct sport_device *sport_handle = platform_get_drvdata(pdev);

 <at>  <at>  -307,7 +307,7  <at>  <at>  static int __devexit bfin_tdm_remove(struct platform_device *pdev)

 static struct platform_driver bfin_tdm_driver = {
 	.probe  = bfin_tdm_probe,
-	.remove = __devexit_p(bfin_tdm_remove),
+	.remove = bfin_tdm_remove,
 	.driver = {
 		.name   = "bfin-tdm",
 		.owner  = THIS_MODULE,
diff --git a/sound/soc/blackfin/bf6xx-i2s.c b/sound/soc/blackfin/bf6xx-i2s.c
index c3c2466..8f33797 100644
--- a/sound/soc/blackfin/bf6xx-i2s.c
+++ b/sound/soc/blackfin/bf6xx-i2s.c
 <at>  <at>  -186,7 +186,7  <at>  <at>  static struct snd_soc_dai_driver bfin_i2s_dai = {
 	.ops = &bfin_i2s_dai_ops,
 };

-static int __devinit bfin_i2s_probe(struct platform_device *pdev)
+static int bfin_i2s_probe(struct platform_device *pdev)
 {
 	struct sport_device *sport;
 	struct device *dev = &pdev->dev;
 <at>  <at>  -208,7 +208,7  <at>  <at>  static int __devinit bfin_i2s_probe(struct platform_device *pdev)
 	return 0;
 }

-static int __devexit bfin_i2s_remove(struct platform_device *pdev)
+static int bfin_i2s_remove(struct platform_device *pdev)
 {
 	struct sport_device *sport = platform_get_drvdata(pdev);

 <at>  <at>  -220,7 +220,7  <at>  <at>  static int __devexit bfin_i2s_remove(struct platform_device *pdev)

 static struct platform_driver bfin_i2s_driver = {
 	.probe  = bfin_i2s_probe,
-	.remove = __devexit_p(bfin_i2s_remove),
+	.remove = bfin_i2s_remove,
 	.driver = {
 		.name = "bfin-i2s",
 		.owner = THIS_MODULE,
diff --git a/sound/soc/blackfin/bfin-eval-adau1373.c b/sound/soc/blackfin/bfin-eval-adau1373.c
index f3adbdb..4ef9683 100644
--- a/sound/soc/blackfin/bfin-eval-adau1373.c
+++ b/sound/soc/blackfin/bfin-eval-adau1373.c
 <at>  <at>  -157,7 +157,7  <at>  <at>  static int bfin_eval_adau1373_probe(struct platform_device *pdev)
 	return snd_soc_register_card(&bfin_eval_adau1373);
 }

-static int __devexit bfin_eval_adau1373_remove(struct platform_device *pdev)
+static int bfin_eval_adau1373_remove(struct platform_device *pdev)
 {
 	struct snd_soc_card *card = platform_get_drvdata(pdev);

 <at>  <at>  -173,7 +173,7  <at>  <at>  static struct platform_driver bfin_eval_adau1373_driver = {
 		.pm = &snd_soc_pm_ops,
 	},
 	.probe = bfin_eval_adau1373_probe,
-	.remove = __devexit_p(bfin_eval_adau1373_remove),
+	.remove = bfin_eval_adau1373_remove,
 };

 module_platform_driver(bfin_eval_adau1373_driver);
diff --git a/sound/soc/blackfin/bfin-eval-adau1701.c b/sound/soc/blackfin/bfin-eval-adau1701.c
index b0531fc..3b55081 100644
--- a/sound/soc/blackfin/bfin-eval-adau1701.c
+++ b/sound/soc/blackfin/bfin-eval-adau1701.c
 <at>  <at>  -97,7 +97,7  <at>  <at>  static int bfin_eval_adau1701_probe(struct platform_device *pdev)
 	return snd_soc_register_card(&bfin_eval_adau1701);
 }

-static int __devexit bfin_eval_adau1701_remove(struct platform_device *pdev)
+static int bfin_eval_adau1701_remove(struct platform_device *pdev)
 {
 	struct snd_soc_card *card = platform_get_drvdata(pdev);

 <at>  <at>  -113,7 +113,7  <at>  <at>  static struct platform_driver bfin_eval_adau1701_driver = {
 		.pm = &snd_soc_pm_ops,
 	},
 	.probe = bfin_eval_adau1701_probe,
-	.remove = __devexit_p(bfin_eval_adau1701_remove),
+	.remove = bfin_eval_adau1701_remove,
 };

 module_platform_driver(bfin_eval_adau1701_driver);
diff --git a/sound/soc/blackfin/bfin-eval-adav80x.c b/sound/soc/blackfin/bfin-eval-adav80x.c
index 84b0998..3b1b61a 100644
--- a/sound/soc/blackfin/bfin-eval-adav80x.c
+++ b/sound/soc/blackfin/bfin-eval-adav80x.c
 <at>  <at>  -122,7 +122,7  <at>  <at>  static int bfin_eval_adav80x_probe(struct platform_device *pdev)
 	return snd_soc_register_card(&bfin_eval_adav80x);
 }

-static int __devexit bfin_eval_adav80x_remove(struct platform_device *pdev)
+static int bfin_eval_adav80x_remove(struct platform_device *pdev)
 {
 	struct snd_soc_card *card = platform_get_drvdata(pdev);

 <at>  <at>  -145,7 +145,7  <at>  <at>  static struct platform_driver bfin_eval_adav80x_driver = {
 		.pm = &snd_soc_pm_ops,
 	},
 	.probe = bfin_eval_adav80x_probe,
-	.remove = __devexit_p(bfin_eval_adav80x_remove),
+	.remove = bfin_eval_adav80x_remove,
 	.id_table = bfin_eval_adav80x_ids,
 };

--

-- 
1.8.0.1
Akinobu Mita | 25 Nov 2012 08:48
Picon

[PATCH] blackfin: use bitmap library functions

The bitmap library provides more efficient functions than accessing
individual bits with bitops.

This uses bitmap_find_next_zero_area() to find a continuing zero area,
and uses bitmap_set()/bitmap_clear() to set/clear specified bit area.

Signed-off-by: Akinobu Mita <akinobu.mita@...>
Cc: Mike Frysinger <vapier@...>
Cc: uclinux-dist-devel@...
---
 arch/blackfin/kernel/dma-mapping.c | 23 +++++++----------------
 1 file changed, 7 insertions(+), 16 deletions(-)

diff --git a/arch/blackfin/kernel/dma-mapping.c b/arch/blackfin/kernel/dma-mapping.c
index e7be653..df437e5 100644
--- a/arch/blackfin/kernel/dma-mapping.c
+++ b/arch/blackfin/kernel/dma-mapping.c
 <at>  <at>  -13,6 +13,7  <at>  <at> 
 #include <linux/dma-mapping.h>
 #include <linux/scatterlist.h>
 #include <linux/export.h>
+#include <linux/bitmap.h>

 static spinlock_t dma_page_lock;
 static unsigned long *dma_page;
 <at>  <at>  -46,24 +47,17  <at>  <at>  static inline unsigned int get_pages(size_t size)
 static unsigned long __alloc_dma_pages(unsigned int pages)
 {
 	unsigned long ret = 0, flags;
-	int i, count = 0;
+	unsigned long start;

 	if (dma_initialized == 0)
 		dma_alloc_init(_ramend - DMA_UNCACHED_REGION, _ramend);

 	spin_lock_irqsave(&dma_page_lock, flags);

-	for (i = 0; i < dma_pages;) {
-		if (test_bit(i++, dma_page) == 0) {
-			if (++count == pages) {
-				while (count--)
-					__set_bit(--i, dma_page);
-
-				ret = dma_base + (i << PAGE_SHIFT);
-				break;
-			}
-		} else
-			count = 0;
+	start = bitmap_find_next_zero_area(dma_page, dma_pages, 0, pages, 0);
+	if (start < dma_pages) {
+		ret = dma_base + (start << PAGE_SHIFT);
+		bitmap_set(dma_page, start, pages);
 	}
 	spin_unlock_irqrestore(&dma_page_lock, flags);
 	return ret;
 <at>  <at>  -73,7 +67,6  <at>  <at>  static void __free_dma_pages(unsigned long addr, unsigned int pages)
 {
 	unsigned long page = (addr - dma_base) >> PAGE_SHIFT;
 	unsigned long flags;
-	int i;

 	if ((page + pages) > dma_pages) {
 		printk(KERN_ERR "%s: freeing outside range.\n", __func__);
 <at>  <at>  -81,9 +74,7  <at>  <at>  static void __free_dma_pages(unsigned long addr, unsigned int pages)
 	}

 	spin_lock_irqsave(&dma_page_lock, flags);
-	for (i = page; i < page + pages; i++)
-		__clear_bit(i, dma_page);
-
+	bitmap_clear(dma_page, page, pages);
 	spin_unlock_irqrestore(&dma_page_lock, flags);
 }

--

-- 
1.7.11.7
Bill Pemberton | 19 Nov 2012 19:23
Favicon

[PATCH 268/493] Blackfin: remove use of __devinit

CONFIG_HOTPLUG is going away as an option so __devinit is no longer
needed.

Signed-off-by: Bill Pemberton <wfp5p@...>
Cc: uclinux-dist-devel@... 
---
 arch/blackfin/mach-common/dpmc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/blackfin/mach-common/dpmc.c b/arch/blackfin/mach-common/dpmc.c
index 32ad8b9..ada8b38 100644
--- a/arch/blackfin/mach-common/dpmc.c
+++ b/arch/blackfin/mach-common/dpmc.c
 <at>  <at>  -129,7 +129,7  <at>  <at>  static struct notifier_block vreg_cpufreq_notifier_block = {
  *	bfin_dpmc_probe -
  *
  */
-static int __devinit bfin_dpmc_probe(struct platform_device *pdev)
+static int bfin_dpmc_probe(struct platform_device *pdev)
 {
 	if (pdev->dev.platform_data)
 		pdata = pdev->dev.platform_data;
--

-- 
1.8.0
Bill Pemberton | 19 Nov 2012 19:27
Favicon

[PATCH 489/493] Blackfin: remove use of __devexit

CONFIG_HOTPLUG is going away as an option so __devexit is no
longer needed.

Signed-off-by: Bill Pemberton <wfp5p@...>
Cc: uclinux-dist-devel@... 
---
 arch/blackfin/mach-common/dpmc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/blackfin/mach-common/dpmc.c b/arch/blackfin/mach-common/dpmc.c
index ada8b38..724a8c5 100644
--- a/arch/blackfin/mach-common/dpmc.c
+++ b/arch/blackfin/mach-common/dpmc.c
 <at>  <at>  -143,7 +143,7  <at>  <at>  static int bfin_dpmc_probe(struct platform_device *pdev)
 /**
  *	bfin_dpmc_remove -
  */
-static int __devexit bfin_dpmc_remove(struct platform_device *pdev)
+static int bfin_dpmc_remove(struct platform_device *pdev)
 {
 	pdata = NULL;
 	return cpufreq_unregister_notifier(&vreg_cpufreq_notifier_block,
--

-- 
1.8.0

Gmane