From 343c185b7d7383b1f5b5144e837045af28afc42b Mon Sep 17 00:00:00 2001 From: kaloz Date: Tue, 23 Jun 2009 21:04:37 +0000 Subject: use broken-out patches for the coldfire to make it easier to follow differences against the bsp git-svn-id: svn://svn.openwrt.org/openwrt/trunk@16547 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches/056-m547x_8x_rtc_rv5c387a.patch | 127 +++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 target/linux/coldfire/patches/056-m547x_8x_rtc_rv5c387a.patch (limited to 'target/linux/coldfire/patches/056-m547x_8x_rtc_rv5c387a.patch') diff --git a/target/linux/coldfire/patches/056-m547x_8x_rtc_rv5c387a.patch b/target/linux/coldfire/patches/056-m547x_8x_rtc_rv5c387a.patch new file mode 100644 index 000000000..4d5db0ae4 --- /dev/null +++ b/target/linux/coldfire/patches/056-m547x_8x_rtc_rv5c387a.patch @@ -0,0 +1,127 @@ +From 1353cd9749377dbcc8290dab5c098deec66fb956 Mon Sep 17 00:00:00 2001 +From: Kurt Mahan +Date: Thu, 15 May 2008 13:24:58 -0600 +Subject: [PATCH] Add RTC RV5C387A driver for MCF547x and MCF548x. + +LTIBName: m547x-8x-rtc-rv5c387a +Signed-off-by: Kurt Mahan +Signed-off-by: Shrek Wu +--- + drivers/rtc/rtc-rs5c372.c | 67 +++++++++++++++++++++++++++++++++++++++++--- + 1 files changed, 62 insertions(+), 5 deletions(-) + +--- a/drivers/rtc/rtc-rs5c372.c ++++ b/drivers/rtc/rtc-rs5c372.c +@@ -15,7 +15,6 @@ + + #define DRV_VERSION "0.5" + +- + /* + * Ricoh has a family of I2C based RTCs, which differ only slightly from + * each other. Differences center on pinout (e.g. how many interrupts, +@@ -60,6 +59,15 @@ + /* to read (style 1) or write registers starting at R */ + #define RS5C_ADDR(R) (((R) << 4) | 0) + ++#ifdef CONFIG_M547X_8X ++#define DRV_NAME "rv5c387a" ++/* i2c configuration */ ++#define RV5C387_I2C_ADDR 0x32 ++static unsigned short normal_i2c[] = { ++ RV5C387_I2C_ADDR, I2C_CLIENT_END ++}; ++I2C_CLIENT_INSMOD; /* defines addr_data */ ++#endif + + enum rtc_type { + rtc_undef = 0, +@@ -506,14 +514,14 @@ static int rs5c372_probe(struct i2c_clie + err = -ENODEV; + goto exit; + } +- +- if (!(rs5c372 = kzalloc(sizeof(struct rs5c372), GFP_KERNEL))) { ++ rs5c372 = kzalloc(sizeof(struct rs5c372), GFP_KERNEL); ++ if (!rs5c372) { + err = -ENOMEM; + goto exit; + } + + /* we read registers 0x0f then 0x00-0x0f; skip the first one */ +- rs5c372->regs=&rs5c372->buf[1]; ++ rs5c372->regs = &rs5c372->buf[1]; + + rs5c372->client = client; + i2c_set_clientdata(client, rs5c372); +@@ -605,7 +613,7 @@ static int rs5c372_probe(struct i2c_clie + case rtc_rv5c386: s = "rv5c386"; break; + case rtc_rv5c387a: s = "rv5c387a"; break; + default: s = "chip"; break; +- }; s;}), ++ }; s; }), + rs5c372->time24 ? "24hr" : "am/pm" + ); + +@@ -645,12 +653,61 @@ static int rs5c372_remove(struct i2c_cli + return 0; + } + ++#ifdef CONFIG_M547X_8X ++static int rv5c387_probe(struct i2c_adapter *adapter, int addr, int kind) ++{ ++ int rc = 0; ++ struct i2c_client *new_client = NULL; ++ ++ if (!i2c_check_functionality(adapter, I2C_FUNC_I2C)) { ++ rc = -ENODEV; ++ printk(KERN_DEBUG "%s i2c_check_functionality\n", __FUNCTION__); ++ goto failout; ++ } ++ ++ new_client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); ++ if (new_client == NULL) { ++ rc = -ENOMEM; ++ printk(KERN_DEBUG "%s kzalloc new_client\n", __FUNCTION__); ++ goto failout; ++ } ++ ++ new_client->addr = addr; ++ new_client->adapter = adapter; ++ new_client->driver = &rs5c372_driver; ++ new_client->flags = 0; ++ strcpy(new_client->name, DRV_NAME); ++ ++ rc = i2c_attach_client(new_client); ++ if (rc < 0) { ++ printk(KERN_DEBUG "%s i2c_attach_client\n", __FUNCTION__); ++ goto failout; ++ } ++ ++ rs5c372_probe(new_client); ++ return 0; ++failout: ++ kfree(new_client); ++ return rc; ++} ++ ++static int ++rv5c387_attach_adapter(struct i2c_adapter *adapter) ++{ ++ return i2c_probe(adapter, &addr_data, rv5c387_probe); ++} ++#endif ++ + static struct i2c_driver rs5c372_driver = { + .driver = { + .name = "rtc-rs5c372", + }, ++#ifdef CONFIG_M547X_8X ++ .attach_adapter = &rv5c387_attach_adapter, ++#else + .probe = rs5c372_probe, + .remove = rs5c372_remove, ++#endif + }; + + static __init int rs5c372_init(void) -- cgit v1.2.3