mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-03 04:42:13 +00:00
ARM: shmobile: r8a7740: remove I2C errata handling
This is now done in the I2C driver. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Acked-by: Simon Horman <horms+renesas@verge.net.au> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
This commit is contained in:
parent
3ded3743a0
commit
b6eba5598d
1 changed files with 0 additions and 55 deletions
|
@ -13,7 +13,6 @@
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
#include <linux/delay.h>
|
|
||||||
#include <linux/dma-mapping.h>
|
#include <linux/dma-mapping.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
@ -690,56 +689,6 @@ void __init r8a7740_meram_workaround(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ICCR 0x0004
|
|
||||||
#define ICSTART 0x0070
|
|
||||||
|
|
||||||
#define i2c_read(reg, offset) ioread8(reg + offset)
|
|
||||||
#define i2c_write(reg, offset, data) iowrite8(data, reg + offset)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* r8a7740 chip has lasting errata on I2C I/O pad reset.
|
|
||||||
* this is work-around for it.
|
|
||||||
*/
|
|
||||||
static void r8a7740_i2c_workaround(struct platform_device *pdev)
|
|
||||||
{
|
|
||||||
struct resource *res;
|
|
||||||
void __iomem *reg;
|
|
||||||
|
|
||||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
||||||
if (unlikely(!res)) {
|
|
||||||
pr_err("r8a7740 i2c workaround fail (cannot find resource)\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
reg = ioremap(res->start, resource_size(res));
|
|
||||||
if (unlikely(!reg)) {
|
|
||||||
pr_err("r8a7740 i2c workaround fail (cannot map IO)\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
i2c_write(reg, ICCR, i2c_read(reg, ICCR) | 0x80);
|
|
||||||
i2c_read(reg, ICCR); /* dummy read */
|
|
||||||
|
|
||||||
i2c_write(reg, ICSTART, i2c_read(reg, ICSTART) | 0x10);
|
|
||||||
i2c_read(reg, ICSTART); /* dummy read */
|
|
||||||
|
|
||||||
udelay(10);
|
|
||||||
|
|
||||||
i2c_write(reg, ICCR, 0x01);
|
|
||||||
i2c_write(reg, ICSTART, 0x00);
|
|
||||||
|
|
||||||
udelay(10);
|
|
||||||
|
|
||||||
i2c_write(reg, ICCR, 0x10);
|
|
||||||
udelay(10);
|
|
||||||
i2c_write(reg, ICCR, 0x00);
|
|
||||||
udelay(10);
|
|
||||||
i2c_write(reg, ICCR, 0x10);
|
|
||||||
udelay(10);
|
|
||||||
|
|
||||||
iounmap(reg);
|
|
||||||
}
|
|
||||||
|
|
||||||
void __init r8a7740_add_standard_devices(void)
|
void __init r8a7740_add_standard_devices(void)
|
||||||
{
|
{
|
||||||
static struct pm_domain_device domain_devices[] __initdata = {
|
static struct pm_domain_device domain_devices[] __initdata = {
|
||||||
|
@ -766,10 +715,6 @@ void __init r8a7740_add_standard_devices(void)
|
||||||
{ "A3SP", &usb_dma_device },
|
{ "A3SP", &usb_dma_device },
|
||||||
};
|
};
|
||||||
|
|
||||||
/* I2C work-around */
|
|
||||||
r8a7740_i2c_workaround(&i2c0_device);
|
|
||||||
r8a7740_i2c_workaround(&i2c1_device);
|
|
||||||
|
|
||||||
r8a7740_init_pm_domains();
|
r8a7740_init_pm_domains();
|
||||||
|
|
||||||
/* add devices */
|
/* add devices */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue