#
# Copyright (C) 2006 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/prereq.mk
include $(INCLUDE_DIR)/host.mk
PKG_NAME:=Build dependency
define Require/non-root
[ "$$(shell whoami)" != "root" ]
endef
$(eval $(call Require,non-root, \
Please do not compile as root. \
))
# Required for the toolchain
define Require/working-make
$(MAKE) -v | awk '($$$$1 == "GNU") && ($$$$2 = "Make") && ($$$$3 >= "3.81") { print "ok" }' | grep ok > /dev/null
endef
$(eval $(call Require,working-make, \
Please install GNU make v3.81 or later. (This version has bugs) \
))
define Require/case-sensitive-fs
rm -f $(TMP_DIR)/test.*
touch $(TMP_DIR)/test.fs
[ \! -f $(TMP_DIR)/test.FS ]
endef
$(eval $(call Require,case-sensitive-fs, \
OpenWrt can only be built on a case-sensitive filesystem \
))
define Require/working-gcc
echo 'int main(int argc, char **argv) { return 0; }' | \
gcc -x c -o $(TMP_DIR)/a.out -
endef
$(eval $(call Require,working-gcc, \
Please install the GNU C Compiler (gcc). \
))
define Require/working-g++
echo 'int main(int argc, char **argv) { return 0; }' | \
g++ -x c++ -o $(TMP_DIR)/a.out -lstdc++ - && \
$(TMP_DIR)/a.out
endef
$(eval $(call Require,working-g++, \
Please install the GNU C++ Compiler (g++). \
))
define Require/ncurses
echo 'int main(int argc, char **argv) { initscr(); return 0; }' | \
gcc -include ncurses.h -x c -o $(TMP_DIR)/a.out -lncurses -
endef
$(eval $(call Require,ncurses, \
Please install ncurses. (Missing libncurses.so or ncurses.h) \
))
define Require/zlib
echo 'int main(int argc, char **argv) { gzdopen(0, "rb"); return 0; }' | \
gcc -include zlib.h -x c -o $(TMP_DIR)/a.out -lz -
endef
$(eval $(call Require,zlib, \
Please install zlib. (Missing libz.so or zlib.h) \
))
$(eval $(call RequireCommand,gawk, \
Please install GNU awk. \
))
$(eval $(call RequireCommand,bison, \
Please install GNU bison. \
))
$(eval $(call RequireCommand,flex, \
Please install flex. \
))
$(eval $(call RequireCommand,unzip, \
Please install unzip. \
))
$(eval $(call RequireCommand,bzip2, \
Please install bzip2. \
))
$(eval $(call RequireCommand,patch, \
Please install patch. \
))
$(eval $(call RequireCommand,perl, \
Please install perl. \
))
$(eval $(call RequireCommand,wget, \
Please install wget. \
))
define Require/gnutar
$(TAR) --version 2>&1 | grep GNU > /dev/null
endef
$(eval $(call Require,gnutar, \
Please install GNU tar. \
))
$(eval $(call RequireCommand,svn, \
Please install the subversion client. \
))
$(eval $(call RequireCommand,autoconf, \
Please install GNU autoconf. \
))
define Require/gnu-find
$(FIND) $(TMP_DIR) -lname foo
endef
$(eval $(call Require,gnu-find, \
Please install GNU find \
))
c_bcm2708-Fix-clock-reference-counting.patch'>stats
|
blob: 3da94273afc70058c829632cdd2f91a68cc5a151 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
From cf1b789e1a6873d9680156fac9f675a0f1cdd17b Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Thu, 5 Feb 2015 16:01:44 +0000
Subject: [PATCH 107/114] i2c_bcm2708: Fix clock reference counting
---
drivers/i2c/busses/i2c-bcm2708.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
--- a/drivers/i2c/busses/i2c-bcm2708.c
+++ b/drivers/i2c/busses/i2c-bcm2708.c
@@ -337,11 +337,17 @@ static int bcm2708_i2c_probe(struct plat
return PTR_ERR(clk);
}
+ err = clk_prepare_enable(clk);
+ if (err) {
+ dev_err(&pdev->dev, "could not enable clk: %d\n", err);
+ goto out_clk_put;
+ }
+
bcm2708_i2c_init_pinmode(pdev->id);
bi = kzalloc(sizeof(*bi), GFP_KERNEL);
if (!bi)
- goto out_clk_put;
+ goto out_clk_disable;
platform_set_drvdata(pdev, bi);
@@ -412,6 +418,8 @@ out_iounmap:
iounmap(bi->base);
out_free_bi:
kfree(bi);
+out_clk_disable:
+ clk_disable_unprepare(clk);
out_clk_put:
clk_put(clk);
return err;
@@ -426,7 +434,7 @@ static int bcm2708_i2c_remove(struct pla
i2c_del_adapter(&bi->adapter);
free_irq(bi->irq, bi);
iounmap(bi->base);
- clk_disable(bi->clk);
+ clk_disable_unprepare(bi->clk);
clk_put(bi->clk);
kfree(bi);
|