.. | .. |
---|
16 | 16 | #include <linux/gpio/machine.h> |
---|
17 | 17 | #include <linux/i2c.h> |
---|
18 | 18 | #include <linux/platform_data/pcf857x.h> |
---|
19 | | -#include <linux/platform_data/at24.h> |
---|
20 | 19 | #include <linux/platform_data/gpio-davinci.h> |
---|
| 20 | +#include <linux/property.h> |
---|
21 | 21 | #include <linux/mtd/mtd.h> |
---|
22 | 22 | #include <linux/mtd/rawnand.h> |
---|
23 | 23 | #include <linux/mtd/partitions.h> |
---|
24 | 24 | #include <linux/mtd/physmap.h> |
---|
| 25 | +#include <linux/nvmem-provider.h> |
---|
25 | 26 | #include <linux/phy.h> |
---|
26 | 27 | #include <linux/clk.h> |
---|
27 | 28 | #include <linux/videodev2.h> |
---|
28 | 29 | #include <linux/v4l2-dv-timings.h> |
---|
29 | 30 | #include <linux/export.h> |
---|
30 | 31 | #include <linux/leds.h> |
---|
| 32 | +#include <linux/regulator/fixed.h> |
---|
| 33 | +#include <linux/regulator/machine.h> |
---|
31 | 34 | |
---|
32 | 35 | #include <media/i2c/tvp514x.h> |
---|
33 | 36 | |
---|
.. | .. |
---|
35 | 38 | #include <asm/mach/arch.h> |
---|
36 | 39 | |
---|
37 | 40 | #include <mach/common.h> |
---|
38 | | -#include <linux/platform_data/i2c-davinci.h> |
---|
39 | | -#include <mach/serial.h> |
---|
40 | 41 | #include <mach/mux.h> |
---|
| 42 | +#include <mach/serial.h> |
---|
| 43 | + |
---|
| 44 | +#include <linux/platform_data/i2c-davinci.h> |
---|
41 | 45 | #include <linux/platform_data/mtd-davinci.h> |
---|
42 | 46 | #include <linux/platform_data/mmc-davinci.h> |
---|
43 | 47 | #include <linux/platform_data/usb-davinci.h> |
---|
.. | .. |
---|
45 | 49 | #include <linux/platform_data/ti-aemif.h> |
---|
46 | 50 | |
---|
47 | 51 | #include "davinci.h" |
---|
| 52 | +#include "irqs.h" |
---|
48 | 53 | |
---|
49 | 54 | #define DM644X_EVM_PHY_ID "davinci_mdio-0:01" |
---|
50 | 55 | #define LXT971_PHY_ID (0x001378e2) |
---|
.. | .. |
---|
157 | 162 | .core_chipsel = 0, |
---|
158 | 163 | .parts = davinci_evm_nandflash_partition, |
---|
159 | 164 | .nr_parts = ARRAY_SIZE(davinci_evm_nandflash_partition), |
---|
160 | | - .ecc_mode = NAND_ECC_HW, |
---|
| 165 | + .engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST, |
---|
161 | 166 | .ecc_bits = 1, |
---|
162 | 167 | .bbt_options = NAND_BBT_USE_FLASH, |
---|
163 | 168 | .timing = &davinci_evm_nandflash_timing, |
---|
.. | .. |
---|
510 | 515 | * - ... newer boards may have more |
---|
511 | 516 | */ |
---|
512 | 517 | |
---|
513 | | -static struct at24_platform_data eeprom_info = { |
---|
514 | | - .byte_len = (256*1024) / 8, |
---|
515 | | - .page_size = 64, |
---|
516 | | - .flags = AT24_FLAG_ADDR16, |
---|
517 | | - .setup = davinci_get_mac_addr, |
---|
518 | | - .context = (void *)0x7f00, |
---|
| 518 | +static struct nvmem_cell_info dm644evm_nvmem_cells[] = { |
---|
| 519 | + { |
---|
| 520 | + .name = "macaddr", |
---|
| 521 | + .offset = 0x7f00, |
---|
| 522 | + .bytes = ETH_ALEN, |
---|
| 523 | + } |
---|
| 524 | +}; |
---|
| 525 | + |
---|
| 526 | +static struct nvmem_cell_table dm644evm_nvmem_cell_table = { |
---|
| 527 | + .nvmem_name = "1-00500", |
---|
| 528 | + .cells = dm644evm_nvmem_cells, |
---|
| 529 | + .ncells = ARRAY_SIZE(dm644evm_nvmem_cells), |
---|
| 530 | +}; |
---|
| 531 | + |
---|
| 532 | +static struct nvmem_cell_lookup dm644evm_nvmem_cell_lookup = { |
---|
| 533 | + .nvmem_name = "1-00500", |
---|
| 534 | + .cell_name = "macaddr", |
---|
| 535 | + .dev_id = "davinci_emac.1", |
---|
| 536 | + .con_id = "mac-address", |
---|
| 537 | +}; |
---|
| 538 | + |
---|
| 539 | +static const struct property_entry eeprom_properties[] = { |
---|
| 540 | + PROPERTY_ENTRY_U32("pagesize", 64), |
---|
| 541 | + { } |
---|
519 | 542 | }; |
---|
520 | 543 | |
---|
521 | 544 | /* |
---|
.. | .. |
---|
525 | 548 | */ |
---|
526 | 549 | static struct i2c_client *dm6446evm_msp; |
---|
527 | 550 | |
---|
528 | | -static int dm6446evm_msp_probe(struct i2c_client *client, |
---|
529 | | - const struct i2c_device_id *id) |
---|
| 551 | +static int dm6446evm_msp_probe(struct i2c_client *client) |
---|
530 | 552 | { |
---|
531 | 553 | dm6446evm_msp = client; |
---|
532 | 554 | return 0; |
---|
.. | .. |
---|
546 | 568 | static struct i2c_driver dm6446evm_msp_driver = { |
---|
547 | 569 | .driver.name = "dm6446evm_msp", |
---|
548 | 570 | .id_table = dm6446evm_msp_ids, |
---|
549 | | - .probe = dm6446evm_msp_probe, |
---|
| 571 | + .probe_new = dm6446evm_msp_probe, |
---|
550 | 572 | .remove = dm6446evm_msp_remove, |
---|
551 | 573 | }; |
---|
552 | 574 | |
---|
.. | .. |
---|
625 | 647 | }, |
---|
626 | 648 | { |
---|
627 | 649 | I2C_BOARD_INFO("24c256", 0x50), |
---|
628 | | - .platform_data = &eeprom_info, |
---|
| 650 | + .properties = eeprom_properties, |
---|
629 | 651 | }, |
---|
630 | 652 | { |
---|
631 | 653 | I2C_BOARD_INFO("tlv320aic33", 0x1b), |
---|
.. | .. |
---|
638 | 660 | static struct gpiod_lookup_table i2c_recovery_gpiod_table = { |
---|
639 | 661 | .dev_id = "i2c_davinci.1", |
---|
640 | 662 | .table = { |
---|
641 | | - GPIO_LOOKUP("davinci_gpio.0", DM644X_I2C_SDA_PIN, "sda", |
---|
| 663 | + GPIO_LOOKUP("davinci_gpio", DM644X_I2C_SDA_PIN, "sda", |
---|
642 | 664 | GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN), |
---|
643 | | - GPIO_LOOKUP("davinci_gpio.0", DM644X_I2C_SCL_PIN, "scl", |
---|
| 665 | + GPIO_LOOKUP("davinci_gpio", DM644X_I2C_SCL_PIN, "scl", |
---|
644 | 666 | GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN), |
---|
| 667 | + { } |
---|
645 | 668 | }, |
---|
646 | 669 | }; |
---|
647 | 670 | |
---|
.. | .. |
---|
662 | 685 | i2c_register_board_info(1, i2c_info, ARRAY_SIZE(i2c_info)); |
---|
663 | 686 | } |
---|
664 | 687 | #endif |
---|
| 688 | + |
---|
| 689 | +/* Fixed regulator support */ |
---|
| 690 | +static struct regulator_consumer_supply fixed_supplies_3_3v[] = { |
---|
| 691 | + /* Baseboard 3.3V: 5V -> TPS54310PWP -> 3.3V */ |
---|
| 692 | + REGULATOR_SUPPLY("AVDD", "1-001b"), |
---|
| 693 | + REGULATOR_SUPPLY("DRVDD", "1-001b"), |
---|
| 694 | +}; |
---|
| 695 | + |
---|
| 696 | +static struct regulator_consumer_supply fixed_supplies_1_8v[] = { |
---|
| 697 | + /* Baseboard 1.8V: 5V -> TPS54310PWP -> 1.8V */ |
---|
| 698 | + REGULATOR_SUPPLY("IOVDD", "1-001b"), |
---|
| 699 | + REGULATOR_SUPPLY("DVDD", "1-001b"), |
---|
| 700 | +}; |
---|
665 | 701 | |
---|
666 | 702 | #define VENC_STD_ALL (V4L2_STD_NTSC | V4L2_STD_PAL) |
---|
667 | 703 | |
---|
.. | .. |
---|
801 | 837 | |
---|
802 | 838 | #define HAS_NAND IS_ENABLED(CONFIG_MTD_NAND_DAVINCI) |
---|
803 | 839 | |
---|
| 840 | +#define GPIO_nVBUS_DRV 160 |
---|
| 841 | + |
---|
| 842 | +static struct gpiod_lookup_table dm644evm_usb_gpio_table = { |
---|
| 843 | + .dev_id = "musb-davinci", |
---|
| 844 | + .table = { |
---|
| 845 | + GPIO_LOOKUP("davinci_gpio", GPIO_nVBUS_DRV, NULL, |
---|
| 846 | + GPIO_ACTIVE_HIGH), |
---|
| 847 | + { } |
---|
| 848 | + }, |
---|
| 849 | +}; |
---|
| 850 | + |
---|
804 | 851 | static __init void davinci_evm_init(void) |
---|
805 | 852 | { |
---|
806 | 853 | int ret; |
---|
.. | .. |
---|
808 | 855 | struct davinci_soc_info *soc_info = &davinci_soc_info; |
---|
809 | 856 | |
---|
810 | 857 | dm644x_register_clocks(); |
---|
| 858 | + |
---|
| 859 | + regulator_register_always_on(0, "fixed-dummy", fixed_supplies_1_8v, |
---|
| 860 | + ARRAY_SIZE(fixed_supplies_1_8v), 1800000); |
---|
| 861 | + regulator_register_always_on(1, "fixed-dummy", fixed_supplies_3_3v, |
---|
| 862 | + ARRAY_SIZE(fixed_supplies_3_3v), 3300000); |
---|
811 | 863 | |
---|
812 | 864 | dm644x_init_devices(); |
---|
813 | 865 | |
---|
.. | .. |
---|
842 | 894 | platform_add_devices(davinci_evm_devices, |
---|
843 | 895 | ARRAY_SIZE(davinci_evm_devices)); |
---|
844 | 896 | #ifdef CONFIG_I2C |
---|
| 897 | + nvmem_add_cell_table(&dm644evm_nvmem_cell_table); |
---|
| 898 | + nvmem_add_cell_lookups(&dm644evm_nvmem_cell_lookup, 1); |
---|
845 | 899 | evm_init_i2c(); |
---|
846 | 900 | davinci_setup_mmc(0, &dm6446evm_mmc_config); |
---|
847 | 901 | #endif |
---|
.. | .. |
---|
851 | 905 | dm644x_init_asp(); |
---|
852 | 906 | |
---|
853 | 907 | /* irlml6401 switches over 1A, in under 8 msec */ |
---|
| 908 | + gpiod_add_lookup_table(&dm644evm_usb_gpio_table); |
---|
854 | 909 | davinci_setup_usb(1000, 8); |
---|
855 | 910 | |
---|
856 | 911 | if (IS_BUILTIN(CONFIG_PHYLIB)) { |
---|
.. | .. |
---|
865 | 920 | /* Maintainer: MontaVista Software <source@mvista.com> */ |
---|
866 | 921 | .atag_offset = 0x100, |
---|
867 | 922 | .map_io = davinci_evm_map_io, |
---|
868 | | - .init_irq = davinci_irq_init, |
---|
| 923 | + .init_irq = dm644x_init_irq, |
---|
869 | 924 | .init_time = dm644x_init_time, |
---|
870 | 925 | .init_machine = davinci_evm_init, |
---|
871 | 926 | .init_late = davinci_init_late, |
---|